summaryrefslogtreecommitdiffstats
path: root/third_party/msgpack
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /third_party/msgpack
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/msgpack')
-rw-r--r--third_party/msgpack/LICENSE_1_0.txt23
-rw-r--r--third_party/msgpack/include/msgpack.h24
-rw-r--r--third_party/msgpack/include/msgpack.hpp22
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/adaptor_base.hpp19
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/adaptor_base_decl.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/array_ref.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/array_ref_decl.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/bool.hpp15
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/boost/fusion.hpp15
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/boost/msgpack_variant.hpp18
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/boost/msgpack_variant_decl.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/boost/optional.hpp15
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/boost/string_ref.hpp15
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/boost/string_view.hpp15
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/carray.hpp15
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/char_ptr.hpp15
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/check_container_size.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/check_container_size_decl.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/cpp11/array.hpp16
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/cpp11/array_char.hpp16
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/cpp11/array_unsigned_char.hpp16
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/cpp11/chrono.hpp16
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/cpp11/forward_list.hpp16
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/cpp11/reference_wrapper.hpp16
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/cpp11/shared_ptr.hpp16
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/cpp11/tuple.hpp16
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/cpp11/unique_ptr.hpp16
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/cpp11/unordered_map.hpp16
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/cpp11/unordered_set.hpp16
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/cpp17/byte.hpp16
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/cpp17/carray_byte.hpp16
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/cpp17/optional.hpp16
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/cpp17/string_view.hpp16
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/cpp17/vector_byte.hpp16
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/define.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/define_decl.hpp144
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/deque.hpp15
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/ext.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/ext_decl.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/fixint.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/fixint_decl.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/float.hpp15
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/int.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/int_decl.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/list.hpp15
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/map.hpp18
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/map_decl.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/msgpack_tuple.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/msgpack_tuple_decl.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/nil.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/nil_decl.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/pair.hpp15
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/raw.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/raw_decl.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/set.hpp15
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/size_equal_only.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/size_equal_only_decl.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/string.hpp15
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/tr1/unordered_map.hpp171
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/tr1/unordered_set.hpp165
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/v4raw.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/v4raw_decl.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/vector.hpp15
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/vector_bool.hpp15
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/vector_char.hpp15
-rw-r--r--third_party/msgpack/include/msgpack/adaptor/vector_unsigned_char.hpp15
-rw-r--r--third_party/msgpack/include/msgpack/cpp_config.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/cpp_config_decl.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/create_object_visitor.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/create_object_visitor_decl.hpp16
-rw-r--r--third_party/msgpack/include/msgpack/fbuffer.h38
-rw-r--r--third_party/msgpack/include/msgpack/fbuffer.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/fbuffer_decl.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/gcc_atomic.h25
-rw-r--r--third_party/msgpack/include/msgpack/gcc_atomic.hpp31
-rw-r--r--third_party/msgpack/include/msgpack/iterator.hpp18
-rw-r--r--third_party/msgpack/include/msgpack/iterator_decl.hpp18
-rw-r--r--third_party/msgpack/include/msgpack/meta.hpp18
-rw-r--r--third_party/msgpack/include/msgpack/meta_decl.hpp18
-rw-r--r--third_party/msgpack/include/msgpack/null_visitor.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/null_visitor_decl.hpp16
-rw-r--r--third_party/msgpack/include/msgpack/object.h116
-rw-r--r--third_party/msgpack/include/msgpack/object.hpp18
-rw-r--r--third_party/msgpack/include/msgpack/object_decl.hpp18
-rw-r--r--third_party/msgpack/include/msgpack/object_fwd.hpp20
-rw-r--r--third_party/msgpack/include/msgpack/object_fwd_decl.hpp18
-rw-r--r--third_party/msgpack/include/msgpack/pack.h151
-rw-r--r--third_party/msgpack/include/msgpack/pack.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/pack_decl.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/pack_define.h18
-rw-r--r--third_party/msgpack/include/msgpack/pack_template.h937
-rw-r--r--third_party/msgpack/include/msgpack/parse.hpp18
-rw-r--r--third_party/msgpack/include/msgpack/parse_decl.hpp16
-rw-r--r--third_party/msgpack/include/msgpack/parse_return.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/predef.h24
-rw-r--r--third_party/msgpack/include/msgpack/predef/architecture.h32
-rw-r--r--third_party/msgpack/include/msgpack/predef/architecture/alpha.h59
-rw-r--r--third_party/msgpack/include/msgpack/predef/architecture/arm.h70
-rw-r--r--third_party/msgpack/include/msgpack/predef/architecture/blackfin.h46
-rw-r--r--third_party/msgpack/include/msgpack/predef/architecture/convex.h65
-rw-r--r--third_party/msgpack/include/msgpack/predef/architecture/ia64.h49
-rw-r--r--third_party/msgpack/include/msgpack/predef/architecture/m68k.h82
-rw-r--r--third_party/msgpack/include/msgpack/predef/architecture/mips.h73
-rw-r--r--third_party/msgpack/include/msgpack/predef/architecture/parisc.h64
-rw-r--r--third_party/msgpack/include/msgpack/predef/architecture/ppc.h72
-rw-r--r--third_party/msgpack/include/msgpack/predef/architecture/pyramid.h42
-rw-r--r--third_party/msgpack/include/msgpack/predef/architecture/rs6k.h56
-rw-r--r--third_party/msgpack/include/msgpack/predef/architecture/sparc.h54
-rw-r--r--third_party/msgpack/include/msgpack/predef/architecture/superh.h67
-rw-r--r--third_party/msgpack/include/msgpack/predef/architecture/sys370.h43
-rw-r--r--third_party/msgpack/include/msgpack/predef/architecture/sys390.h43
-rw-r--r--third_party/msgpack/include/msgpack/predef/architecture/x86.h38
-rw-r--r--third_party/msgpack/include/msgpack/predef/architecture/x86/32.h87
-rw-r--r--third_party/msgpack/include/msgpack/predef/architecture/x86/64.h50
-rw-r--r--third_party/msgpack/include/msgpack/predef/architecture/z.h42
-rw-r--r--third_party/msgpack/include/msgpack/predef/compiler.h43
-rw-r--r--third_party/msgpack/include/msgpack/predef/compiler/borland.h63
-rw-r--r--third_party/msgpack/include/msgpack/predef/compiler/clang.h56
-rw-r--r--third_party/msgpack/include/msgpack/predef/compiler/comeau.h61
-rw-r--r--third_party/msgpack/include/msgpack/predef/compiler/compaq.h66
-rw-r--r--third_party/msgpack/include/msgpack/predef/compiler/diab.h56
-rw-r--r--third_party/msgpack/include/msgpack/predef/compiler/digitalmars.h56
-rw-r--r--third_party/msgpack/include/msgpack/predef/compiler/dignus.h56
-rw-r--r--third_party/msgpack/include/msgpack/predef/compiler/edg.h56
-rw-r--r--third_party/msgpack/include/msgpack/predef/compiler/ekopath.h57
-rw-r--r--third_party/msgpack/include/msgpack/predef/compiler/gcc.h68
-rw-r--r--third_party/msgpack/include/msgpack/predef/compiler/gcc_xml.h53
-rw-r--r--third_party/msgpack/include/msgpack/predef/compiler/greenhills.h66
-rw-r--r--third_party/msgpack/include/msgpack/predef/compiler/hp_acc.h61
-rw-r--r--third_party/msgpack/include/msgpack/predef/compiler/iar.h56
-rw-r--r--third_party/msgpack/include/msgpack/predef/compiler/ibm.h72
-rw-r--r--third_party/msgpack/include/msgpack/predef/compiler/intel.h65
-rw-r--r--third_party/msgpack/include/msgpack/predef/compiler/kai.h56
-rw-r--r--third_party/msgpack/include/msgpack/predef/compiler/llvm.h57
-rw-r--r--third_party/msgpack/include/msgpack/predef/compiler/metaware.h53
-rw-r--r--third_party/msgpack/include/msgpack/predef/compiler/metrowerks.h77
-rw-r--r--third_party/msgpack/include/msgpack/predef/compiler/microtec.h53
-rw-r--r--third_party/msgpack/include/msgpack/predef/compiler/mpw.h63
-rw-r--r--third_party/msgpack/include/msgpack/predef/compiler/palm.h56
-rw-r--r--third_party/msgpack/include/msgpack/predef/compiler/pgi.h60
-rw-r--r--third_party/msgpack/include/msgpack/predef/compiler/sgi_mipspro.h66
-rw-r--r--third_party/msgpack/include/msgpack/predef/compiler/sunpro.h76
-rw-r--r--third_party/msgpack/include/msgpack/predef/compiler/tendra.h53
-rw-r--r--third_party/msgpack/include/msgpack/predef/compiler/visualc.h91
-rw-r--r--third_party/msgpack/include/msgpack/predef/compiler/watcom.h56
-rw-r--r--third_party/msgpack/include/msgpack/predef/detail/_cassert.h17
-rw-r--r--third_party/msgpack/include/msgpack/predef/detail/_exception.h15
-rw-r--r--third_party/msgpack/include/msgpack/predef/detail/comp_detected.h10
-rw-r--r--third_party/msgpack/include/msgpack/predef/detail/endian_compat.h26
-rw-r--r--third_party/msgpack/include/msgpack/predef/detail/os_detected.h10
-rw-r--r--third_party/msgpack/include/msgpack/predef/detail/platform_detected.h10
-rw-r--r--third_party/msgpack/include/msgpack/predef/detail/test.h17
-rw-r--r--third_party/msgpack/include/msgpack/predef/detail/test_def.h71
-rw-r--r--third_party/msgpack/include/msgpack/predef/hardware.h16
-rw-r--r--third_party/msgpack/include/msgpack/predef/hardware/simd.h119
-rw-r--r--third_party/msgpack/include/msgpack/predef/hardware/simd/arm.h57
-rw-r--r--third_party/msgpack/include/msgpack/predef/hardware/simd/arm/versions.h32
-rw-r--r--third_party/msgpack/include/msgpack/predef/hardware/simd/ppc.h69
-rw-r--r--third_party/msgpack/include/msgpack/predef/hardware/simd/ppc/versions.h51
-rw-r--r--third_party/msgpack/include/msgpack/predef/hardware/simd/x86.h123
-rw-r--r--third_party/msgpack/include/msgpack/predef/hardware/simd/x86/versions.h129
-rw-r--r--third_party/msgpack/include/msgpack/predef/hardware/simd/x86_amd.h87
-rw-r--r--third_party/msgpack/include/msgpack/predef/hardware/simd/x86_amd/versions.h51
-rw-r--r--third_party/msgpack/include/msgpack/predef/language.h17
-rw-r--r--third_party/msgpack/include/msgpack/predef/language/objc.h42
-rw-r--r--third_party/msgpack/include/msgpack/predef/language/stdc.h53
-rw-r--r--third_party/msgpack/include/msgpack/predef/language/stdcpp.h121
-rw-r--r--third_party/msgpack/include/msgpack/predef/library.h16
-rw-r--r--third_party/msgpack/include/msgpack/predef/library/c.h20
-rw-r--r--third_party/msgpack/include/msgpack/predef/library/c/_prefix.h13
-rw-r--r--third_party/msgpack/include/msgpack/predef/library/c/gnu.h61
-rw-r--r--third_party/msgpack/include/msgpack/predef/library/c/uc.h47
-rw-r--r--third_party/msgpack/include/msgpack/predef/library/c/vms.h47
-rw-r--r--third_party/msgpack/include/msgpack/predef/library/c/zos.h56
-rw-r--r--third_party/msgpack/include/msgpack/predef/library/std.h25
-rw-r--r--third_party/msgpack/include/msgpack/predef/library/std/_prefix.h23
-rw-r--r--third_party/msgpack/include/msgpack/predef/library/std/cxx.h46
-rw-r--r--third_party/msgpack/include/msgpack/predef/library/std/dinkumware.h52
-rw-r--r--third_party/msgpack/include/msgpack/predef/library/std/libcomo.h47
-rw-r--r--third_party/msgpack/include/msgpack/predef/library/std/modena.h45
-rw-r--r--third_party/msgpack/include/msgpack/predef/library/std/msl.h53
-rw-r--r--third_party/msgpack/include/msgpack/predef/library/std/roguewave.h56
-rw-r--r--third_party/msgpack/include/msgpack/predef/library/std/sgi.h51
-rw-r--r--third_party/msgpack/include/msgpack/predef/library/std/stdcpp3.h53
-rw-r--r--third_party/msgpack/include/msgpack/predef/library/std/stlport.h59
-rw-r--r--third_party/msgpack/include/msgpack/predef/library/std/vacpp.h44
-rw-r--r--third_party/msgpack/include/msgpack/predef/make.h89
-rw-r--r--third_party/msgpack/include/msgpack/predef/os.h33
-rw-r--r--third_party/msgpack/include/msgpack/predef/os/aix.h66
-rw-r--r--third_party/msgpack/include/msgpack/predef/os/amigaos.h46
-rw-r--r--third_party/msgpack/include/msgpack/predef/os/android.h45
-rw-r--r--third_party/msgpack/include/msgpack/predef/os/beos.h45
-rw-r--r--third_party/msgpack/include/msgpack/predef/os/bsd.h103
-rw-r--r--third_party/msgpack/include/msgpack/predef/os/bsd/bsdi.h48
-rw-r--r--third_party/msgpack/include/msgpack/predef/os/bsd/dragonfly.h50
-rw-r--r--third_party/msgpack/include/msgpack/predef/os/bsd/free.h60
-rw-r--r--third_party/msgpack/include/msgpack/predef/os/bsd/net.h84
-rw-r--r--third_party/msgpack/include/msgpack/predef/os/bsd/open.h171
-rw-r--r--third_party/msgpack/include/msgpack/predef/os/cygwin.h45
-rw-r--r--third_party/msgpack/include/msgpack/predef/os/haiku.h46
-rw-r--r--third_party/msgpack/include/msgpack/predef/os/hpux.h47
-rw-r--r--third_party/msgpack/include/msgpack/predef/os/ios.h51
-rw-r--r--third_party/msgpack/include/msgpack/predef/os/irix.h46
-rw-r--r--third_party/msgpack/include/msgpack/predef/os/linux.h46
-rw-r--r--third_party/msgpack/include/msgpack/predef/os/macos.h65
-rw-r--r--third_party/msgpack/include/msgpack/predef/os/os400.h45
-rw-r--r--third_party/msgpack/include/msgpack/predef/os/qnxnto.h59
-rw-r--r--third_party/msgpack/include/msgpack/predef/os/solaris.h46
-rw-r--r--third_party/msgpack/include/msgpack/predef/os/unix.h76
-rw-r--r--third_party/msgpack/include/msgpack/predef/os/vms.h52
-rw-r--r--third_party/msgpack/include/msgpack/predef/os/windows.h51
-rw-r--r--third_party/msgpack/include/msgpack/predef/other.h16
-rw-r--r--third_party/msgpack/include/msgpack/predef/other/endian.h204
-rw-r--r--third_party/msgpack/include/msgpack/predef/platform.h21
-rw-r--r--third_party/msgpack/include/msgpack/predef/platform/mingw.h69
-rw-r--r--third_party/msgpack/include/msgpack/predef/platform/windows_desktop.h45
-rw-r--r--third_party/msgpack/include/msgpack/predef/platform/windows_phone.h43
-rw-r--r--third_party/msgpack/include/msgpack/predef/platform/windows_runtime.h45
-rw-r--r--third_party/msgpack/include/msgpack/predef/platform/windows_store.h43
-rw-r--r--third_party/msgpack/include/msgpack/predef/version.h15
-rw-r--r--third_party/msgpack/include/msgpack/predef/version_number.h53
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor.hpp19
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/arithmetic.hpp25
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/arithmetic/add.hpp51
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/arithmetic/dec.hpp289
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/arithmetic/detail/div_base.hpp61
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/arithmetic/div.hpp39
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/arithmetic/inc.hpp288
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/arithmetic/mod.hpp39
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/arithmetic/mul.hpp53
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/arithmetic/sub.hpp50
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/array.hpp32
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/array/data.hpp28
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/array/detail/get_data.hpp55
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/array/elem.hpp29
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/array/enum.hpp33
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/array/insert.hpp55
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/array/pop_back.hpp37
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/array/pop_front.hpp38
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/array/push_back.hpp35
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/array/push_front.hpp35
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/array/remove.hpp54
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/array/replace.hpp49
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/array/reverse.hpp29
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/array/size.hpp28
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/array/to_list.hpp47
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/array/to_seq.hpp46
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/array/to_tuple.hpp33
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/assert_msg.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/cat.hpp35
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/comma.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/comma_if.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/comparison.hpp24
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/comparison/equal.hpp34
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/comparison/greater.hpp38
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/comparison/greater_equal.hpp38
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/comparison/less.hpp46
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/comparison/less_equal.hpp39
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/comparison/not_equal.hpp814
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/config/config.hpp104
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/config/limits.hpp30
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/control.hpp22
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/control/deduce_d.hpp22
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/control/detail/dmc/while.hpp536
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/control/detail/edg/while.hpp534
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/control/detail/msvc/while.hpp277
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/control/detail/while.hpp536
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/control/expr_if.hpp30
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/control/expr_iif.hpp31
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/control/if.hpp30
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/control/iif.hpp34
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/control/while.hpp312
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/debug.hpp18
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/debug/assert.hpp44
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/debug/error.hpp33
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/debug/line.hpp35
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/dec.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/detail/auto_rec.hpp293
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/detail/check.hpp48
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/detail/dmc/auto_rec.hpp286
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/detail/is_binary.hpp30
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/detail/is_nullary.hpp30
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/detail/is_unary.hpp30
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/detail/null.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/detail/split.hpp35
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/empty.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/enum.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/enum_params.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/enum_params_with_a_default.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/enum_params_with_defaults.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/enum_shifted.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/enum_shifted_params.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/expand.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/expr_if.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/facilities.hpp23
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/facilities/apply.hpp34
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/facilities/detail/is_empty.hpp55
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/facilities/empty.hpp23
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/facilities/expand.hpp28
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/facilities/identity.hpp27
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/facilities/intercept.hpp277
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/facilities/is_1.hpp23
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/facilities/is_empty.hpp56
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/facilities/is_empty_or_1.hpp31
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/facilities/is_empty_variadic.hpp57
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/facilities/overload.hpp25
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/for.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/identity.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/if.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/inc.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/iterate.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/iteration.hpp19
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/lower1.hpp99
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/lower2.hpp99
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/lower3.hpp99
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/lower4.hpp99
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/lower5.hpp99
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/upper1.hpp99
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/upper2.hpp99
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/upper3.hpp99
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/upper4.hpp99
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/upper5.hpp99
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/iteration/detail/finish.hpp99
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/forward1.hpp1342
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/forward2.hpp1338
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/forward3.hpp1338
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/forward4.hpp1338
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/forward5.hpp1338
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/reverse1.hpp1296
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/reverse2.hpp1296
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/reverse3.hpp1296
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/reverse4.hpp1296
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/reverse5.hpp1296
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/iteration/detail/local.hpp812
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/iteration/detail/rlocal.hpp782
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/iteration/detail/self.hpp21
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/iteration/detail/start.hpp99
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/iteration/iterate.hpp82
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/iteration/local.hpp26
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/iteration/self.hpp19
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/library.hpp37
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/limits.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/list.hpp37
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/list/adt.hpp73
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/list/append.hpp40
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/list/at.hpp39
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/list/cat.hpp42
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/list/detail/dmc/fold_left.hpp279
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/list/detail/edg/fold_left.hpp536
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/list/detail/edg/fold_right.hpp794
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/list/detail/fold_left.hpp279
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/list/detail/fold_right.hpp277
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/list/enum.hpp41
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/list/filter.hpp54
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/list/first_n.hpp58
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/list/fold_left.hpp303
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/list/fold_right.hpp40
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/list/for_each.hpp49
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/list/for_each_i.hpp65
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/list/for_each_product.hpp141
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/list/rest_n.hpp55
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/list/reverse.hpp40
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/list/size.hpp58
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/list/to_array.hpp155
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/list/to_seq.hpp32
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/list/to_tuple.hpp61
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/list/transform.hpp49
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/logical.hpp29
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/logical/and.hpp30
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/logical/bitand.hpp38
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/logical/bitnor.hpp38
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/logical/bitor.hpp38
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/logical/bitxor.hpp38
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/logical/bool.hpp288
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/logical/compl.hpp36
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/logical/nor.hpp30
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/logical/not.hpp30
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/logical/or.hpp30
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/logical/xor.hpp30
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/max.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/min.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/punctuation.hpp22
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/punctuation/comma.hpp21
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/punctuation/comma_if.hpp31
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/punctuation/detail/is_begin_parens.hpp48
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/punctuation/is_begin_parens.hpp51
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/punctuation/paren.hpp23
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/punctuation/paren_if.hpp38
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/punctuation/remove_parens.hpp39
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/repeat.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/repeat_2nd.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/repeat_3rd.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/repeat_from_to.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/repeat_from_to_2nd.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/repeat_from_to_3rd.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/repetition.hpp32
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/repetition/deduce_r.hpp22
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/repetition/deduce_z.hpp22
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/repetition/detail/dmc/for.hpp536
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/repetition/detail/edg/for.hpp534
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/repetition/detail/for.hpp536
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/repetition/detail/msvc/for.hpp277
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/repetition/enum.hpp66
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/repetition/enum_binary_params.hpp54
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/repetition/enum_params.hpp41
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/repetition/enum_params_with_a_default.hpp25
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/repetition/enum_params_with_defaults.hpp24
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/repetition/enum_shifted.hpp68
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/repetition/enum_shifted_binary_params.hpp51
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/repetition/enum_shifted_params.hpp44
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/repetition/enum_trailing.hpp63
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/repetition/enum_trailing_binary_params.hpp53
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/repetition/enum_trailing_params.hpp38
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/repetition/for.hpp324
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/repetition/repeat.hpp825
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/repetition/repeat_from_to.hpp87
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/selection.hpp18
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/selection/max.hpp39
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/selection/min.hpp39
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/seq.hpp44
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/seq/cat.hpp49
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/seq/detail/binary_transform.hpp48
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/seq/detail/is_empty.hpp49
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/seq/detail/split.hpp284
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/seq/elem.hpp304
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/seq/enum.hpp288
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/seq/filter.hpp54
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/seq/first_n.hpp30
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/seq/fold_left.hpp1070
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/seq/fold_right.hpp288
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/seq/for_each.hpp107
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/seq/for_each_i.hpp109
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/seq/for_each_product.hpp126
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/seq/insert.hpp28
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/seq/pop_back.hpp29
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/seq/pop_front.hpp27
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/seq/push_back.hpp19
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/seq/push_front.hpp19
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/seq/remove.hpp29
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/seq/replace.hpp45
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/seq/rest_n.hpp46
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/seq/reverse.hpp39
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/seq/seq.hpp44
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/seq/size.hpp548
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/seq/subseq.hpp28
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/seq/to_array.hpp28
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/seq/to_list.hpp29
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/seq/to_tuple.hpp27
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/seq/transform.hpp48
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/seq/variadic_seq_to_seq.hpp28
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/slot.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/slot/counter.hpp25
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/slot/detail/counter.hpp269
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/slot/detail/def.hpp49
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/slot/detail/shared.hpp247
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/slot/detail/slot1.hpp267
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/slot/detail/slot2.hpp267
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/slot/detail/slot3.hpp267
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/slot/detail/slot4.hpp267
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/slot/detail/slot5.hpp267
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/slot/slot.hpp32
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/stringize.hpp33
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/tuple.hpp35
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/tuple/detail/is_single_return.hpp28
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/tuple/eat.hpp115
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/tuple/elem.hpp201
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/tuple/enum.hpp22
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/tuple/insert.hpp37
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/tuple/pop_back.hpp64
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/tuple/pop_front.hpp65
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/tuple/push_back.hpp31
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/tuple/push_front.hpp32
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/tuple/rem.hpp149
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/tuple/remove.hpp64
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/tuple/replace.hpp37
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/tuple/reverse.hpp117
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/tuple/size.hpp28
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/tuple/to_array.hpp39
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/tuple/to_list.hpp118
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/tuple/to_seq.hpp119
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/variadic.hpp23
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/variadic/detail/is_single_return.hpp28
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/variadic/elem.hpp94
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/variadic/size.hpp30
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/variadic/to_array.hpp32
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/variadic/to_list.hpp25
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/variadic/to_seq.hpp25
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/variadic/to_tuple.hpp24
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/while.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/preprocessor/wstringize.hpp29
-rw-r--r--third_party/msgpack/include/msgpack/sbuffer.h110
-rw-r--r--third_party/msgpack/include/msgpack/sbuffer.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/sbuffer_decl.hpp18
-rw-r--r--third_party/msgpack/include/msgpack/sysdep.h201
-rw-r--r--third_party/msgpack/include/msgpack/timestamp.h54
-rw-r--r--third_party/msgpack/include/msgpack/type.hpp68
-rw-r--r--third_party/msgpack/include/msgpack/unpack.h281
-rw-r--r--third_party/msgpack/include/msgpack/unpack.hpp19
-rw-r--r--third_party/msgpack/include/msgpack/unpack_decl.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/unpack_define.h89
-rw-r--r--third_party/msgpack/include/msgpack/unpack_exception.hpp15
-rw-r--r--third_party/msgpack/include/msgpack/unpack_template.h466
-rw-r--r--third_party/msgpack/include/msgpack/util.h15
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/adaptor_base.hpp116
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/adaptor_base_decl.hpp86
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/array_ref.hpp305
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/array_ref_decl.hpp55
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/bool.hpp66
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/boost/fusion.hpp203
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/boost/msgpack_variant.hpp443
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/boost/msgpack_variant_decl.hpp62
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/boost/optional.hpp96
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/boost/string_ref.hpp87
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/boost/string_view.hpp87
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/carray.hpp253
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/char_ptr.hpp92
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/check_container_size.hpp67
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/check_container_size_decl.hpp44
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/cpp11/array.hpp138
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/cpp11/array_char.hpp97
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/cpp11/array_unsigned_char.hpp97
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/cpp11/chrono.hpp215
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/cpp11/forward_list.hpp94
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/cpp11/reference_wrapper.hpp68
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/cpp11/shared_ptr.hpp82
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/cpp11/tuple.hpp175
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/cpp11/unique_ptr.hpp82
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/cpp11/unordered_map.hpp182
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/cpp11/unordered_set.hpp172
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/cpp17/byte.hpp74
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/cpp17/carray_byte.hpp109
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/cpp17/optional.hpp90
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/cpp17/string_view.hpp86
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/cpp17/vector_byte.hpp119
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/define.hpp21
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/define_decl.hpp23
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/deque.hpp108
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp03_define_array.hpp4481
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp03_define_array_decl.hpp135
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp03_define_map.hpp2753
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp03_define_map_decl.hpp135
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp03_msgpack_tuple.hpp14425
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp03_msgpack_tuple_decl.hpp317
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp11_convert_helper.hpp45
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp11_define_array.hpp128
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp11_define_array_decl.hpp39
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp11_define_map.hpp110
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp11_define_map_decl.hpp37
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp11_msgpack_tuple.hpp220
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp11_msgpack_tuple_decl.hpp120
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/ext.hpp236
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/ext_decl.hpp38
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/fixint.hpp299
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/fixint_decl.hpp46
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/float.hpp123
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/int.hpp448
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/int_decl.hpp49
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/list.hpp106
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/map.hpp314
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/map_decl.hpp36
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/msgpack_tuple.hpp21
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/msgpack_tuple_decl.hpp21
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/nil.hpp76
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/nil_decl.hpp44
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/pair.hpp83
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/raw.hpp106
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/raw_decl.hpp36
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/set.hpp188
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/size_equal_only.hpp118
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/size_equal_only_decl.hpp52
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/string.hpp87
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/tr1/unordered_map.hpp171
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/tr1/unordered_set.hpp165
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/v4raw.hpp105
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/v4raw_decl.hpp34
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/vector.hpp121
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/vector_bool.hpp90
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/vector_char.hpp114
-rw-r--r--third_party/msgpack/include/msgpack/v1/adaptor/vector_unsigned_char.hpp114
-rw-r--r--third_party/msgpack/include/msgpack/v1/cpp_config.hpp139
-rw-r--r--third_party/msgpack/include/msgpack/v1/cpp_config_decl.hpp137
-rw-r--r--third_party/msgpack/include/msgpack/v1/detail/cpp03_zone.hpp664
-rw-r--r--third_party/msgpack/include/msgpack/v1/detail/cpp03_zone_decl.hpp54
-rw-r--r--third_party/msgpack/include/msgpack/v1/detail/cpp11_zone.hpp366
-rw-r--r--third_party/msgpack/include/msgpack/v1/detail/cpp11_zone_decl.hpp55
-rw-r--r--third_party/msgpack/include/msgpack/v1/fbuffer.hpp60
-rw-r--r--third_party/msgpack/include/msgpack/v1/fbuffer_decl.hpp32
-rw-r--r--third_party/msgpack/include/msgpack/v1/iterator.hpp40
-rw-r--r--third_party/msgpack/include/msgpack/v1/iterator_decl.hpp40
-rw-r--r--third_party/msgpack/include/msgpack/v1/meta.hpp53
-rw-r--r--third_party/msgpack/include/msgpack/v1/meta_decl.hpp57
-rw-r--r--third_party/msgpack/include/msgpack/v1/object.hpp1240
-rw-r--r--third_party/msgpack/include/msgpack/v1/object_decl.hpp122
-rw-r--r--third_party/msgpack/include/msgpack/v1/object_fwd.hpp255
-rw-r--r--third_party/msgpack/include/msgpack/v1/object_fwd_decl.hpp78
-rw-r--r--third_party/msgpack/include/msgpack/v1/pack.hpp1602
-rw-r--r--third_party/msgpack/include/msgpack/v1/pack_decl.hpp91
-rw-r--r--third_party/msgpack/include/msgpack/v1/parse_return.hpp36
-rw-r--r--third_party/msgpack/include/msgpack/v1/preprocessor.hpp19
-rw-r--r--third_party/msgpack/include/msgpack/v1/sbuffer.hpp149
-rw-r--r--third_party/msgpack/include/msgpack/v1/sbuffer_decl.hpp33
-rw-r--r--third_party/msgpack/include/msgpack/v1/unpack.hpp1591
-rw-r--r--third_party/msgpack/include/msgpack/v1/unpack_decl.hpp454
-rw-r--r--third_party/msgpack/include/msgpack/v1/unpack_exception.hpp122
-rw-r--r--third_party/msgpack/include/msgpack/v1/version.hpp36
-rw-r--r--third_party/msgpack/include/msgpack/v1/versioning.hpp69
-rw-r--r--third_party/msgpack/include/msgpack/v1/vrefbuffer.hpp292
-rw-r--r--third_party/msgpack/include/msgpack/v1/vrefbuffer_decl.hpp39
-rw-r--r--third_party/msgpack/include/msgpack/v1/zbuffer.hpp159
-rw-r--r--third_party/msgpack/include/msgpack/v1/zbuffer_decl.hpp37
-rw-r--r--third_party/msgpack/include/msgpack/v1/zone.hpp21
-rw-r--r--third_party/msgpack/include/msgpack/v1/zone_decl.hpp21
-rw-r--r--third_party/msgpack/include/msgpack/v2/adaptor/adaptor_base.hpp58
-rw-r--r--third_party/msgpack/include/msgpack/v2/adaptor/adaptor_base_decl.hpp52
-rw-r--r--third_party/msgpack/include/msgpack/v2/adaptor/array_ref_decl.hpp36
-rw-r--r--third_party/msgpack/include/msgpack/v2/adaptor/boost/msgpack_variant_decl.hpp42
-rw-r--r--third_party/msgpack/include/msgpack/v2/adaptor/check_container_size_decl.hpp39
-rw-r--r--third_party/msgpack/include/msgpack/v2/adaptor/define_decl.hpp23
-rw-r--r--third_party/msgpack/include/msgpack/v2/adaptor/detail/cpp03_define_array_decl.hpp31
-rw-r--r--third_party/msgpack/include/msgpack/v2/adaptor/detail/cpp03_define_map_decl.hpp31
-rw-r--r--third_party/msgpack/include/msgpack/v2/adaptor/detail/cpp03_msgpack_tuple_decl.hpp43
-rw-r--r--third_party/msgpack/include/msgpack/v2/adaptor/detail/cpp11_define_array_decl.hpp32
-rw-r--r--third_party/msgpack/include/msgpack/v2/adaptor/detail/cpp11_define_map_decl.hpp31
-rw-r--r--third_party/msgpack/include/msgpack/v2/adaptor/detail/cpp11_msgpack_tuple_decl.hpp59
-rw-r--r--third_party/msgpack/include/msgpack/v2/adaptor/ext_decl.hpp34
-rw-r--r--third_party/msgpack/include/msgpack/v2/adaptor/fixint_decl.hpp43
-rw-r--r--third_party/msgpack/include/msgpack/v2/adaptor/int_decl.hpp54
-rw-r--r--third_party/msgpack/include/msgpack/v2/adaptor/map_decl.hpp33
-rw-r--r--third_party/msgpack/include/msgpack/v2/adaptor/msgpack_tuple_decl.hpp21
-rw-r--r--third_party/msgpack/include/msgpack/v2/adaptor/nil_decl.hpp42
-rw-r--r--third_party/msgpack/include/msgpack/v2/adaptor/raw_decl.hpp33
-rw-r--r--third_party/msgpack/include/msgpack/v2/adaptor/size_equal_only_decl.hpp35
-rw-r--r--third_party/msgpack/include/msgpack/v2/adaptor/v4raw_decl.hpp34
-rw-r--r--third_party/msgpack/include/msgpack/v2/cpp_config_decl.hpp84
-rw-r--r--third_party/msgpack/include/msgpack/v2/create_object_visitor.hpp250
-rw-r--r--third_party/msgpack/include/msgpack/v2/create_object_visitor_decl.hpp33
-rw-r--r--third_party/msgpack/include/msgpack/v2/detail/cpp03_zone_decl.hpp31
-rw-r--r--third_party/msgpack/include/msgpack/v2/detail/cpp11_zone_decl.hpp31
-rw-r--r--third_party/msgpack/include/msgpack/v2/fbuffer_decl.hpp32
-rw-r--r--third_party/msgpack/include/msgpack/v2/iterator_decl.hpp33
-rw-r--r--third_party/msgpack/include/msgpack/v2/meta_decl.hpp50
-rw-r--r--third_party/msgpack/include/msgpack/v2/null_visitor.hpp96
-rw-r--r--third_party/msgpack/include/msgpack/v2/null_visitor_decl.hpp29
-rw-r--r--third_party/msgpack/include/msgpack/v2/object.hpp33
-rw-r--r--third_party/msgpack/include/msgpack/v2/object_decl.hpp53
-rw-r--r--third_party/msgpack/include/msgpack/v2/object_fwd.hpp109
-rw-r--r--third_party/msgpack/include/msgpack/v2/object_fwd_decl.hpp75
-rw-r--r--third_party/msgpack/include/msgpack/v2/pack_decl.hpp56
-rw-r--r--third_party/msgpack/include/msgpack/v2/parse.hpp1072
-rw-r--r--third_party/msgpack/include/msgpack/v2/parse_decl.hpp79
-rw-r--r--third_party/msgpack/include/msgpack/v2/parse_return.hpp37
-rw-r--r--third_party/msgpack/include/msgpack/v2/sbuffer_decl.hpp33
-rw-r--r--third_party/msgpack/include/msgpack/v2/unpack.hpp348
-rw-r--r--third_party/msgpack/include/msgpack/v2/unpack_decl.hpp312
-rw-r--r--third_party/msgpack/include/msgpack/v2/vrefbuffer_decl.hpp29
-rw-r--r--third_party/msgpack/include/msgpack/v2/x3_parse.hpp873
-rw-r--r--third_party/msgpack/include/msgpack/v2/x3_parse_decl.hpp36
-rw-r--r--third_party/msgpack/include/msgpack/v2/x3_unpack.hpp120
-rw-r--r--third_party/msgpack/include/msgpack/v2/x3_unpack_decl.hpp71
-rw-r--r--third_party/msgpack/include/msgpack/v2/zbuffer_decl.hpp29
-rw-r--r--third_party/msgpack/include/msgpack/v2/zone_decl.hpp21
-rw-r--r--third_party/msgpack/include/msgpack/v3/adaptor/adaptor_base.hpp58
-rw-r--r--third_party/msgpack/include/msgpack/v3/adaptor/adaptor_base_decl.hpp52
-rw-r--r--third_party/msgpack/include/msgpack/v3/adaptor/array_ref_decl.hpp36
-rw-r--r--third_party/msgpack/include/msgpack/v3/adaptor/boost/msgpack_variant_decl.hpp42
-rw-r--r--third_party/msgpack/include/msgpack/v3/adaptor/check_container_size_decl.hpp39
-rw-r--r--third_party/msgpack/include/msgpack/v3/adaptor/define_decl.hpp23
-rw-r--r--third_party/msgpack/include/msgpack/v3/adaptor/detail/cpp03_define_array_decl.hpp31
-rw-r--r--third_party/msgpack/include/msgpack/v3/adaptor/detail/cpp03_define_map_decl.hpp31
-rw-r--r--third_party/msgpack/include/msgpack/v3/adaptor/detail/cpp03_msgpack_tuple_decl.hpp43
-rw-r--r--third_party/msgpack/include/msgpack/v3/adaptor/detail/cpp11_define_array_decl.hpp32
-rw-r--r--third_party/msgpack/include/msgpack/v3/adaptor/detail/cpp11_define_map_decl.hpp31
-rw-r--r--third_party/msgpack/include/msgpack/v3/adaptor/detail/cpp11_msgpack_tuple_decl.hpp59
-rw-r--r--third_party/msgpack/include/msgpack/v3/adaptor/ext_decl.hpp34
-rw-r--r--third_party/msgpack/include/msgpack/v3/adaptor/fixint_decl.hpp43
-rw-r--r--third_party/msgpack/include/msgpack/v3/adaptor/int_decl.hpp54
-rw-r--r--third_party/msgpack/include/msgpack/v3/adaptor/map_decl.hpp33
-rw-r--r--third_party/msgpack/include/msgpack/v3/adaptor/msgpack_tuple_decl.hpp21
-rw-r--r--third_party/msgpack/include/msgpack/v3/adaptor/nil_decl.hpp42
-rw-r--r--third_party/msgpack/include/msgpack/v3/adaptor/raw_decl.hpp33
-rw-r--r--third_party/msgpack/include/msgpack/v3/adaptor/size_equal_only_decl.hpp35
-rw-r--r--third_party/msgpack/include/msgpack/v3/adaptor/v4raw_decl.hpp34
-rw-r--r--third_party/msgpack/include/msgpack/v3/cpp_config_decl.hpp84
-rw-r--r--third_party/msgpack/include/msgpack/v3/create_object_visitor_decl.hpp33
-rw-r--r--third_party/msgpack/include/msgpack/v3/detail/cpp03_zone_decl.hpp31
-rw-r--r--third_party/msgpack/include/msgpack/v3/detail/cpp11_zone_decl.hpp31
-rw-r--r--third_party/msgpack/include/msgpack/v3/fbuffer_decl.hpp32
-rw-r--r--third_party/msgpack/include/msgpack/v3/iterator_decl.hpp33
-rw-r--r--third_party/msgpack/include/msgpack/v3/meta_decl.hpp50
-rw-r--r--third_party/msgpack/include/msgpack/v3/null_visitor_decl.hpp29
-rw-r--r--third_party/msgpack/include/msgpack/v3/object_decl.hpp53
-rw-r--r--third_party/msgpack/include/msgpack/v3/object_fwd.hpp70
-rw-r--r--third_party/msgpack/include/msgpack/v3/object_fwd_decl.hpp75
-rw-r--r--third_party/msgpack/include/msgpack/v3/pack_decl.hpp55
-rw-r--r--third_party/msgpack/include/msgpack/v3/parse.hpp677
-rw-r--r--third_party/msgpack/include/msgpack/v3/parse_decl.hpp49
-rw-r--r--third_party/msgpack/include/msgpack/v3/parse_return.hpp35
-rw-r--r--third_party/msgpack/include/msgpack/v3/sbuffer_decl.hpp33
-rw-r--r--third_party/msgpack/include/msgpack/v3/unpack.hpp192
-rw-r--r--third_party/msgpack/include/msgpack/v3/unpack_decl.hpp304
-rw-r--r--third_party/msgpack/include/msgpack/v3/vrefbuffer_decl.hpp29
-rw-r--r--third_party/msgpack/include/msgpack/v3/x3_parse_decl.hpp34
-rw-r--r--third_party/msgpack/include/msgpack/v3/x3_unpack.hpp97
-rw-r--r--third_party/msgpack/include/msgpack/v3/x3_unpack_decl.hpp65
-rw-r--r--third_party/msgpack/include/msgpack/v3/zbuffer_decl.hpp29
-rw-r--r--third_party/msgpack/include/msgpack/v3/zone_decl.hpp21
-rw-r--r--third_party/msgpack/include/msgpack/version.h38
-rw-r--r--third_party/msgpack/include/msgpack/version.hpp36
-rw-r--r--third_party/msgpack/include/msgpack/version_master.h3
-rw-r--r--third_party/msgpack/include/msgpack/versioning.hpp71
-rw-r--r--third_party/msgpack/include/msgpack/vrefbuffer.h140
-rw-r--r--third_party/msgpack/include/msgpack/vrefbuffer.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/vrefbuffer_decl.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/x3_parse.hpp15
-rw-r--r--third_party/msgpack/include/msgpack/x3_parse_decl.hpp16
-rw-r--r--third_party/msgpack/include/msgpack/x3_unpack.hpp16
-rw-r--r--third_party/msgpack/include/msgpack/x3_unpack_decl.hpp16
-rw-r--r--third_party/msgpack/include/msgpack/zbuffer.h200
-rw-r--r--third_party/msgpack/include/msgpack/zbuffer.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/zbuffer_decl.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/zone.h163
-rw-r--r--third_party/msgpack/include/msgpack/zone.hpp17
-rw-r--r--third_party/msgpack/include/msgpack/zone_decl.hpp17
-rw-r--r--third_party/msgpack/moz.build25
-rw-r--r--third_party/msgpack/moz.yaml30
-rw-r--r--third_party/msgpack/src/objectc.c547
-rw-r--r--third_party/msgpack/src/unpack.c676
-rw-r--r--third_party/msgpack/src/version.c22
-rw-r--r--third_party/msgpack/src/vrefbuffer.c232
-rw-r--r--third_party/msgpack/src/zone.c222
730 files changed, 99816 insertions, 0 deletions
diff --git a/third_party/msgpack/LICENSE_1_0.txt b/third_party/msgpack/LICENSE_1_0.txt
new file mode 100644
index 0000000000..36b7cd93cd
--- /dev/null
+++ b/third_party/msgpack/LICENSE_1_0.txt
@@ -0,0 +1,23 @@
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/third_party/msgpack/include/msgpack.h b/third_party/msgpack/include/msgpack.h
new file mode 100644
index 0000000000..af557a5cdb
--- /dev/null
+++ b/third_party/msgpack/include/msgpack.h
@@ -0,0 +1,24 @@
+/*
+ * MessagePack for C
+ *
+ * Copyright (C) 2008-2009 FURUHASHI Sadayuki
+ *
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ */
+/**
+ * @defgroup msgpack MessagePack C
+ * @{
+ * @}
+ */
+
+#include "msgpack/util.h"
+#include "msgpack/object.h"
+#include "msgpack/zone.h"
+#include "msgpack/pack.h"
+#include "msgpack/unpack.h"
+#include "msgpack/sbuffer.h"
+#include "msgpack/vrefbuffer.h"
+#include "msgpack/version.h"
+
diff --git a/third_party/msgpack/include/msgpack.hpp b/third_party/msgpack/include/msgpack.hpp
new file mode 100644
index 0000000000..74ae1f6635
--- /dev/null
+++ b/third_party/msgpack/include/msgpack.hpp
@@ -0,0 +1,22 @@
+//
+// MessagePack for C++
+//
+// Copyright (C) 2008-2009 FURUHASHI Sadayuki
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#include "msgpack/object.hpp"
+#include "msgpack/iterator.hpp"
+#include "msgpack/zone.hpp"
+#include "msgpack/pack.hpp"
+#include "msgpack/null_visitor.hpp"
+#include "msgpack/parse.hpp"
+#include "msgpack/unpack.hpp"
+#include "msgpack/x3_parse.hpp"
+#include "msgpack/x3_unpack.hpp"
+#include "msgpack/sbuffer.hpp"
+#include "msgpack/vrefbuffer.hpp"
+#include "msgpack/version.hpp"
+#include "msgpack/type.hpp"
diff --git a/third_party/msgpack/include/msgpack/adaptor/adaptor_base.hpp b/third_party/msgpack/include/msgpack/adaptor/adaptor_base.hpp
new file mode 100644
index 0000000000..4cf4fd4451
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/adaptor_base.hpp
@@ -0,0 +1,19 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015-2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_ADAPTOR_BASE_HPP
+#define MSGPACK_ADAPTOR_BASE_HPP
+
+#include "msgpack/adaptor/adaptor_base_decl.hpp"
+
+#include "msgpack/v1/adaptor/adaptor_base.hpp"
+#include "msgpack/v2/adaptor/adaptor_base.hpp"
+#include "msgpack/v3/adaptor/adaptor_base.hpp"
+
+#endif // MSGPACK_ADAPTOR_BASE_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/adaptor_base_decl.hpp b/third_party/msgpack/include/msgpack/adaptor/adaptor_base_decl.hpp
new file mode 100644
index 0000000000..753cfb91e2
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/adaptor_base_decl.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_ADAPTOR_BASE_DECL_HPP
+#define MSGPACK_ADAPTOR_BASE_DECL_HPP
+
+#include "msgpack/v1/adaptor/adaptor_base_decl.hpp"
+#include "msgpack/v2/adaptor/adaptor_base_decl.hpp"
+#include "msgpack/v3/adaptor/adaptor_base_decl.hpp"
+
+#endif // MSGPACK_ADAPTOR_BASE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/array_ref.hpp b/third_party/msgpack/include/msgpack/adaptor/array_ref.hpp
new file mode 100644
index 0000000000..2a3f61fbfa
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/array_ref.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_ARRAY_REF_HPP
+#define MSGPACK_TYPE_ARRAY_REF_HPP
+
+#include "msgpack/adaptor/array_ref_decl.hpp"
+
+#include "msgpack/v1/adaptor/array_ref.hpp"
+
+#endif // MSGPACK_TYPE_ARRAY_REFL_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/array_ref_decl.hpp b/third_party/msgpack/include/msgpack/adaptor/array_ref_decl.hpp
new file mode 100644
index 0000000000..43eaa98d71
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/array_ref_decl.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_ARRAY_REF_DECL_HPP
+#define MSGPACK_TYPE_ARRAY_REF_DECL_HPP
+
+#include "msgpack/v1/adaptor/array_ref_decl.hpp"
+#include "msgpack/v2/adaptor/array_ref_decl.hpp"
+#include "msgpack/v3/adaptor/array_ref_decl.hpp"
+
+#endif // MSGPACK_TYPE_ARRAY_REF_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/bool.hpp b/third_party/msgpack/include/msgpack/adaptor/bool.hpp
new file mode 100644
index 0000000000..f904fb98f0
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/bool.hpp
@@ -0,0 +1,15 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_BOOL_HPP
+#define MSGPACK_TYPE_BOOL_HPP
+
+#include "msgpack/v1/adaptor/bool.hpp"
+
+#endif // MSGPACK_TYPE_BOOL_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/boost/fusion.hpp b/third_party/msgpack/include/msgpack/adaptor/boost/fusion.hpp
new file mode 100644
index 0000000000..c6191f139f
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/boost/fusion.hpp
@@ -0,0 +1,15 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_BOOST_FUSION_HPP
+#define MSGPACK_TYPE_BOOST_FUSION_HPP
+
+#include "msgpack/v1/adaptor/boost/fusion.hpp"
+
+#endif // MSGPACK_TYPE_BOOST_FUSION_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/boost/msgpack_variant.hpp b/third_party/msgpack/include/msgpack/adaptor/boost/msgpack_variant.hpp
new file mode 100644
index 0000000000..b20f1ac938
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/boost/msgpack_variant.hpp
@@ -0,0 +1,18 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015-2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_BOOST_MSGPACK_VARIANT_HPP
+#define MSGPACK_TYPE_BOOST_MSGPACK_VARIANT_HPP
+
+#include "msgpack/adaptor/boost/msgpack_variant_decl.hpp"
+
+#include "msgpack/v1/adaptor/boost/msgpack_variant.hpp"
+//#include "msgpack/v2/adaptor/boost/msgpack_variant.hpp"
+
+#endif // MSGPACK_TYPE_BOOST_MSGPACK_VARIANT_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/boost/msgpack_variant_decl.hpp b/third_party/msgpack/include/msgpack/adaptor/boost/msgpack_variant_decl.hpp
new file mode 100644
index 0000000000..ada6c913b3
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/boost/msgpack_variant_decl.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_BOOST_MSGPACK_VARIANT_DECL_HPP
+#define MSGPACK_TYPE_BOOST_MSGPACK_VARIANT_DECL_HPP
+
+#include "msgpack/v1/adaptor/boost/msgpack_variant_decl.hpp"
+#include "msgpack/v2/adaptor/boost/msgpack_variant_decl.hpp"
+#include "msgpack/v3/adaptor/boost/msgpack_variant_decl.hpp"
+
+#endif // MSGPACK_TYPE_BOOST_MSGPACK_VARIANT_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/boost/optional.hpp b/third_party/msgpack/include/msgpack/adaptor/boost/optional.hpp
new file mode 100644
index 0000000000..e4b53cebf3
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/boost/optional.hpp
@@ -0,0 +1,15 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_BOOST_OPTIONAL_HPP
+#define MSGPACK_TYPE_BOOST_OPTIONAL_HPP
+
+#include "msgpack/v1/adaptor/boost/optional.hpp"
+
+#endif // MSGPACK_TYPE_BOOST_OPTIONAL_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/boost/string_ref.hpp b/third_party/msgpack/include/msgpack/adaptor/boost/string_ref.hpp
new file mode 100644
index 0000000000..43bf70f452
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/boost/string_ref.hpp
@@ -0,0 +1,15 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_BOOST_STRING_REF_HPP
+#define MSGPACK_TYPE_BOOST_STRING_REF_HPP
+
+#include "msgpack/v1/adaptor/boost/string_ref.hpp"
+
+#endif // MSGPACK_TYPE_BOOST_STRING_REF_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/boost/string_view.hpp b/third_party/msgpack/include/msgpack/adaptor/boost/string_view.hpp
new file mode 100644
index 0000000000..ccf272cf12
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/boost/string_view.hpp
@@ -0,0 +1,15 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2017 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_BOOST_STRING_VIEW_HPP
+#define MSGPACK_TYPE_BOOST_STRING_VIEW_HPP
+
+#include "msgpack/v1/adaptor/boost/string_view.hpp"
+
+#endif // MSGPACK_TYPE_BOOST_STRING_VIEW_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/carray.hpp b/third_party/msgpack/include/msgpack/adaptor/carray.hpp
new file mode 100644
index 0000000000..b1caf53d53
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/carray.hpp
@@ -0,0 +1,15 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_CARRAY_HPP
+#define MSGPACK_TYPE_CARRAY_HPP
+
+#include "msgpack/v1/adaptor/carray.hpp"
+
+#endif // MSGPACK_TYPE_CARRAY_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/char_ptr.hpp b/third_party/msgpack/include/msgpack/adaptor/char_ptr.hpp
new file mode 100644
index 0000000000..71cce6ccf5
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/char_ptr.hpp
@@ -0,0 +1,15 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_CHAR_PTR_HPP
+#define MSGPACK_TYPE_CHAR_PTR_HPP
+
+#include "msgpack/v1/adaptor/char_ptr.hpp"
+
+#endif // MSGPACK_TYPE_CHAR_PTR_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/check_container_size.hpp b/third_party/msgpack/include/msgpack/adaptor/check_container_size.hpp
new file mode 100644
index 0000000000..a464419fc4
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/check_container_size.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015-2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_CHECK_CONTAINER_SIZE_HPP
+#define MSGPACK_CHECK_CONTAINER_SIZE_HPP
+
+#include "msgpack/adaptor/check_container_size_decl.hpp"
+
+#include "msgpack/v1/adaptor/check_container_size.hpp"
+
+#endif // MSGPACK_CHECK_CONTAINER_SIZE_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/check_container_size_decl.hpp b/third_party/msgpack/include/msgpack/adaptor/check_container_size_decl.hpp
new file mode 100644
index 0000000000..e61334af73
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/check_container_size_decl.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_CHECK_CONTAINER_SIZE_DECL_HPP
+#define MSGPACK_CHECK_CONTAINER_SIZE_DECL_HPP
+
+#include "msgpack/v1/adaptor/check_container_size_decl.hpp"
+#include "msgpack/v2/adaptor/check_container_size_decl.hpp"
+#include "msgpack/v3/adaptor/check_container_size_decl.hpp"
+
+#endif // MSGPACK_CHECK_CONTAINER_SIZE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/cpp11/array.hpp b/third_party/msgpack/include/msgpack/adaptor/cpp11/array.hpp
new file mode 100644
index 0000000000..fdc49022f9
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/cpp11/array.hpp
@@ -0,0 +1,16 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_TYPE_CPP11_ARRAY_HPP
+#define MSGPACK_TYPE_CPP11_ARRAY_HPP
+
+#include "msgpack/v1/adaptor/cpp11/array.hpp"
+
+#endif // MSGPACK_TYPE_CPP11_ARRAY_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/cpp11/array_char.hpp b/third_party/msgpack/include/msgpack/adaptor/cpp11/array_char.hpp
new file mode 100644
index 0000000000..8a9bc6dfe7
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/cpp11/array_char.hpp
@@ -0,0 +1,16 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_TYPE_CPP11_ARRAY_CHAR_HPP
+#define MSGPACK_TYPE_CPP11_ARRAY_CHAR_HPP
+
+#include "msgpack/v1/adaptor/cpp11/array_char.hpp"
+
+#endif // MSGPACK_TYPE_CPP11_ARRAY_CHAR_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/cpp11/array_unsigned_char.hpp b/third_party/msgpack/include/msgpack/adaptor/cpp11/array_unsigned_char.hpp
new file mode 100644
index 0000000000..0860a88af5
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/cpp11/array_unsigned_char.hpp
@@ -0,0 +1,16 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_TYPE_CPP11_ARRAY_UNSIGNED_CHAR_HPP
+#define MSGPACK_TYPE_CPP11_ARRAY_UNSIGNED_CHAR_HPP
+
+#include "msgpack/v1/adaptor/cpp11/array_unsigned_char.hpp"
+
+#endif // MSGPACK_TYPE_CPP11_ARRAY_UNSIGNED_CHAR_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/cpp11/chrono.hpp b/third_party/msgpack/include/msgpack/adaptor/cpp11/chrono.hpp
new file mode 100644
index 0000000000..48d9397457
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/cpp11/chrono.hpp
@@ -0,0 +1,16 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2017 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_TYPE_CPP11_CHRONO_HPP
+#define MSGPACK_TYPE_CPP11_CHRONO_HPP
+
+#include "msgpack/v1/adaptor/cpp11/chrono.hpp"
+
+#endif // MSGPACK_TYPE_CPP11_CHRONO_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/cpp11/forward_list.hpp b/third_party/msgpack/include/msgpack/adaptor/cpp11/forward_list.hpp
new file mode 100644
index 0000000000..27ac9c0d1f
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/cpp11/forward_list.hpp
@@ -0,0 +1,16 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_TYPE_CPP11_FORWARD_LIST_HPP
+#define MSGPACK_TYPE_CPP11_FORWARD_LIST_HPP
+
+#include "msgpack/v1/adaptor/cpp11/forward_list.hpp"
+
+#endif // MSGPACK_TYPE_CPP11_FORWARD_LIST_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/cpp11/reference_wrapper.hpp b/third_party/msgpack/include/msgpack/adaptor/cpp11/reference_wrapper.hpp
new file mode 100644
index 0000000000..6b09429c5e
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/cpp11/reference_wrapper.hpp
@@ -0,0 +1,16 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_TYPE_CPP11_REFERENCE_WRAPPER_HPP
+#define MSGPACK_TYPE_CPP11_REFERENCE_WRAPPER_HPP
+
+#include "msgpack/v1/adaptor/cpp11/reference_wrapper.hpp"
+
+#endif // MSGPACK_TYPE_CPP11_REFERENCE_WRAPPER_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/cpp11/shared_ptr.hpp b/third_party/msgpack/include/msgpack/adaptor/cpp11/shared_ptr.hpp
new file mode 100644
index 0000000000..2199a499d0
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/cpp11/shared_ptr.hpp
@@ -0,0 +1,16 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_TYPE_CPP11_SHARED_PTR_HPP
+#define MSGPACK_TYPE_CPP11_SHARED_PTR_HPP
+
+#include "msgpack/v1/adaptor/cpp11/shared_ptr.hpp"
+
+#endif // MSGPACK_TYPE_CPP11_SHARED_PTR_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/cpp11/tuple.hpp b/third_party/msgpack/include/msgpack/adaptor/cpp11/tuple.hpp
new file mode 100644
index 0000000000..b833c2a26b
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/cpp11/tuple.hpp
@@ -0,0 +1,16 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_TYPE_CPP11_TUPLE_HPP
+#define MSGPACK_TYPE_CPP11_TUPLE_HPP
+
+#include "msgpack/v1/adaptor/cpp11/tuple.hpp"
+
+#endif // MSGPACK_TYPE_CPP11_TUPLE_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/cpp11/unique_ptr.hpp b/third_party/msgpack/include/msgpack/adaptor/cpp11/unique_ptr.hpp
new file mode 100644
index 0000000000..ef1001283e
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/cpp11/unique_ptr.hpp
@@ -0,0 +1,16 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_TYPE_CPP11_UNIQUE_PTR_HPP
+#define MSGPACK_TYPE_CPP11_UNIQUE_PTR_HPP
+
+#include "msgpack/v1/adaptor/cpp11/unique_ptr.hpp"
+
+#endif // MSGPACK_TYPE_CPP11_UNIQUE_PTR_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/cpp11/unordered_map.hpp b/third_party/msgpack/include/msgpack/adaptor/cpp11/unordered_map.hpp
new file mode 100644
index 0000000000..dadbf2e255
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/cpp11/unordered_map.hpp
@@ -0,0 +1,16 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_TYPE_CPP11_UNORDERED_MAP_HPP
+#define MSGPACK_TYPE_CPP11_UNORDERED_MAP_HPP
+
+#include "msgpack/v1/adaptor/cpp11/unordered_map.hpp"
+
+#endif // MSGPACK_TYPE_CPP11_UNORDERED_MAP_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/cpp11/unordered_set.hpp b/third_party/msgpack/include/msgpack/adaptor/cpp11/unordered_set.hpp
new file mode 100644
index 0000000000..f2e5862110
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/cpp11/unordered_set.hpp
@@ -0,0 +1,16 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_TYPE_CPP11_UNORDERED_SET_HPP
+#define MSGPACK_TYPE_CPP11_UNORDERED_SET_HPP
+
+#include "msgpack/v1/adaptor/cpp11/unordered_set.hpp"
+
+#endif // MSGPACK_TYPE_CPP11_UNORDERED_SET_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/cpp17/byte.hpp b/third_party/msgpack/include/msgpack/adaptor/cpp17/byte.hpp
new file mode 100644
index 0000000000..eebaa96030
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/cpp17/byte.hpp
@@ -0,0 +1,16 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_TYPE_CPP17_BYTE_HPP
+#define MSGPACK_TYPE_CPP17_BYTE_HPP
+
+#include "msgpack/v1/adaptor/cpp17/byte.hpp"
+
+#endif // MSGPACK_TYPE_CPP17_BYTE_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/cpp17/carray_byte.hpp b/third_party/msgpack/include/msgpack/adaptor/cpp17/carray_byte.hpp
new file mode 100644
index 0000000000..c41bccac77
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/cpp17/carray_byte.hpp
@@ -0,0 +1,16 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_TYPE_CPP17_CARRAY_BYTE_HPP
+#define MSGPACK_TYPE_CPP17_CARRAY_BYTE_HPP
+
+#include "msgpack/v1/adaptor/cpp17/carray_byte.hpp"
+
+#endif // MSGPACK_TYPE_CPP17_CARRAY_BYTE_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/cpp17/optional.hpp b/third_party/msgpack/include/msgpack/adaptor/cpp17/optional.hpp
new file mode 100644
index 0000000000..5df17d9f49
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/cpp17/optional.hpp
@@ -0,0 +1,16 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2017 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_TYPE_CPP17_OPTIONAL_HPP
+#define MSGPACK_TYPE_CPP17_OPTIONAL_HPP
+
+#include "msgpack/v1/adaptor/cpp17/optional.hpp"
+
+#endif // MSGPACK_TYPE_CPP17_OPTIONAL_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/cpp17/string_view.hpp b/third_party/msgpack/include/msgpack/adaptor/cpp17/string_view.hpp
new file mode 100644
index 0000000000..3f77e1bb15
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/cpp17/string_view.hpp
@@ -0,0 +1,16 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2017 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_TYPE_CPP17_STRING_VIEW_HPP
+#define MSGPACK_TYPE_CPP17_STRING_VIEW_HPP
+
+#include "msgpack/v1/adaptor/cpp17/string_view.hpp"
+
+#endif // MSGPACK_TYPE_CPP17_STRING_VIEW_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/cpp17/vector_byte.hpp b/third_party/msgpack/include/msgpack/adaptor/cpp17/vector_byte.hpp
new file mode 100644
index 0000000000..8c5e6230a9
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/cpp17/vector_byte.hpp
@@ -0,0 +1,16 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_TYPE_CPP17_VECTOR_BYTE_HPP
+#define MSGPACK_TYPE_CPP17_VECTOR_BYTE_HPP
+
+#include "msgpack/v1/adaptor/cpp17/vector_byte.hpp"
+
+#endif // MSGPACK_TYPE_CPP17_VECTOR_BYTE_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/define.hpp b/third_party/msgpack/include/msgpack/adaptor/define.hpp
new file mode 100644
index 0000000000..1599100824
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/define.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_DEFINE_HPP
+#define MSGPACK_DEFINE_HPP
+
+#include "msgpack/adaptor/define_decl.hpp"
+
+#include "msgpack/v1/adaptor/define.hpp"
+
+#endif // MSGPACK_DEFINE_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/define_decl.hpp b/third_party/msgpack/include/msgpack/adaptor/define_decl.hpp
new file mode 100644
index 0000000000..1880a86165
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/define_decl.hpp
@@ -0,0 +1,144 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_DEFINE_DECL_HPP
+#define MSGPACK_DEFINE_DECL_HPP
+
+// BOOST_PP_VARIADICS is defined in boost/preprocessor/config/config.hpp
+// http://www.boost.org/libs/preprocessor/doc/ref/variadics.html
+// However, supporting compiler detection is not complete. msgpack-c requires
+// variadic macro arguments support. So BOOST_PP_VARIADICS is defined here explicitly.
+#if !defined(MSGPACK_PP_VARIADICS)
+#define MSGPACK_PP_VARIADICS
+#endif
+
+#include <msgpack/preprocessor.hpp>
+
+#include "msgpack/versioning.hpp"
+
+// for MSGPACK_ADD_ENUM
+#include "msgpack/adaptor/int.hpp"
+
+#define MSGPACK_DEFINE_ARRAY(...) \
+ template <typename Packer> \
+ void msgpack_pack(Packer& msgpack_pk) const \
+ { \
+ msgpack::type::make_define_array(__VA_ARGS__).msgpack_pack(msgpack_pk); \
+ } \
+ void msgpack_unpack(msgpack::object const& msgpack_o) \
+ { \
+ msgpack::type::make_define_array(__VA_ARGS__).msgpack_unpack(msgpack_o); \
+ }\
+ template <typename MSGPACK_OBJECT> \
+ void msgpack_object(MSGPACK_OBJECT* msgpack_o, msgpack::zone& msgpack_z) const \
+ { \
+ msgpack::type::make_define_array(__VA_ARGS__).msgpack_object(msgpack_o, msgpack_z); \
+ }
+
+#define MSGPACK_BASE_ARRAY(base) (*const_cast<base *>(static_cast<base const*>(this)))
+#define MSGPACK_NVP(name, value) (name) (value)
+
+#define MSGPACK_DEFINE_MAP_EACH_PROC(r, data, elem) \
+ MSGPACK_PP_IF( \
+ MSGPACK_PP_IS_BEGIN_PARENS(elem), \
+ elem, \
+ (MSGPACK_PP_STRINGIZE(elem))(elem) \
+ )
+
+#define MSGPACK_DEFINE_MAP_IMPL(...) \
+ MSGPACK_PP_SEQ_TO_TUPLE( \
+ MSGPACK_PP_SEQ_FOR_EACH( \
+ MSGPACK_DEFINE_MAP_EACH_PROC, \
+ 0, \
+ MSGPACK_PP_VARIADIC_TO_SEQ(__VA_ARGS__) \
+ ) \
+ )
+
+#define MSGPACK_DEFINE_MAP(...) \
+ template <typename Packer> \
+ void msgpack_pack(Packer& msgpack_pk) const \
+ { \
+ msgpack::type::make_define_map \
+ MSGPACK_DEFINE_MAP_IMPL(__VA_ARGS__) \
+ .msgpack_pack(msgpack_pk); \
+ } \
+ void msgpack_unpack(msgpack::object const& msgpack_o) \
+ { \
+ msgpack::type::make_define_map \
+ MSGPACK_DEFINE_MAP_IMPL(__VA_ARGS__) \
+ .msgpack_unpack(msgpack_o); \
+ }\
+ template <typename MSGPACK_OBJECT> \
+ void msgpack_object(MSGPACK_OBJECT* msgpack_o, msgpack::zone& msgpack_z) const \
+ { \
+ msgpack::type::make_define_map \
+ MSGPACK_DEFINE_MAP_IMPL(__VA_ARGS__) \
+ .msgpack_object(msgpack_o, msgpack_z); \
+ }
+
+#define MSGPACK_BASE_MAP(base) \
+ (MSGPACK_PP_STRINGIZE(base))(*const_cast<base *>(static_cast<base const*>(this)))
+
+// MSGPACK_ADD_ENUM must be used in the global namespace.
+#define MSGPACK_ADD_ENUM(enum_name) \
+ namespace msgpack { \
+ /** @cond */ \
+ MSGPACK_API_VERSION_NAMESPACE(MSGPACK_DEFAULT_API_NS) { \
+ /** @endcond */ \
+ namespace adaptor { \
+ template<> \
+ struct convert<enum_name> { \
+ msgpack::object const& operator()(msgpack::object const& msgpack_o, enum_name& msgpack_v) const { \
+ msgpack::underlying_type<enum_name>::type tmp; \
+ msgpack::operator>>(msgpack_o, tmp); \
+ msgpack_v = static_cast<enum_name>(tmp); \
+ return msgpack_o; \
+ } \
+ }; \
+ template<> \
+ struct object<enum_name> { \
+ void operator()(msgpack::object& msgpack_o, const enum_name& msgpack_v) const { \
+ msgpack::underlying_type<enum_name>::type tmp = static_cast<msgpack::underlying_type<enum_name>::type>(msgpack_v); \
+ msgpack::operator<<(msgpack_o, tmp); \
+ } \
+ }; \
+ template<> \
+ struct object_with_zone<enum_name> { \
+ void operator()(msgpack::object::with_zone& msgpack_o, const enum_name& msgpack_v) const { \
+ msgpack::underlying_type<enum_name>::type tmp = static_cast<msgpack::underlying_type<enum_name>::type>(msgpack_v); \
+ msgpack::operator<<(msgpack_o, tmp); \
+ } \
+ }; \
+ template <> \
+ struct pack<enum_name> { \
+ template <typename Stream> \
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& msgpack_o, const enum_name& msgpack_v) const { \
+ return msgpack::operator<<(msgpack_o, static_cast<msgpack::underlying_type<enum_name>::type>(msgpack_v)); \
+ } \
+ }; \
+ } \
+ /** @cond */ \
+ } \
+ /** @endcond */ \
+ }
+
+#if defined(MSGPACK_USE_DEFINE_MAP)
+#define MSGPACK_DEFINE MSGPACK_DEFINE_MAP
+#define MSGPACK_BASE MSGPACK_BASE_MAP
+#else // defined(MSGPACK_USE_DEFINE_MAP)
+#define MSGPACK_DEFINE MSGPACK_DEFINE_ARRAY
+#define MSGPACK_BASE MSGPACK_BASE_ARRAY
+#endif // defined(MSGPACK_USE_DEFINE_MAP)
+
+
+#include "msgpack/v1/adaptor/define_decl.hpp"
+#include "msgpack/v2/adaptor/define_decl.hpp"
+#include "msgpack/v3/adaptor/define_decl.hpp"
+
+#endif // MSGPACK_DEFINE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/deque.hpp b/third_party/msgpack/include/msgpack/adaptor/deque.hpp
new file mode 100644
index 0000000000..dfb61b6bff
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/deque.hpp
@@ -0,0 +1,15 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_DEQUE_HPP
+#define MSGPACK_TYPE_DEQUE_HPP
+
+#include "msgpack/v1/adaptor/deque.hpp"
+
+#endif // MSGPACK_TYPE_DEQUE_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/ext.hpp b/third_party/msgpack/include/msgpack/adaptor/ext.hpp
new file mode 100644
index 0000000000..37658dc9d6
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/ext.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_EXT_HPP
+#define MSGPACK_TYPE_EXT_HPP
+
+#include "msgpack/adaptor/ext_decl.hpp"
+
+#include "msgpack/v1/adaptor/ext.hpp"
+
+#endif // MSGPACK_TYPE_EXT_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/ext_decl.hpp b/third_party/msgpack/include/msgpack/adaptor/ext_decl.hpp
new file mode 100644
index 0000000000..7da30427be
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/ext_decl.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_EXT_DECL_HPP
+#define MSGPACK_TYPE_EXT_DECL_HPP
+
+#include "msgpack/v1/adaptor/ext_decl.hpp"
+#include "msgpack/v2/adaptor/ext_decl.hpp"
+#include "msgpack/v3/adaptor/ext_decl.hpp"
+
+#endif // MSGPACK_TYPE_EXT_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/fixint.hpp b/third_party/msgpack/include/msgpack/adaptor/fixint.hpp
new file mode 100644
index 0000000000..1c49116e27
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/fixint.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_FIXINT_HPP
+#define MSGPACK_TYPE_FIXINT_HPP
+
+#include "msgpack/adaptor/fixint_decl.hpp"
+
+#include "msgpack/v1/adaptor/fixint.hpp"
+
+#endif // MSGPACK_TYPE_FIXINT_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/fixint_decl.hpp b/third_party/msgpack/include/msgpack/adaptor/fixint_decl.hpp
new file mode 100644
index 0000000000..3e73ded258
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/fixint_decl.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_FIXINT_DECL_HPP
+#define MSGPACK_TYPE_FIXINT_DECL_HPP
+
+#include "msgpack/v1/adaptor/fixint_decl.hpp"
+#include "msgpack/v2/adaptor/fixint_decl.hpp"
+#include "msgpack/v3/adaptor/fixint_decl.hpp"
+
+#endif // MSGPACK_TYPE_FIXINT_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/float.hpp b/third_party/msgpack/include/msgpack/adaptor/float.hpp
new file mode 100644
index 0000000000..5683c96d5c
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/float.hpp
@@ -0,0 +1,15 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_FLOAT_HPP
+#define MSGPACK_TYPE_FLOAT_HPP
+
+#include "msgpack/v1/adaptor/float.hpp"
+
+#endif // MSGPACK_TYPE_FLOAT_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/int.hpp b/third_party/msgpack/include/msgpack/adaptor/int.hpp
new file mode 100644
index 0000000000..e2213e7e36
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/int.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_INT_HPP
+#define MSGPACK_TYPE_INT_HPP
+
+#include "msgpack/adaptor/int_decl.hpp"
+
+#include "msgpack/v1/adaptor/int.hpp"
+
+#endif // MSGPACK_TYPE_INT_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/int_decl.hpp b/third_party/msgpack/include/msgpack/adaptor/int_decl.hpp
new file mode 100644
index 0000000000..f68ef8bc05
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/int_decl.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_INT_DECL_HPP
+#define MSGPACK_TYPE_INT_DECL_HPP
+
+#include "msgpack/v1/adaptor/int_decl.hpp"
+#include "msgpack/v2/adaptor/int_decl.hpp"
+#include "msgpack/v3/adaptor/int_decl.hpp"
+
+#endif // MSGPACK_TYPE_INT_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/list.hpp b/third_party/msgpack/include/msgpack/adaptor/list.hpp
new file mode 100644
index 0000000000..8761da3a9c
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/list.hpp
@@ -0,0 +1,15 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_LIST_HPP
+#define MSGPACK_TYPE_LIST_HPP
+
+#include "msgpack/v1/adaptor/list.hpp"
+
+#endif // MSGPACK_TYPE_LIST_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/map.hpp b/third_party/msgpack/include/msgpack/adaptor/map.hpp
new file mode 100644
index 0000000000..7f0e22e22b
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/map.hpp
@@ -0,0 +1,18 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_MAP_HPP
+#define MSGPACK_TYPE_MAP_HPP
+
+#include "msgpack/adaptor/map_decl.hpp"
+
+#include "msgpack/v1/adaptor/map.hpp"
+
+
+#endif // MSGPACK_TYPE_MAP_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/map_decl.hpp b/third_party/msgpack/include/msgpack/adaptor/map_decl.hpp
new file mode 100644
index 0000000000..757688ec4f
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/map_decl.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_MAP_DECL_HPP
+#define MSGPACK_TYPE_MAP_DECL_HPP
+
+#include "msgpack/v1/adaptor/map_decl.hpp"
+#include "msgpack/v2/adaptor/map_decl.hpp"
+#include "msgpack/v3/adaptor/map_decl.hpp"
+
+#endif // MSGPACK_TYPE_MAP_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/msgpack_tuple.hpp b/third_party/msgpack/include/msgpack/adaptor/msgpack_tuple.hpp
new file mode 100644
index 0000000000..a639277614
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/msgpack_tuple.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2014 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_MSGPACK_TUPLE_HPP
+#define MSGPACK_MSGPACK_TUPLE_HPP
+
+#include "msgpack/adaptor/msgpack_tuple_decl.hpp"
+
+#include "msgpack/v1/adaptor/msgpack_tuple.hpp"
+
+#endif // MSGPACK_MSGPACK_TUPLE_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/msgpack_tuple_decl.hpp b/third_party/msgpack/include/msgpack/adaptor/msgpack_tuple_decl.hpp
new file mode 100644
index 0000000000..0c70b22654
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/msgpack_tuple_decl.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_MSGPACK_TUPLE_DECL_HPP
+#define MSGPACK_MSGPACK_TUPLE_DECL_HPP
+
+#include "msgpack/v1/adaptor/msgpack_tuple_decl.hpp"
+#include "msgpack/v2/adaptor/msgpack_tuple_decl.hpp"
+#include "msgpack/v3/adaptor/msgpack_tuple_decl.hpp"
+
+#endif // MSGPACK_MSGPACK_TUPLE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/nil.hpp b/third_party/msgpack/include/msgpack/adaptor/nil.hpp
new file mode 100644
index 0000000000..92f308125d
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/nil.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_NIL_HPP
+#define MSGPACK_TYPE_NIL_HPP
+
+#include "msgpack/adaptor/nil_decl.hpp"
+
+#include "msgpack/v1/adaptor/nil.hpp"
+
+#endif // MSGPACK_TYPE_NIL_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/nil_decl.hpp b/third_party/msgpack/include/msgpack/adaptor/nil_decl.hpp
new file mode 100644
index 0000000000..d45f45bb9f
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/nil_decl.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_NIL_DECL_HPP
+#define MSGPACK_TYPE_NIL_DECL_HPP
+
+#include "msgpack/v1/adaptor/nil_decl.hpp"
+#include "msgpack/v2/adaptor/nil_decl.hpp"
+#include "msgpack/v3/adaptor/nil_decl.hpp"
+
+#endif // MSGPACK_TYPE_NIL_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/pair.hpp b/third_party/msgpack/include/msgpack/adaptor/pair.hpp
new file mode 100644
index 0000000000..0956aa9a66
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/pair.hpp
@@ -0,0 +1,15 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_PAIR_HPP
+#define MSGPACK_TYPE_PAIR_HPP
+
+#include "msgpack/v1/adaptor/pair.hpp"
+
+#endif // MSGPACK_TYPE_PAIR_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/raw.hpp b/third_party/msgpack/include/msgpack/adaptor/raw.hpp
new file mode 100644
index 0000000000..f85f882cca
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/raw.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_RAW_HPP
+#define MSGPACK_TYPE_RAW_HPP
+
+#include "msgpack/adaptor/raw_decl.hpp"
+
+#include "msgpack/v1/adaptor/raw.hpp"
+
+#endif // MSGPACK_TYPE_RAW_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/raw_decl.hpp b/third_party/msgpack/include/msgpack/adaptor/raw_decl.hpp
new file mode 100644
index 0000000000..60777bddcc
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/raw_decl.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_RAW_DECL_HPP
+#define MSGPACK_TYPE_RAW_DECL_HPP
+
+#include "msgpack/v1/adaptor/raw_decl.hpp"
+#include "msgpack/v2/adaptor/raw_decl.hpp"
+#include "msgpack/v3/adaptor/raw_decl.hpp"
+
+#endif // MSGPACK_TYPE_RAW_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/set.hpp b/third_party/msgpack/include/msgpack/adaptor/set.hpp
new file mode 100644
index 0000000000..fbf820aba9
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/set.hpp
@@ -0,0 +1,15 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_SET_HPP
+#define MSGPACK_TYPE_SET_HPP
+
+#include "msgpack/v1/adaptor/set.hpp"
+
+#endif // MSGPACK_TYPE_SET_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/size_equal_only.hpp b/third_party/msgpack/include/msgpack/adaptor/size_equal_only.hpp
new file mode 100644
index 0000000000..de9d247312
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/size_equal_only.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_SIZE_EQUAL_ONLY_HPP
+#define MSGPACK_TYPE_SIZE_EQUAL_ONLY_HPP
+
+#include "msgpack/adaptor/size_equal_only_decl.hpp"
+
+#include "msgpack/v1/adaptor/size_equal_only.hpp"
+
+#endif // MSGPACK_TYPE_SIZE_EQUAL_ONLYL_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/size_equal_only_decl.hpp b/third_party/msgpack/include/msgpack/adaptor/size_equal_only_decl.hpp
new file mode 100644
index 0000000000..d3e5dcf759
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/size_equal_only_decl.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_SIZE_EQUAL_ONLY_DECL_HPP
+#define MSGPACK_TYPE_SIZE_EQUAL_ONLY_DECL_HPP
+
+#include "msgpack/v1/adaptor/size_equal_only_decl.hpp"
+#include "msgpack/v2/adaptor/size_equal_only_decl.hpp"
+#include "msgpack/v3/adaptor/size_equal_only_decl.hpp"
+
+#endif // MSGPACK_TYPE_SIZE_EQUAL_ONLY_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/string.hpp b/third_party/msgpack/include/msgpack/adaptor/string.hpp
new file mode 100644
index 0000000000..8e3182548a
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/string.hpp
@@ -0,0 +1,15 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_STRING_HPP
+#define MSGPACK_TYPE_STRING_HPP
+
+#include "msgpack/v1/adaptor/string.hpp"
+
+#endif // MSGPACK_TYPE_STRING_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/tr1/unordered_map.hpp b/third_party/msgpack/include/msgpack/adaptor/tr1/unordered_map.hpp
new file mode 100644
index 0000000000..9c8190e855
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/tr1/unordered_map.hpp
@@ -0,0 +1,171 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2015 FURUHASHI Sadayuki
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_TR1_UNORDERED_MAP_HPP
+#define MSGPACK_TYPE_TR1_UNORDERED_MAP_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+
+#if defined(_LIBCPP_VERSION) || (_MSC_VER >= 1700)
+
+#define MSGPACK_HAS_STD_UNORDERED_MAP
+#include <unordered_map>
+#define MSGPACK_STD_TR1 std
+
+#else // defined(_LIBCPP_VERSION) || (_MSC_VER >= 1700)
+
+#if __GNUC__ >= 4
+
+#define MSGPACK_HAS_STD_TR1_UNORDERED_MAP
+
+#include <tr1/unordered_map>
+#define MSGPACK_STD_TR1 std::tr1
+
+#endif // __GNUC__ >= 4
+
+#endif // defined(_LIBCPP_VERSION) || (_MSC_VER >= 1700)
+
+#if defined(MSGPACK_STD_TR1)
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+template <typename K, typename V, typename Hash, typename Pred, typename Alloc>
+struct convert<MSGPACK_STD_TR1::unordered_map<K, V, Hash, Pred, Alloc> > {
+ msgpack::object const& operator()(msgpack::object const& o, MSGPACK_STD_TR1::unordered_map<K, V, Hash, Pred, Alloc>& v) const {
+ if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ msgpack::object_kv* p(o.via.map.ptr);
+ msgpack::object_kv* const pend(o.via.map.ptr + o.via.map.size);
+ MSGPACK_STD_TR1::unordered_map<K, V, Hash, Pred, Alloc> tmp;
+ for(; p != pend; ++p) {
+ K key;
+ p->key.convert(key);
+ p->val.convert(tmp[key]);
+ }
+ tmp.swap(v);
+ return o;
+ }
+};
+
+template <typename K, typename V, typename Hash, typename Pred, typename Alloc>
+struct pack<MSGPACK_STD_TR1::unordered_map<K, V, Hash, Pred, Alloc> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const MSGPACK_STD_TR1::unordered_map<K, V, Hash, Pred, Alloc>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_map(size);
+ for(typename MSGPACK_STD_TR1::unordered_map<K, V, Hash, Pred, Alloc>::const_iterator it(v.begin()), it_end(v.end());
+ it != it_end; ++it) {
+ o.pack(it->first);
+ o.pack(it->second);
+ }
+ return o;
+ }
+};
+
+template <typename K, typename V, typename Hash, typename Pred, typename Alloc>
+struct object_with_zone<MSGPACK_STD_TR1::unordered_map<K, V, Hash, Pred, Alloc> > {
+ void operator()(msgpack::object::with_zone& o, const MSGPACK_STD_TR1::unordered_map<K, V, Hash, Pred, Alloc>& v) const {
+ o.type = msgpack::type::MAP;
+ if(v.empty()) {
+ o.via.map.ptr = MSGPACK_NULLPTR;
+ o.via.map.size = 0;
+ } else {
+ uint32_t size = checked_get_container_size(v.size());
+ msgpack::object_kv* p = static_cast<msgpack::object_kv*>(o.zone.allocate_align(sizeof(msgpack::object_kv)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
+ msgpack::object_kv* const pend = p + size;
+ o.via.map.ptr = p;
+ o.via.map.size = size;
+ typename MSGPACK_STD_TR1::unordered_map<K, V, Hash, Pred, Alloc>::const_iterator it(v.begin());
+ do {
+ p->key = msgpack::object(it->first, o.zone);
+ p->val = msgpack::object(it->second, o.zone);
+ ++p;
+ ++it;
+ } while(p < pend);
+ }
+ }
+};
+
+template <typename K, typename V, typename Hash, typename Pred, typename Alloc>
+struct convert<MSGPACK_STD_TR1::unordered_multimap<K, V, Hash, Pred, Alloc> > {
+ msgpack::object const& operator()(msgpack::object const& o, MSGPACK_STD_TR1::unordered_multimap<K, V, Hash, Pred, Alloc>& v) const {
+ if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ msgpack::object_kv* p(o.via.map.ptr);
+ msgpack::object_kv* const pend(o.via.map.ptr + o.via.map.size);
+ MSGPACK_STD_TR1::unordered_multimap<K, V, Hash, Pred, Alloc> tmp;
+ for(; p != pend; ++p) {
+ std::pair<K, V> value;
+ p->key.convert(value.first);
+ p->val.convert(value.second);
+ tmp.insert(value);
+ }
+ tmp.swap(v);
+ return o;
+ }
+};
+
+template <typename K, typename V, typename Hash, typename Pred, typename Alloc>
+struct pack<MSGPACK_STD_TR1::unordered_multimap<K, V, Hash, Pred, Alloc> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const MSGPACK_STD_TR1::unordered_multimap<K, V, Hash, Pred, Alloc>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_map(size);
+ for(typename MSGPACK_STD_TR1::unordered_multimap<K, V, Hash, Pred, Alloc>::const_iterator it(v.begin()), it_end(v.end());
+ it != it_end; ++it) {
+ o.pack(it->first);
+ o.pack(it->second);
+ }
+ return o;
+ }
+};
+
+template <typename K, typename V, typename Hash, typename Pred, typename Alloc>
+struct object_with_zone<MSGPACK_STD_TR1::unordered_multimap<K, V, Hash, Pred, Alloc> > {
+ void operator()(msgpack::object::with_zone& o, const MSGPACK_STD_TR1::unordered_multimap<K, V, Hash, Pred, Alloc>& v) const {
+ o.type = msgpack::type::MAP;
+ if(v.empty()) {
+ o.via.map.ptr = MSGPACK_NULLPTR;
+ o.via.map.size = 0;
+ } else {
+ uint32_t size = checked_get_container_size(v.size());
+ msgpack::object_kv* p = static_cast<msgpack::object_kv*>(o.zone.allocate_align(sizeof(msgpack::object_kv)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
+ msgpack::object_kv* const pend = p + size;
+ o.via.map.ptr = p;
+ o.via.map.size = size;
+ typename MSGPACK_STD_TR1::unordered_multimap<K, V, Hash, Pred, Alloc>::const_iterator it(v.begin());
+ do {
+ p->key = msgpack::object(it->first, o.zone);
+ p->val = msgpack::object(it->second, o.zone);
+ ++p;
+ ++it;
+ } while(p < pend);
+ }
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#undef MSGPACK_STD_TR1
+
+#endif // MSGPACK_STD_TR1
+
+#endif // MSGPACK_TYPE_TR1_UNORDERED_MAP_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/tr1/unordered_set.hpp b/third_party/msgpack/include/msgpack/adaptor/tr1/unordered_set.hpp
new file mode 100644
index 0000000000..dd6c0448fc
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/tr1/unordered_set.hpp
@@ -0,0 +1,165 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2015 FURUHASHI Sadayuki
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_TR1_UNORDERED_SET_HPP
+#define MSGPACK_TYPE_TR1_UNORDERED_SET_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+
+#if defined(_LIBCPP_VERSION) || (_MSC_VER >= 1700)
+
+#define MSGPACK_HAS_STD_UNORDERED_SET
+#include <unordered_set>
+#define MSGPACK_STD_TR1 std
+
+#else // defined(_LIBCPP_VERSION) || (_MSC_VER >= 1700)
+
+#if __GNUC__ >= 4
+
+#define MSGPACK_HAS_STD_TR1_UNORDERED_SET
+
+#include <tr1/unordered_set>
+#define MSGPACK_STD_TR1 std::tr1
+
+#endif // __GNUC__ >= 4
+
+#endif // defined(_LIBCPP_VERSION) || (_MSC_VER >= 1700)
+
+#if defined(MSGPACK_STD_TR1)
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+template <typename T, typename Hash, typename Compare, typename Alloc>
+struct convert<MSGPACK_STD_TR1::unordered_set<T, Hash, Compare, Alloc> > {
+ msgpack::object const& operator()(msgpack::object const& o, MSGPACK_STD_TR1::unordered_set<T, Hash, Compare, Alloc>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ msgpack::object* p = o.via.array.ptr + o.via.array.size;
+ msgpack::object* const pbegin = o.via.array.ptr;
+ MSGPACK_STD_TR1::unordered_set<T, Hash, Compare, Alloc> tmp;
+ while(p > pbegin) {
+ --p;
+ tmp.insert(p->as<T>());
+ }
+ tmp.swap(v);
+ return o;
+ }
+};
+
+template <typename T, typename Hash, typename Compare, typename Alloc>
+struct pack<MSGPACK_STD_TR1::unordered_set<T, Hash, Compare, Alloc> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const MSGPACK_STD_TR1::unordered_set<T, Hash, Compare, Alloc>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_array(size);
+ for(typename MSGPACK_STD_TR1::unordered_set<T, Hash, Compare, Alloc>::const_iterator it(v.begin()), it_end(v.end());
+ it != it_end; ++it) {
+ o.pack(*it);
+ }
+ return o;
+ }
+};
+
+template <typename T, typename Hash, typename Compare, typename Alloc>
+struct object_with_zone<MSGPACK_STD_TR1::unordered_set<T, Hash, Compare, Alloc> > {
+ void operator()(msgpack::object::with_zone& o, const MSGPACK_STD_TR1::unordered_set<T, Hash, Compare, Alloc>& v) const {
+ o.type = msgpack::type::ARRAY;
+ if(v.empty()) {
+ o.via.array.ptr = MSGPACK_NULLPTR;
+ o.via.array.size = 0;
+ } else {
+ uint32_t size = checked_get_container_size(v.size());
+ msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ msgpack::object* const pend = p + size;
+ o.via.array.ptr = p;
+ o.via.array.size = size;
+ typename MSGPACK_STD_TR1::unordered_set<T, Hash, Compare, Alloc>::const_iterator it(v.begin());
+ do {
+ *p = msgpack::object(*it, o.zone);
+ ++p;
+ ++it;
+ } while(p < pend);
+ }
+ }
+};
+
+
+template <typename T, typename Hash, typename Compare, typename Alloc>
+struct convert<MSGPACK_STD_TR1::unordered_multiset<T, Hash, Compare, Alloc> > {
+ msgpack::object const& operator()(msgpack::object const& o, MSGPACK_STD_TR1::unordered_multiset<T, Hash, Compare, Alloc>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ msgpack::object* p = o.via.array.ptr + o.via.array.size;
+ msgpack::object* const pbegin = o.via.array.ptr;
+ MSGPACK_STD_TR1::unordered_multiset<T, Hash, Compare, Alloc> tmp;
+ while(p > pbegin) {
+ --p;
+ tmp.insert(p->as<T>());
+ }
+ tmp.swap(v);
+ return o;
+ }
+};
+
+template <typename T, typename Hash, typename Compare, typename Alloc>
+struct pack<MSGPACK_STD_TR1::unordered_multiset<T, Hash, Compare, Alloc> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const MSGPACK_STD_TR1::unordered_multiset<T, Hash, Compare, Alloc>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_array(size);
+ for(typename MSGPACK_STD_TR1::unordered_multiset<T, Hash, Compare, Alloc>::const_iterator it(v.begin()), it_end(v.end());
+ it != it_end; ++it) {
+ o.pack(*it);
+ }
+ return o;
+ }
+};
+
+template <typename T, typename Hash, typename Compare, typename Alloc>
+struct object_with_zone<MSGPACK_STD_TR1::unordered_multiset<T, Hash, Compare, Alloc> > {
+ void operator()(msgpack::object::with_zone& o, const MSGPACK_STD_TR1::unordered_multiset<T, Hash, Compare, Alloc>& v) const {
+ o.type = msgpack::type::ARRAY;
+ if(v.empty()) {
+ o.via.array.ptr = MSGPACK_NULLPTR;
+ o.via.array.size = 0;
+ } else {
+ uint32_t size = checked_get_container_size(v.size());
+ msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ msgpack::object* const pend = p + size;
+ o.via.array.ptr = p;
+ o.via.array.size = size;
+ typename MSGPACK_STD_TR1::unordered_multiset<T, Hash, Compare, Alloc>::const_iterator it(v.begin());
+ do {
+ *p = msgpack::object(*it, o.zone);
+ ++p;
+ ++it;
+ } while(p < pend);
+ }
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#undef MSGPACK_STD_TR1
+
+#endif // MSGPACK_STD_TR1
+
+#endif // MSGPACK_TYPE_TR1_UNORDERED_SET_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/v4raw.hpp b/third_party/msgpack/include/msgpack/adaptor/v4raw.hpp
new file mode 100644
index 0000000000..52c0de37ee
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/v4raw.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_V4RAW_HPP
+#define MSGPACK_TYPE_V4RAW_HPP
+
+#include "msgpack/adaptor/v4raw_decl.hpp"
+
+#include "msgpack/v1/adaptor/v4raw.hpp"
+
+#endif // MSGPACK_TYPE_V4RAW_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/v4raw_decl.hpp b/third_party/msgpack/include/msgpack/adaptor/v4raw_decl.hpp
new file mode 100644
index 0000000000..9893518322
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/v4raw_decl.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_V4RAW_DECL_HPP
+#define MSGPACK_TYPE_V4RAW_DECL_HPP
+
+#include "msgpack/v1/adaptor/v4raw_decl.hpp"
+#include "msgpack/v2/adaptor/v4raw_decl.hpp"
+#include "msgpack/v3/adaptor/v4raw_decl.hpp"
+
+#endif // MSGPACK_TYPE_V4RAW_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/vector.hpp b/third_party/msgpack/include/msgpack/adaptor/vector.hpp
new file mode 100644
index 0000000000..5eb6caca01
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/vector.hpp
@@ -0,0 +1,15 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_VECTOR_HPP
+#define MSGPACK_TYPE_VECTOR_HPP
+
+#include "msgpack/v1/adaptor/vector.hpp"
+
+#endif // MSGPACK_TYPE_VECTOR_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/vector_bool.hpp b/third_party/msgpack/include/msgpack/adaptor/vector_bool.hpp
new file mode 100644
index 0000000000..f259ac9b82
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/vector_bool.hpp
@@ -0,0 +1,15 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_VECTOR_BOOL_HPP
+#define MSGPACK_TYPE_VECTOR_BOOL_HPP
+
+#include "msgpack/v1/adaptor/vector_bool.hpp"
+
+#endif // MSGPACK_TYPE_VECTOR_BOOL_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/vector_char.hpp b/third_party/msgpack/include/msgpack/adaptor/vector_char.hpp
new file mode 100644
index 0000000000..d196efa4d9
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/vector_char.hpp
@@ -0,0 +1,15 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_VECTOR_CHAR_HPP
+#define MSGPACK_TYPE_VECTOR_CHAR_HPP
+
+#include "msgpack/v1/adaptor/vector_char.hpp"
+
+#endif // MSGPACK_TYPE_VECTOR_CHAR_HPP
diff --git a/third_party/msgpack/include/msgpack/adaptor/vector_unsigned_char.hpp b/third_party/msgpack/include/msgpack/adaptor/vector_unsigned_char.hpp
new file mode 100644
index 0000000000..e71e0d369a
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/adaptor/vector_unsigned_char.hpp
@@ -0,0 +1,15 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_VECTOR_UNSIGNED_CHAR_HPP
+#define MSGPACK_TYPE_VECTOR_UNSIGNED_CHAR_HPP
+
+#include "msgpack/v1/adaptor/vector_unsigned_char.hpp"
+
+#endif // MSGPACK_TYPE_VECTOR_UNSIGNED_CHAR_HPP
diff --git a/third_party/msgpack/include/msgpack/cpp_config.hpp b/third_party/msgpack/include/msgpack/cpp_config.hpp
new file mode 100644
index 0000000000..0b36d7ef08
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/cpp_config.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ C++03/C++11 Adaptation
+//
+// Copyright (C) 2013-2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_CPP_CONFIG_HPP
+#define MSGPACK_CPP_CONFIG_HPP
+
+#include "msgpack/cpp_config_decl.hpp"
+
+#include "msgpack/v1/cpp_config.hpp"
+
+#endif // MSGPACK_CPP_CONFIG_HPP
diff --git a/third_party/msgpack/include/msgpack/cpp_config_decl.hpp b/third_party/msgpack/include/msgpack/cpp_config_decl.hpp
new file mode 100644
index 0000000000..332e2a81f3
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/cpp_config_decl.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ C++03/C++11 Adaptation
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_CPP_CONFIG_DECL_HPP
+#define MSGPACK_CPP_CONFIG_DECL_HPP
+
+#include "msgpack/v1/cpp_config_decl.hpp"
+#include "msgpack/v2/cpp_config_decl.hpp"
+#include "msgpack/v3/cpp_config_decl.hpp"
+
+#endif // MSGPACK_CPP_CONFIG_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/create_object_visitor.hpp b/third_party/msgpack/include/msgpack/create_object_visitor.hpp
new file mode 100644
index 0000000000..40d69974a7
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/create_object_visitor.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_CREATE_OBJECT_VISITOR_HPP
+#define MSGPACK_CREATE_OBJECT_VISITOR_HPP
+
+#include "msgpack/create_object_visitor_decl.hpp"
+
+#include "msgpack/v2/create_object_visitor.hpp"
+
+#endif // MSGPACK_CREATE_OBJECT_VISITOR_HPP
diff --git a/third_party/msgpack/include/msgpack/create_object_visitor_decl.hpp b/third_party/msgpack/include/msgpack/create_object_visitor_decl.hpp
new file mode 100644
index 0000000000..56e81e1bbe
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/create_object_visitor_decl.hpp
@@ -0,0 +1,16 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_CREATE_OBJECT_VISITOR_DECL_HPP
+#define MSGPACK_CREATE_OBJECT_VISITOR_DECL_HPP
+
+#include "msgpack/v2/create_object_visitor_decl.hpp"
+#include "msgpack/v3/create_object_visitor_decl.hpp"
+
+#endif // MSGPACK_CREATE_OBJECT_VISITOR_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/fbuffer.h b/third_party/msgpack/include/msgpack/fbuffer.h
new file mode 100644
index 0000000000..d766c839e6
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/fbuffer.h
@@ -0,0 +1,38 @@
+/*
+ * MessagePack for C FILE* buffer adaptor
+ *
+ * Copyright (C) 2013 Vladimir Volodko
+ *
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ */
+#ifndef MSGPACK_FBUFFER_H
+#define MSGPACK_FBUFFER_H
+
+#include <stdio.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/**
+ * @defgroup msgpack_fbuffer FILE* buffer
+ * @ingroup msgpack_buffer
+ * @{
+ */
+
+static inline int msgpack_fbuffer_write(void* data, const char* buf, size_t len)
+{
+ return (len == fwrite(buf, len, 1, (FILE *)data)) ? 0 : -1;
+}
+
+/** @} */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* msgpack/fbuffer.h */
diff --git a/third_party/msgpack/include/msgpack/fbuffer.hpp b/third_party/msgpack/include/msgpack/fbuffer.hpp
new file mode 100644
index 0000000000..6d51cd541d
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/fbuffer.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ FILE* buffer adaptor
+//
+// Copyright (C) 2013 Vladimir Volodko
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_FBUFFER_HPP
+#define MSGPACK_FBUFFER_HPP
+
+#include "msgpack/fbuffer_decl.hpp"
+
+#include "msgpack/v1/fbuffer.hpp"
+
+#endif // MSGPACK_FBUFFER_HPP
diff --git a/third_party/msgpack/include/msgpack/fbuffer_decl.hpp b/third_party/msgpack/include/msgpack/fbuffer_decl.hpp
new file mode 100644
index 0000000000..d1a5a6a52f
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/fbuffer_decl.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ FILE* buffer adaptor
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_FBUFFER_DECL_HPP
+#define MSGPACK_FBUFFER_DECL_HPP
+
+#include "msgpack/v1/fbuffer_decl.hpp"
+#include "msgpack/v2/fbuffer_decl.hpp"
+#include "msgpack/v3/fbuffer_decl.hpp"
+
+#endif // MSGPACK_FBUFFER_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/gcc_atomic.h b/third_party/msgpack/include/msgpack/gcc_atomic.h
new file mode 100644
index 0000000000..6b1b1a7996
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/gcc_atomic.h
@@ -0,0 +1,25 @@
+/*
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ */
+
+#ifndef MSGPACK_GCC_ATOMIC_H
+#define MSGPACK_GCC_ATOMIC_H
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+typedef int _msgpack_atomic_counter_t;
+
+int _msgpack_sync_decr_and_fetch(volatile _msgpack_atomic_counter_t* ptr);
+int _msgpack_sync_incr_and_fetch(volatile _msgpack_atomic_counter_t* ptr);
+
+
+#if defined(__cplusplus)
+}
+#endif
+
+
+#endif // MSGPACK_GCC_ATOMIC_H
diff --git a/third_party/msgpack/include/msgpack/gcc_atomic.hpp b/third_party/msgpack/include/msgpack/gcc_atomic.hpp
new file mode 100644
index 0000000000..9656e5331b
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/gcc_atomic.hpp
@@ -0,0 +1,31 @@
+//
+// MessagePack for C++ old gcc workaround for atomic operation
+//
+// Copyright (C) 2008-2013 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_GCC_ATOMIC_HPP
+#define MSGPACK_GCC_ATOMIC_HPP
+
+#if defined(__GNUC__) && ((__GNUC__*10 + __GNUC_MINOR__) < 41)
+
+#include "msgpack/gcc_atomic.h"
+#include <bits/atomicity.h>
+
+int _msgpack_sync_decr_and_fetch(volatile _msgpack_atomic_counter_t* ptr)
+{
+ return __gnu_cxx::__exchange_and_add(ptr, -1) - 1;
+}
+
+int _msgpack_sync_incr_and_fetch(volatile _msgpack_atomic_counter_t* ptr)
+{
+ return __gnu_cxx::__exchange_and_add(ptr, 1) + 1;
+}
+
+#endif // old gcc workaround
+
+#endif /* gcc_atomic.hpp */
diff --git a/third_party/msgpack/include/msgpack/iterator.hpp b/third_party/msgpack/include/msgpack/iterator.hpp
new file mode 100644
index 0000000000..a118b59257
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/iterator.hpp
@@ -0,0 +1,18 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015-2016 MIZUKI Hirata
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_ITERATOR_HPP
+#define MSGPACK_ITERATOR_HPP
+
+#include <msgpack/iterator_decl.hpp>
+
+#include <msgpack/v1/iterator.hpp>
+
+#endif // MSGPACK_ITERATOR_HPP
diff --git a/third_party/msgpack/include/msgpack/iterator_decl.hpp b/third_party/msgpack/include/msgpack/iterator_decl.hpp
new file mode 100644
index 0000000000..5bf28cb10e
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/iterator_decl.hpp
@@ -0,0 +1,18 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_ITERATOR_DECL_HPP
+#define MSGPACK_ITERATOR_DECL_HPP
+
+#include <msgpack/v1/iterator_decl.hpp>
+#include <msgpack/v2/iterator_decl.hpp>
+#include <msgpack/v3/iterator_decl.hpp>
+
+#endif // MSGPACK_ITERATOR_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/meta.hpp b/third_party/msgpack/include/msgpack/meta.hpp
new file mode 100644
index 0000000000..7062cc5515
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/meta.hpp
@@ -0,0 +1,18 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015-2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_META_HPP
+#define MSGPACK_META_HPP
+
+#include "msgpack/meta_decl.hpp"
+
+#include "msgpack/v1/meta.hpp"
+
+#endif // MSGPACK_META_HPP
diff --git a/third_party/msgpack/include/msgpack/meta_decl.hpp b/third_party/msgpack/include/msgpack/meta_decl.hpp
new file mode 100644
index 0000000000..54380f8c83
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/meta_decl.hpp
@@ -0,0 +1,18 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015-2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_META_DECL_HPP
+#define MSGPACK_META_DECL_HPP
+
+#include "msgpack/v1/meta_decl.hpp"
+#include "msgpack/v2/meta_decl.hpp"
+#include "msgpack/v3/meta_decl.hpp"
+
+#endif // MSGPACK_META_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/null_visitor.hpp b/third_party/msgpack/include/msgpack/null_visitor.hpp
new file mode 100644
index 0000000000..523d0dd192
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/null_visitor.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_NULL_VISITOR_HPP
+#define MSGPACK_NULL_VISITOR_HPP
+
+#include "msgpack/null_visitor_decl.hpp"
+
+#include "msgpack/v2/null_visitor.hpp"
+
+#endif // MSGPACK_NULL_VISITOR_HPP
diff --git a/third_party/msgpack/include/msgpack/null_visitor_decl.hpp b/third_party/msgpack/include/msgpack/null_visitor_decl.hpp
new file mode 100644
index 0000000000..b398ed245e
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/null_visitor_decl.hpp
@@ -0,0 +1,16 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_NULL_VISITOR_DECL_HPP
+#define MSGPACK_NULL_VISITOR_DECL_HPP
+
+#include "msgpack/v2/null_visitor_decl.hpp"
+#include "msgpack/v3/null_visitor_decl.hpp"
+
+#endif // MSGPACK_NULL_VISITOR_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/object.h b/third_party/msgpack/include/msgpack/object.h
new file mode 100644
index 0000000000..0da280f560
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/object.h
@@ -0,0 +1,116 @@
+/*
+ * MessagePack for C dynamic typing routine
+ *
+ * Copyright (C) 2008-2009 FURUHASHI Sadayuki
+ *
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ */
+#ifndef MSGPACK_OBJECT_H
+#define MSGPACK_OBJECT_H
+
+#include "zone.h"
+#include <stdio.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/**
+ * @defgroup msgpack_object Dynamically typed object
+ * @ingroup msgpack
+ * @{
+ */
+
+typedef enum {
+ MSGPACK_OBJECT_NIL = 0x00,
+ MSGPACK_OBJECT_BOOLEAN = 0x01,
+ MSGPACK_OBJECT_POSITIVE_INTEGER = 0x02,
+ MSGPACK_OBJECT_NEGATIVE_INTEGER = 0x03,
+ MSGPACK_OBJECT_FLOAT32 = 0x0a,
+ MSGPACK_OBJECT_FLOAT64 = 0x04,
+ MSGPACK_OBJECT_FLOAT = 0x04,
+#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
+ MSGPACK_OBJECT_DOUBLE = MSGPACK_OBJECT_FLOAT, /* obsolete */
+#endif /* MSGPACK_USE_LEGACY_NAME_AS_FLOAT */
+ MSGPACK_OBJECT_STR = 0x05,
+ MSGPACK_OBJECT_ARRAY = 0x06,
+ MSGPACK_OBJECT_MAP = 0x07,
+ MSGPACK_OBJECT_BIN = 0x08,
+ MSGPACK_OBJECT_EXT = 0x09
+} msgpack_object_type;
+
+
+struct msgpack_object;
+struct msgpack_object_kv;
+
+typedef struct {
+ uint32_t size;
+ struct msgpack_object* ptr;
+} msgpack_object_array;
+
+typedef struct {
+ uint32_t size;
+ struct msgpack_object_kv* ptr;
+} msgpack_object_map;
+
+typedef struct {
+ uint32_t size;
+ const char* ptr;
+} msgpack_object_str;
+
+typedef struct {
+ uint32_t size;
+ const char* ptr;
+} msgpack_object_bin;
+
+typedef struct {
+ int8_t type;
+ uint32_t size;
+ const char* ptr;
+} msgpack_object_ext;
+
+typedef union {
+ bool boolean;
+ uint64_t u64;
+ int64_t i64;
+#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
+ double dec; /* obsolete*/
+#endif /* MSGPACK_USE_LEGACY_NAME_AS_FLOAT */
+ double f64;
+ msgpack_object_array array;
+ msgpack_object_map map;
+ msgpack_object_str str;
+ msgpack_object_bin bin;
+ msgpack_object_ext ext;
+} msgpack_object_union;
+
+typedef struct msgpack_object {
+ msgpack_object_type type;
+ msgpack_object_union via;
+} msgpack_object;
+
+typedef struct msgpack_object_kv {
+ msgpack_object key;
+ msgpack_object val;
+} msgpack_object_kv;
+
+MSGPACK_DLLEXPORT
+void msgpack_object_print(FILE* out, msgpack_object o);
+
+MSGPACK_DLLEXPORT
+int msgpack_object_print_buffer(char *buffer, size_t buffer_size, msgpack_object o);
+
+MSGPACK_DLLEXPORT
+bool msgpack_object_equal(const msgpack_object x, const msgpack_object y);
+
+/** @} */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* msgpack/object.h */
diff --git a/third_party/msgpack/include/msgpack/object.hpp b/third_party/msgpack/include/msgpack/object.hpp
new file mode 100644
index 0000000000..3279992666
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/object.hpp
@@ -0,0 +1,18 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_OBJECT_HPP
+#define MSGPACK_OBJECT_HPP
+
+#include "msgpack/object_decl.hpp"
+
+#include "msgpack/v1/object.hpp"
+#include "msgpack/v2/object.hpp"
+
+#endif // MSGPACK_OBJECT_HPP
diff --git a/third_party/msgpack/include/msgpack/object_decl.hpp b/third_party/msgpack/include/msgpack/object_decl.hpp
new file mode 100644
index 0000000000..7aab1288da
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/object_decl.hpp
@@ -0,0 +1,18 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_OBJECT_DECL_HPP
+#define MSGPACK_OBJECT_DECL_HPP
+
+#include "msgpack/v1/object_decl.hpp"
+#include "msgpack/v2/object_decl.hpp"
+#include "msgpack/v3/object_decl.hpp"
+
+#endif // MSGPACK_OBJECT_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/object_fwd.hpp b/third_party/msgpack/include/msgpack/object_fwd.hpp
new file mode 100644
index 0000000000..515df9dc6c
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/object_fwd.hpp
@@ -0,0 +1,20 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_OBJECT_FWD_HPP
+#define MSGPACK_OBJECT_FWD_HPP
+
+#include "msgpack/object_fwd_decl.hpp"
+
+#include "msgpack/v1/object_fwd.hpp"
+#include "msgpack/v2/object_fwd.hpp"
+#include "msgpack/v3/object_fwd.hpp"
+
+#endif // MSGPACK_OBJECT_FWD_HPP
diff --git a/third_party/msgpack/include/msgpack/object_fwd_decl.hpp b/third_party/msgpack/include/msgpack/object_fwd_decl.hpp
new file mode 100644
index 0000000000..c933c34516
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/object_fwd_decl.hpp
@@ -0,0 +1,18 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_OBJECT_FWD_DECL_HPP
+#define MSGPACK_OBJECT_FWD_DECL_HPP
+
+#include "msgpack/v1/object_fwd_decl.hpp"
+#include "msgpack/v2/object_fwd_decl.hpp"
+#include "msgpack/v3/object_fwd_decl.hpp"
+
+#endif // MSGPACK_OBJECT_FWD_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/pack.h b/third_party/msgpack/include/msgpack/pack.h
new file mode 100644
index 0000000000..f2dddb3c5f
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/pack.h
@@ -0,0 +1,151 @@
+/*
+ * MessagePack for C packing routine
+ *
+ * Copyright (C) 2008-2009 FURUHASHI Sadayuki
+ *
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ */
+#ifndef MSGPACK_PACK_H
+#define MSGPACK_PACK_H
+
+#include "pack_define.h"
+#include "object.h"
+#include "timestamp.h"
+#include <stdlib.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/**
+ * @defgroup msgpack_buffer Buffers
+ * @ingroup msgpack
+ * @{
+ * @}
+ */
+
+/**
+ * @defgroup msgpack_pack Serializer
+ * @ingroup msgpack
+ * @{
+ */
+
+typedef int (*msgpack_packer_write)(void* data, const char* buf, size_t len);
+
+typedef struct msgpack_packer {
+ void* data;
+ msgpack_packer_write callback;
+} msgpack_packer;
+
+static void msgpack_packer_init(msgpack_packer* pk, void* data, msgpack_packer_write callback);
+
+static msgpack_packer* msgpack_packer_new(void* data, msgpack_packer_write callback);
+static void msgpack_packer_free(msgpack_packer* pk);
+
+static int msgpack_pack_char(msgpack_packer* pk, char d);
+
+static int msgpack_pack_signed_char(msgpack_packer* pk, signed char d);
+static int msgpack_pack_short(msgpack_packer* pk, short d);
+static int msgpack_pack_int(msgpack_packer* pk, int d);
+static int msgpack_pack_long(msgpack_packer* pk, long d);
+static int msgpack_pack_long_long(msgpack_packer* pk, long long d);
+static int msgpack_pack_unsigned_char(msgpack_packer* pk, unsigned char d);
+static int msgpack_pack_unsigned_short(msgpack_packer* pk, unsigned short d);
+static int msgpack_pack_unsigned_int(msgpack_packer* pk, unsigned int d);
+static int msgpack_pack_unsigned_long(msgpack_packer* pk, unsigned long d);
+static int msgpack_pack_unsigned_long_long(msgpack_packer* pk, unsigned long long d);
+
+static int msgpack_pack_uint8(msgpack_packer* pk, uint8_t d);
+static int msgpack_pack_uint16(msgpack_packer* pk, uint16_t d);
+static int msgpack_pack_uint32(msgpack_packer* pk, uint32_t d);
+static int msgpack_pack_uint64(msgpack_packer* pk, uint64_t d);
+static int msgpack_pack_int8(msgpack_packer* pk, int8_t d);
+static int msgpack_pack_int16(msgpack_packer* pk, int16_t d);
+static int msgpack_pack_int32(msgpack_packer* pk, int32_t d);
+static int msgpack_pack_int64(msgpack_packer* pk, int64_t d);
+
+static int msgpack_pack_fix_uint8(msgpack_packer* pk, uint8_t d);
+static int msgpack_pack_fix_uint16(msgpack_packer* pk, uint16_t d);
+static int msgpack_pack_fix_uint32(msgpack_packer* pk, uint32_t d);
+static int msgpack_pack_fix_uint64(msgpack_packer* pk, uint64_t d);
+static int msgpack_pack_fix_int8(msgpack_packer* pk, int8_t d);
+static int msgpack_pack_fix_int16(msgpack_packer* pk, int16_t d);
+static int msgpack_pack_fix_int32(msgpack_packer* pk, int32_t d);
+static int msgpack_pack_fix_int64(msgpack_packer* pk, int64_t d);
+
+static int msgpack_pack_float(msgpack_packer* pk, float d);
+static int msgpack_pack_double(msgpack_packer* pk, double d);
+
+static int msgpack_pack_nil(msgpack_packer* pk);
+static int msgpack_pack_true(msgpack_packer* pk);
+static int msgpack_pack_false(msgpack_packer* pk);
+
+static int msgpack_pack_array(msgpack_packer* pk, size_t n);
+
+static int msgpack_pack_map(msgpack_packer* pk, size_t n);
+
+static int msgpack_pack_str(msgpack_packer* pk, size_t l);
+static int msgpack_pack_str_body(msgpack_packer* pk, const void* b, size_t l);
+
+static int msgpack_pack_v4raw(msgpack_packer* pk, size_t l);
+static int msgpack_pack_v4raw_body(msgpack_packer* pk, const void* b, size_t l);
+
+static int msgpack_pack_bin(msgpack_packer* pk, size_t l);
+static int msgpack_pack_bin_body(msgpack_packer* pk, const void* b, size_t l);
+
+static int msgpack_pack_ext(msgpack_packer* pk, size_t l, int8_t type);
+static int msgpack_pack_ext_body(msgpack_packer* pk, const void* b, size_t l);
+
+static int msgpack_pack_timestamp(msgpack_packer* pk, const msgpack_timestamp* d);
+
+MSGPACK_DLLEXPORT
+int msgpack_pack_object(msgpack_packer* pk, msgpack_object d);
+
+
+/** @} */
+
+
+#define msgpack_pack_inline_func(name) \
+ inline int msgpack_pack ## name
+
+#define msgpack_pack_inline_func_cint(name) \
+ inline int msgpack_pack ## name
+
+#define msgpack_pack_inline_func_fixint(name) \
+ inline int msgpack_pack_fix ## name
+
+#define msgpack_pack_user msgpack_packer*
+
+#define msgpack_pack_append_buffer(user, buf, len) \
+ return (*(user)->callback)((user)->data, (const char*)buf, len)
+
+#include "pack_template.h"
+
+inline void msgpack_packer_init(msgpack_packer* pk, void* data, msgpack_packer_write callback)
+{
+ pk->data = data;
+ pk->callback = callback;
+}
+
+inline msgpack_packer* msgpack_packer_new(void* data, msgpack_packer_write callback)
+{
+ msgpack_packer* pk = (msgpack_packer*)calloc(1, sizeof(msgpack_packer));
+ if(!pk) { return NULL; }
+ msgpack_packer_init(pk, data, callback);
+ return pk;
+}
+
+inline void msgpack_packer_free(msgpack_packer* pk)
+{
+ free(pk);
+}
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* msgpack/pack.h */
diff --git a/third_party/msgpack/include/msgpack/pack.hpp b/third_party/msgpack/include/msgpack/pack.hpp
new file mode 100644
index 0000000000..518b457848
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/pack.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ serializing routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_PACK_HPP
+#define MSGPACK_PACK_HPP
+
+#include "msgpack/pack_decl.hpp"
+
+#include "msgpack/v1/pack.hpp"
+
+#endif // MSGPACK_PACK_HPP
diff --git a/third_party/msgpack/include/msgpack/pack_decl.hpp b/third_party/msgpack/include/msgpack/pack_decl.hpp
new file mode 100644
index 0000000000..5aaec94a85
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/pack_decl.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ serializing routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_PACK_DECL_HPP
+#define MSGPACK_PACK_DECL_HPP
+
+#include "msgpack/v1/pack_decl.hpp"
+#include "msgpack/v2/pack_decl.hpp"
+#include "msgpack/v3/pack_decl.hpp"
+
+#endif // MSGPACK_PACK_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/pack_define.h b/third_party/msgpack/include/msgpack/pack_define.h
new file mode 100644
index 0000000000..ce98b67558
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/pack_define.h
@@ -0,0 +1,18 @@
+/*
+ * MessagePack unpacking routine template
+ *
+ * Copyright (C) 2008-2010 FURUHASHI Sadayuki
+ *
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ */
+#ifndef MSGPACK_PACK_DEFINE_H
+#define MSGPACK_PACK_DEFINE_H
+
+#include "msgpack/sysdep.h"
+#include <limits.h>
+#include <string.h>
+
+#endif /* msgpack/pack_define.h */
+
diff --git a/third_party/msgpack/include/msgpack/pack_template.h b/third_party/msgpack/include/msgpack/pack_template.h
new file mode 100644
index 0000000000..5e2313cb2d
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/pack_template.h
@@ -0,0 +1,937 @@
+/*
+ * MessagePack packing routine template
+ *
+ * Copyright (C) 2008-2010 FURUHASHI Sadayuki
+ *
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ */
+
+#if MSGPACK_ENDIAN_LITTLE_BYTE
+#define TAKE8_8(d) ((uint8_t*)&d)[0]
+#define TAKE8_16(d) ((uint8_t*)&d)[0]
+#define TAKE8_32(d) ((uint8_t*)&d)[0]
+#define TAKE8_64(d) ((uint8_t*)&d)[0]
+#elif MSGPACK_ENDIAN_BIG_BYTE
+#define TAKE8_8(d) ((uint8_t*)&d)[0]
+#define TAKE8_16(d) ((uint8_t*)&d)[1]
+#define TAKE8_32(d) ((uint8_t*)&d)[3]
+#define TAKE8_64(d) ((uint8_t*)&d)[7]
+#else
+#error msgpack-c supports only big endian and little endian
+#endif
+
+#ifndef msgpack_pack_inline_func
+#error msgpack_pack_inline_func template is not defined
+#endif
+
+#ifndef msgpack_pack_user
+#error msgpack_pack_user type is not defined
+#endif
+
+#ifndef msgpack_pack_append_buffer
+#error msgpack_pack_append_buffer callback is not defined
+#endif
+
+
+/*
+ * Integer
+ */
+
+#define msgpack_pack_real_uint8(x, d) \
+do { \
+ if(d < (1<<7)) { \
+ /* fixnum */ \
+ msgpack_pack_append_buffer(x, &TAKE8_8(d), 1); \
+ } else { \
+ /* unsigned 8 */ \
+ unsigned char buf[2] = {0xcc, TAKE8_8(d)}; \
+ msgpack_pack_append_buffer(x, buf, 2); \
+ } \
+} while(0)
+
+#define msgpack_pack_real_uint16(x, d) \
+do { \
+ if(d < (1<<7)) { \
+ /* fixnum */ \
+ msgpack_pack_append_buffer(x, &TAKE8_16(d), 1); \
+ } else if(d < (1<<8)) { \
+ /* unsigned 8 */ \
+ unsigned char buf[2] = {0xcc, TAKE8_16(d)}; \
+ msgpack_pack_append_buffer(x, buf, 2); \
+ } else { \
+ /* unsigned 16 */ \
+ unsigned char buf[3]; \
+ buf[0] = 0xcd; _msgpack_store16(&buf[1], (uint16_t)d); \
+ msgpack_pack_append_buffer(x, buf, 3); \
+ } \
+} while(0)
+
+#define msgpack_pack_real_uint32(x, d) \
+do { \
+ if(d < (1<<8)) { \
+ if(d < (1<<7)) { \
+ /* fixnum */ \
+ msgpack_pack_append_buffer(x, &TAKE8_32(d), 1); \
+ } else { \
+ /* unsigned 8 */ \
+ unsigned char buf[2] = {0xcc, TAKE8_32(d)}; \
+ msgpack_pack_append_buffer(x, buf, 2); \
+ } \
+ } else { \
+ if(d < (1<<16)) { \
+ /* unsigned 16 */ \
+ unsigned char buf[3]; \
+ buf[0] = 0xcd; _msgpack_store16(&buf[1], (uint16_t)d); \
+ msgpack_pack_append_buffer(x, buf, 3); \
+ } else { \
+ /* unsigned 32 */ \
+ unsigned char buf[5]; \
+ buf[0] = 0xce; _msgpack_store32(&buf[1], (uint32_t)d); \
+ msgpack_pack_append_buffer(x, buf, 5); \
+ } \
+ } \
+} while(0)
+
+#define msgpack_pack_real_uint64(x, d) \
+do { \
+ if(d < (1ULL<<8)) { \
+ if(d < (1ULL<<7)) { \
+ /* fixnum */ \
+ msgpack_pack_append_buffer(x, &TAKE8_64(d), 1); \
+ } else { \
+ /* unsigned 8 */ \
+ unsigned char buf[2] = {0xcc, TAKE8_64(d)}; \
+ msgpack_pack_append_buffer(x, buf, 2); \
+ } \
+ } else { \
+ if(d < (1ULL<<16)) { \
+ /* unsigned 16 */ \
+ unsigned char buf[3]; \
+ buf[0] = 0xcd; _msgpack_store16(&buf[1], (uint16_t)d); \
+ msgpack_pack_append_buffer(x, buf, 3); \
+ } else if(d < (1ULL<<32)) { \
+ /* unsigned 32 */ \
+ unsigned char buf[5]; \
+ buf[0] = 0xce; _msgpack_store32(&buf[1], (uint32_t)d); \
+ msgpack_pack_append_buffer(x, buf, 5); \
+ } else { \
+ /* unsigned 64 */ \
+ unsigned char buf[9]; \
+ buf[0] = 0xcf; _msgpack_store64(&buf[1], d); \
+ msgpack_pack_append_buffer(x, buf, 9); \
+ } \
+ } \
+} while(0)
+
+#define msgpack_pack_real_int8(x, d) \
+do { \
+ if(d < -(1<<5)) { \
+ /* signed 8 */ \
+ unsigned char buf[2] = {0xd0, TAKE8_8(d)}; \
+ msgpack_pack_append_buffer(x, buf, 2); \
+ } else { \
+ /* fixnum */ \
+ msgpack_pack_append_buffer(x, &TAKE8_8(d), 1); \
+ } \
+} while(0)
+
+#define msgpack_pack_real_int16(x, d) \
+do { \
+ if(d < -(1<<5)) { \
+ if(d < -(1<<7)) { \
+ /* signed 16 */ \
+ unsigned char buf[3]; \
+ buf[0] = 0xd1; _msgpack_store16(&buf[1], (int16_t)d); \
+ msgpack_pack_append_buffer(x, buf, 3); \
+ } else { \
+ /* signed 8 */ \
+ unsigned char buf[2] = {0xd0, TAKE8_16(d)}; \
+ msgpack_pack_append_buffer(x, buf, 2); \
+ } \
+ } else if(d < (1<<7)) { \
+ /* fixnum */ \
+ msgpack_pack_append_buffer(x, &TAKE8_16(d), 1); \
+ } else { \
+ if(d < (1<<8)) { \
+ /* unsigned 8 */ \
+ unsigned char buf[2] = {0xcc, TAKE8_16(d)}; \
+ msgpack_pack_append_buffer(x, buf, 2); \
+ } else { \
+ /* unsigned 16 */ \
+ unsigned char buf[3]; \
+ buf[0] = 0xcd; _msgpack_store16(&buf[1], (uint16_t)d); \
+ msgpack_pack_append_buffer(x, buf, 3); \
+ } \
+ } \
+} while(0)
+
+#define msgpack_pack_real_int32(x, d) \
+do { \
+ if(d < -(1<<5)) { \
+ if(d < -(1<<15)) { \
+ /* signed 32 */ \
+ unsigned char buf[5]; \
+ buf[0] = 0xd2; _msgpack_store32(&buf[1], (int32_t)d); \
+ msgpack_pack_append_buffer(x, buf, 5); \
+ } else if(d < -(1<<7)) { \
+ /* signed 16 */ \
+ unsigned char buf[3]; \
+ buf[0] = 0xd1; _msgpack_store16(&buf[1], (int16_t)d); \
+ msgpack_pack_append_buffer(x, buf, 3); \
+ } else { \
+ /* signed 8 */ \
+ unsigned char buf[2] = {0xd0, TAKE8_32(d)}; \
+ msgpack_pack_append_buffer(x, buf, 2); \
+ } \
+ } else if(d < (1<<7)) { \
+ /* fixnum */ \
+ msgpack_pack_append_buffer(x, &TAKE8_32(d), 1); \
+ } else { \
+ if(d < (1<<8)) { \
+ /* unsigned 8 */ \
+ unsigned char buf[2] = {0xcc, TAKE8_32(d)}; \
+ msgpack_pack_append_buffer(x, buf, 2); \
+ } else if(d < (1<<16)) { \
+ /* unsigned 16 */ \
+ unsigned char buf[3]; \
+ buf[0] = 0xcd; _msgpack_store16(&buf[1], (uint16_t)d); \
+ msgpack_pack_append_buffer(x, buf, 3); \
+ } else { \
+ /* unsigned 32 */ \
+ unsigned char buf[5]; \
+ buf[0] = 0xce; _msgpack_store32(&buf[1], (uint32_t)d); \
+ msgpack_pack_append_buffer(x, buf, 5); \
+ } \
+ } \
+} while(0)
+
+#define msgpack_pack_real_int64(x, d) \
+do { \
+ if(d < -(1LL<<5)) { \
+ if(d < -(1LL<<15)) { \
+ if(d < -(1LL<<31)) { \
+ /* signed 64 */ \
+ unsigned char buf[9]; \
+ buf[0] = 0xd3; _msgpack_store64(&buf[1], d); \
+ msgpack_pack_append_buffer(x, buf, 9); \
+ } else { \
+ /* signed 32 */ \
+ unsigned char buf[5]; \
+ buf[0] = 0xd2; _msgpack_store32(&buf[1], (int32_t)d); \
+ msgpack_pack_append_buffer(x, buf, 5); \
+ } \
+ } else { \
+ if(d < -(1<<7)) { \
+ /* signed 16 */ \
+ unsigned char buf[3]; \
+ buf[0] = 0xd1; _msgpack_store16(&buf[1], (int16_t)d); \
+ msgpack_pack_append_buffer(x, buf, 3); \
+ } else { \
+ /* signed 8 */ \
+ unsigned char buf[2] = {0xd0, TAKE8_64(d)}; \
+ msgpack_pack_append_buffer(x, buf, 2); \
+ } \
+ } \
+ } else if(d < (1<<7)) { \
+ /* fixnum */ \
+ msgpack_pack_append_buffer(x, &TAKE8_64(d), 1); \
+ } else { \
+ if(d < (1LL<<16)) { \
+ if(d < (1<<8)) { \
+ /* unsigned 8 */ \
+ unsigned char buf[2] = {0xcc, TAKE8_64(d)}; \
+ msgpack_pack_append_buffer(x, buf, 2); \
+ } else { \
+ /* unsigned 16 */ \
+ unsigned char buf[3]; \
+ buf[0] = 0xcd; _msgpack_store16(&buf[1], (uint16_t)d); \
+ msgpack_pack_append_buffer(x, buf, 3); \
+ } \
+ } else { \
+ if(d < (1LL<<32)) { \
+ /* unsigned 32 */ \
+ unsigned char buf[5]; \
+ buf[0] = 0xce; _msgpack_store32(&buf[1], (uint32_t)d); \
+ msgpack_pack_append_buffer(x, buf, 5); \
+ } else { \
+ /* unsigned 64 */ \
+ unsigned char buf[9]; \
+ buf[0] = 0xcf; _msgpack_store64(&buf[1], d); \
+ msgpack_pack_append_buffer(x, buf, 9); \
+ } \
+ } \
+ } \
+} while(0)
+
+
+#ifdef msgpack_pack_inline_func_fixint
+
+msgpack_pack_inline_func_fixint(_uint8)(msgpack_pack_user x, uint8_t d)
+{
+ unsigned char buf[2] = {0xcc, TAKE8_8(d)};
+ msgpack_pack_append_buffer(x, buf, 2);
+}
+
+msgpack_pack_inline_func_fixint(_uint16)(msgpack_pack_user x, uint16_t d)
+{
+ unsigned char buf[3];
+ buf[0] = 0xcd; _msgpack_store16(&buf[1], d);
+ msgpack_pack_append_buffer(x, buf, 3);
+}
+
+msgpack_pack_inline_func_fixint(_uint32)(msgpack_pack_user x, uint32_t d)
+{
+ unsigned char buf[5];
+ buf[0] = 0xce; _msgpack_store32(&buf[1], d);
+ msgpack_pack_append_buffer(x, buf, 5);
+}
+
+msgpack_pack_inline_func_fixint(_uint64)(msgpack_pack_user x, uint64_t d)
+{
+ unsigned char buf[9];
+ buf[0] = 0xcf; _msgpack_store64(&buf[1], d);
+ msgpack_pack_append_buffer(x, buf, 9);
+}
+
+msgpack_pack_inline_func_fixint(_int8)(msgpack_pack_user x, int8_t d)
+{
+ unsigned char buf[2] = {0xd0, TAKE8_8(d)};
+ msgpack_pack_append_buffer(x, buf, 2);
+}
+
+msgpack_pack_inline_func_fixint(_int16)(msgpack_pack_user x, int16_t d)
+{
+ unsigned char buf[3];
+ buf[0] = 0xd1; _msgpack_store16(&buf[1], d);
+ msgpack_pack_append_buffer(x, buf, 3);
+}
+
+msgpack_pack_inline_func_fixint(_int32)(msgpack_pack_user x, int32_t d)
+{
+ unsigned char buf[5];
+ buf[0] = 0xd2; _msgpack_store32(&buf[1], d);
+ msgpack_pack_append_buffer(x, buf, 5);
+}
+
+msgpack_pack_inline_func_fixint(_int64)(msgpack_pack_user x, int64_t d)
+{
+ unsigned char buf[9];
+ buf[0] = 0xd3; _msgpack_store64(&buf[1], d);
+ msgpack_pack_append_buffer(x, buf, 9);
+}
+
+#undef msgpack_pack_inline_func_fixint
+#endif
+
+
+msgpack_pack_inline_func(_uint8)(msgpack_pack_user x, uint8_t d)
+{
+ msgpack_pack_real_uint8(x, d);
+}
+
+msgpack_pack_inline_func(_uint16)(msgpack_pack_user x, uint16_t d)
+{
+ msgpack_pack_real_uint16(x, d);
+}
+
+msgpack_pack_inline_func(_uint32)(msgpack_pack_user x, uint32_t d)
+{
+ msgpack_pack_real_uint32(x, d);
+}
+
+msgpack_pack_inline_func(_uint64)(msgpack_pack_user x, uint64_t d)
+{
+ msgpack_pack_real_uint64(x, d);
+}
+
+msgpack_pack_inline_func(_int8)(msgpack_pack_user x, int8_t d)
+{
+ msgpack_pack_real_int8(x, d);
+}
+
+msgpack_pack_inline_func(_int16)(msgpack_pack_user x, int16_t d)
+{
+ msgpack_pack_real_int16(x, d);
+}
+
+msgpack_pack_inline_func(_int32)(msgpack_pack_user x, int32_t d)
+{
+ msgpack_pack_real_int32(x, d);
+}
+
+msgpack_pack_inline_func(_int64)(msgpack_pack_user x, int64_t d)
+{
+ msgpack_pack_real_int64(x, d);
+}
+
+msgpack_pack_inline_func(_char)(msgpack_pack_user x, char d)
+{
+#if defined(CHAR_MIN)
+#if CHAR_MIN < 0
+ msgpack_pack_real_int8(x, d);
+#else
+ msgpack_pack_real_uint8(x, d);
+#endif
+#else
+#error CHAR_MIN is not defined
+#endif
+}
+
+msgpack_pack_inline_func(_signed_char)(msgpack_pack_user x, signed char d)
+{
+ msgpack_pack_real_int8(x, d);
+}
+
+msgpack_pack_inline_func(_unsigned_char)(msgpack_pack_user x, unsigned char d)
+{
+ msgpack_pack_real_uint8(x, d);
+}
+
+#ifdef msgpack_pack_inline_func_cint
+
+msgpack_pack_inline_func_cint(_short)(msgpack_pack_user x, short d)
+{
+#if defined(SIZEOF_SHORT)
+#if SIZEOF_SHORT == 2
+ msgpack_pack_real_int16(x, d);
+#elif SIZEOF_SHORT == 4
+ msgpack_pack_real_int32(x, d);
+#else
+ msgpack_pack_real_int64(x, d);
+#endif
+
+#elif defined(SHRT_MAX)
+#if SHRT_MAX == 0x7fff
+ msgpack_pack_real_int16(x, d);
+#elif SHRT_MAX == 0x7fffffff
+ msgpack_pack_real_int32(x, d);
+#else
+ msgpack_pack_real_int64(x, d);
+#endif
+
+#else
+if(sizeof(short) == 2) {
+ msgpack_pack_real_int16(x, d);
+} else if(sizeof(short) == 4) {
+ msgpack_pack_real_int32(x, d);
+} else {
+ msgpack_pack_real_int64(x, d);
+}
+#endif
+}
+
+msgpack_pack_inline_func_cint(_int)(msgpack_pack_user x, int d)
+{
+#if defined(SIZEOF_INT)
+#if SIZEOF_INT == 2
+ msgpack_pack_real_int16(x, d);
+#elif SIZEOF_INT == 4
+ msgpack_pack_real_int32(x, d);
+#else
+ msgpack_pack_real_int64(x, d);
+#endif
+
+#elif defined(INT_MAX)
+#if INT_MAX == 0x7fff
+ msgpack_pack_real_int16(x, d);
+#elif INT_MAX == 0x7fffffff
+ msgpack_pack_real_int32(x, d);
+#else
+ msgpack_pack_real_int64(x, d);
+#endif
+
+#else
+if(sizeof(int) == 2) {
+ msgpack_pack_real_int16(x, d);
+} else if(sizeof(int) == 4) {
+ msgpack_pack_real_int32(x, d);
+} else {
+ msgpack_pack_real_int64(x, d);
+}
+#endif
+}
+
+msgpack_pack_inline_func_cint(_long)(msgpack_pack_user x, long d)
+{
+#if defined(SIZEOF_LONG)
+#if SIZEOF_LONG == 2
+ msgpack_pack_real_int16(x, d);
+#elif SIZEOF_LONG == 4
+ msgpack_pack_real_int32(x, d);
+#else
+ msgpack_pack_real_int64(x, d);
+#endif
+
+#elif defined(LONG_MAX)
+#if LONG_MAX == 0x7fffL
+ msgpack_pack_real_int16(x, d);
+#elif LONG_MAX == 0x7fffffffL
+ msgpack_pack_real_int32(x, d);
+#else
+ msgpack_pack_real_int64(x, d);
+#endif
+
+#else
+if(sizeof(long) == 2) {
+ msgpack_pack_real_int16(x, d);
+} else if(sizeof(long) == 4) {
+ msgpack_pack_real_int32(x, d);
+} else {
+ msgpack_pack_real_int64(x, d);
+}
+#endif
+}
+
+msgpack_pack_inline_func_cint(_long_long)(msgpack_pack_user x, long long d)
+{
+#if defined(SIZEOF_LONG_LONG)
+#if SIZEOF_LONG_LONG == 2
+ msgpack_pack_real_int16(x, d);
+#elif SIZEOF_LONG_LONG == 4
+ msgpack_pack_real_int32(x, d);
+#else
+ msgpack_pack_real_int64(x, d);
+#endif
+
+#elif defined(LLONG_MAX)
+#if LLONG_MAX == 0x7fffL
+ msgpack_pack_real_int16(x, d);
+#elif LLONG_MAX == 0x7fffffffL
+ msgpack_pack_real_int32(x, d);
+#else
+ msgpack_pack_real_int64(x, d);
+#endif
+
+#else
+if(sizeof(long long) == 2) {
+ msgpack_pack_real_int16(x, d);
+} else if(sizeof(long long) == 4) {
+ msgpack_pack_real_int32(x, d);
+} else {
+ msgpack_pack_real_int64(x, d);
+}
+#endif
+}
+
+msgpack_pack_inline_func_cint(_unsigned_short)(msgpack_pack_user x, unsigned short d)
+{
+#if defined(SIZEOF_SHORT)
+#if SIZEOF_SHORT == 2
+ msgpack_pack_real_uint16(x, d);
+#elif SIZEOF_SHORT == 4
+ msgpack_pack_real_uint32(x, d);
+#else
+ msgpack_pack_real_uint64(x, d);
+#endif
+
+#elif defined(USHRT_MAX)
+#if USHRT_MAX == 0xffffU
+ msgpack_pack_real_uint16(x, d);
+#elif USHRT_MAX == 0xffffffffU
+ msgpack_pack_real_uint32(x, d);
+#else
+ msgpack_pack_real_uint64(x, d);
+#endif
+
+#else
+if(sizeof(unsigned short) == 2) {
+ msgpack_pack_real_uint16(x, d);
+} else if(sizeof(unsigned short) == 4) {
+ msgpack_pack_real_uint32(x, d);
+} else {
+ msgpack_pack_real_uint64(x, d);
+}
+#endif
+}
+
+msgpack_pack_inline_func_cint(_unsigned_int)(msgpack_pack_user x, unsigned int d)
+{
+#if defined(SIZEOF_INT)
+#if SIZEOF_INT == 2
+ msgpack_pack_real_uint16(x, d);
+#elif SIZEOF_INT == 4
+ msgpack_pack_real_uint32(x, d);
+#else
+ msgpack_pack_real_uint64(x, d);
+#endif
+
+#elif defined(UINT_MAX)
+#if UINT_MAX == 0xffffU
+ msgpack_pack_real_uint16(x, d);
+#elif UINT_MAX == 0xffffffffU
+ msgpack_pack_real_uint32(x, d);
+#else
+ msgpack_pack_real_uint64(x, d);
+#endif
+
+#else
+if(sizeof(unsigned int) == 2) {
+ msgpack_pack_real_uint16(x, d);
+} else if(sizeof(unsigned int) == 4) {
+ msgpack_pack_real_uint32(x, d);
+} else {
+ msgpack_pack_real_uint64(x, d);
+}
+#endif
+}
+
+msgpack_pack_inline_func_cint(_unsigned_long)(msgpack_pack_user x, unsigned long d)
+{
+#if defined(SIZEOF_LONG)
+#if SIZEOF_LONG == 2
+ msgpack_pack_real_uint16(x, d);
+#elif SIZEOF_LONG == 4
+ msgpack_pack_real_uint32(x, d);
+#else
+ msgpack_pack_real_uint64(x, d);
+#endif
+
+#elif defined(ULONG_MAX)
+#if ULONG_MAX == 0xffffUL
+ msgpack_pack_real_uint16(x, d);
+#elif ULONG_MAX == 0xffffffffUL
+ msgpack_pack_real_uint32(x, d);
+#else
+ msgpack_pack_real_uint64(x, d);
+#endif
+
+#else
+if(sizeof(unsigned long) == 2) {
+ msgpack_pack_real_uint16(x, d);
+} else if(sizeof(unsigned long) == 4) {
+ msgpack_pack_real_uint32(x, d);
+} else {
+ msgpack_pack_real_uint64(x, d);
+}
+#endif
+}
+
+msgpack_pack_inline_func_cint(_unsigned_long_long)(msgpack_pack_user x, unsigned long long d)
+{
+#if defined(SIZEOF_LONG_LONG)
+#if SIZEOF_LONG_LONG == 2
+ msgpack_pack_real_uint16(x, d);
+#elif SIZEOF_LONG_LONG == 4
+ msgpack_pack_real_uint32(x, d);
+#else
+ msgpack_pack_real_uint64(x, d);
+#endif
+
+#elif defined(ULLONG_MAX)
+#if ULLONG_MAX == 0xffffUL
+ msgpack_pack_real_uint16(x, d);
+#elif ULLONG_MAX == 0xffffffffUL
+ msgpack_pack_real_uint32(x, d);
+#else
+ msgpack_pack_real_uint64(x, d);
+#endif
+
+#else
+if(sizeof(unsigned long long) == 2) {
+ msgpack_pack_real_uint16(x, d);
+} else if(sizeof(unsigned long long) == 4) {
+ msgpack_pack_real_uint32(x, d);
+} else {
+ msgpack_pack_real_uint64(x, d);
+}
+#endif
+}
+
+#undef msgpack_pack_inline_func_cint
+#endif
+
+
+
+/*
+ * Float
+ */
+
+msgpack_pack_inline_func(_float)(msgpack_pack_user x, float d)
+{
+ unsigned char buf[5];
+ union { float f; uint32_t i; } mem;
+ mem.f = d;
+ buf[0] = 0xca; _msgpack_store32(&buf[1], mem.i);
+ msgpack_pack_append_buffer(x, buf, 5);
+}
+
+msgpack_pack_inline_func(_double)(msgpack_pack_user x, double d)
+{
+ unsigned char buf[9];
+ union { double f; uint64_t i; } mem;
+ mem.f = d;
+ buf[0] = 0xcb;
+#if defined(TARGET_OS_IPHONE)
+ // ok
+#elif defined(__arm__) && !(__ARM_EABI__) // arm-oabi
+ // https://github.com/msgpack/msgpack-perl/pull/1
+ mem.i = (mem.i & 0xFFFFFFFFUL) << 32UL | (mem.i >> 32UL);
+#endif
+ _msgpack_store64(&buf[1], mem.i);
+ msgpack_pack_append_buffer(x, buf, 9);
+}
+
+
+/*
+ * Nil
+ */
+
+msgpack_pack_inline_func(_nil)(msgpack_pack_user x)
+{
+ static const unsigned char d = 0xc0;
+ msgpack_pack_append_buffer(x, &d, 1);
+}
+
+
+/*
+ * Boolean
+ */
+
+msgpack_pack_inline_func(_true)(msgpack_pack_user x)
+{
+ static const unsigned char d = 0xc3;
+ msgpack_pack_append_buffer(x, &d, 1);
+}
+
+msgpack_pack_inline_func(_false)(msgpack_pack_user x)
+{
+ static const unsigned char d = 0xc2;
+ msgpack_pack_append_buffer(x, &d, 1);
+}
+
+
+/*
+ * Array
+ */
+
+msgpack_pack_inline_func(_array)(msgpack_pack_user x, size_t n)
+{
+ if(n < 16) {
+ unsigned char d = 0x90 | (uint8_t)n;
+ msgpack_pack_append_buffer(x, &d, 1);
+ } else if(n < 65536) {
+ unsigned char buf[3];
+ buf[0] = 0xdc; _msgpack_store16(&buf[1], (uint16_t)n);
+ msgpack_pack_append_buffer(x, buf, 3);
+ } else {
+ unsigned char buf[5];
+ buf[0] = 0xdd; _msgpack_store32(&buf[1], (uint32_t)n);
+ msgpack_pack_append_buffer(x, buf, 5);
+ }
+}
+
+
+/*
+ * Map
+ */
+
+msgpack_pack_inline_func(_map)(msgpack_pack_user x, size_t n)
+{
+ if(n < 16) {
+ unsigned char d = 0x80 | (uint8_t)n;
+ msgpack_pack_append_buffer(x, &TAKE8_8(d), 1);
+ } else if(n < 65536) {
+ unsigned char buf[3];
+ buf[0] = 0xde; _msgpack_store16(&buf[1], (uint16_t)n);
+ msgpack_pack_append_buffer(x, buf, 3);
+ } else {
+ unsigned char buf[5];
+ buf[0] = 0xdf; _msgpack_store32(&buf[1], (uint32_t)n);
+ msgpack_pack_append_buffer(x, buf, 5);
+ }
+}
+
+
+/*
+ * Str
+ */
+
+msgpack_pack_inline_func(_str)(msgpack_pack_user x, size_t l)
+{
+ if(l < 32) {
+ unsigned char d = 0xa0 | (uint8_t)l;
+ msgpack_pack_append_buffer(x, &TAKE8_8(d), 1);
+ } else if(l < 256) {
+ unsigned char buf[2];
+ buf[0] = 0xd9; buf[1] = (uint8_t)l;
+ msgpack_pack_append_buffer(x, buf, 2);
+ } else if(l < 65536) {
+ unsigned char buf[3];
+ buf[0] = 0xda; _msgpack_store16(&buf[1], (uint16_t)l);
+ msgpack_pack_append_buffer(x, buf, 3);
+ } else {
+ unsigned char buf[5];
+ buf[0] = 0xdb; _msgpack_store32(&buf[1], (uint32_t)l);
+ msgpack_pack_append_buffer(x, buf, 5);
+ }
+}
+
+msgpack_pack_inline_func(_str_body)(msgpack_pack_user x, const void* b, size_t l)
+{
+ msgpack_pack_append_buffer(x, (const unsigned char*)b, l);
+}
+
+/*
+ * Raw (V4)
+ */
+
+msgpack_pack_inline_func(_v4raw)(msgpack_pack_user x, size_t l)
+{
+ if(l < 32) {
+ unsigned char d = 0xa0 | (uint8_t)l;
+ msgpack_pack_append_buffer(x, &TAKE8_8(d), 1);
+ } else if(l < 65536) {
+ unsigned char buf[3];
+ buf[0] = 0xda; _msgpack_store16(&buf[1], (uint16_t)l);
+ msgpack_pack_append_buffer(x, buf, 3);
+ } else {
+ unsigned char buf[5];
+ buf[0] = 0xdb; _msgpack_store32(&buf[1], (uint32_t)l);
+ msgpack_pack_append_buffer(x, buf, 5);
+ }
+}
+
+msgpack_pack_inline_func(_v4raw_body)(msgpack_pack_user x, const void* b, size_t l)
+{
+ msgpack_pack_append_buffer(x, (const unsigned char*)b, l);
+}
+
+/*
+ * Bin
+ */
+
+msgpack_pack_inline_func(_bin)(msgpack_pack_user x, size_t l)
+{
+ if(l < 256) {
+ unsigned char buf[2];
+ buf[0] = 0xc4; buf[1] = (uint8_t)l;
+ msgpack_pack_append_buffer(x, buf, 2);
+ } else if(l < 65536) {
+ unsigned char buf[3];
+ buf[0] = 0xc5; _msgpack_store16(&buf[1], (uint16_t)l);
+ msgpack_pack_append_buffer(x, buf, 3);
+ } else {
+ unsigned char buf[5];
+ buf[0] = 0xc6; _msgpack_store32(&buf[1], (uint32_t)l);
+ msgpack_pack_append_buffer(x, buf, 5);
+ }
+}
+
+msgpack_pack_inline_func(_bin_body)(msgpack_pack_user x, const void* b, size_t l)
+{
+ msgpack_pack_append_buffer(x, (const unsigned char*)b, l);
+}
+
+/*
+ * Ext
+ */
+
+msgpack_pack_inline_func(_ext)(msgpack_pack_user x, size_t l, int8_t type)
+{
+ switch(l) {
+ case 1: {
+ unsigned char buf[2];
+ buf[0] = 0xd4;
+ buf[1] = type;
+ msgpack_pack_append_buffer(x, buf, 2);
+ } break;
+ case 2: {
+ unsigned char buf[2];
+ buf[0] = 0xd5;
+ buf[1] = type;
+ msgpack_pack_append_buffer(x, buf, 2);
+ } break;
+ case 4: {
+ unsigned char buf[2];
+ buf[0] = 0xd6;
+ buf[1] = type;
+ msgpack_pack_append_buffer(x, buf, 2);
+ } break;
+ case 8: {
+ unsigned char buf[2];
+ buf[0] = 0xd7;
+ buf[1] = type;
+ msgpack_pack_append_buffer(x, buf, 2);
+ } break;
+ case 16: {
+ unsigned char buf[2];
+ buf[0] = 0xd8;
+ buf[1] = type;
+ msgpack_pack_append_buffer(x, buf, 2);
+ } break;
+ default:
+ if(l < 256) {
+ unsigned char buf[3];
+ buf[0] = 0xc7;
+ buf[1] = (unsigned char)l;
+ buf[2] = type;
+ msgpack_pack_append_buffer(x, buf, 3);
+ } else if(l < 65536) {
+ unsigned char buf[4];
+ buf[0] = 0xc8;
+ _msgpack_store16(&buf[1], l);
+ buf[3] = type;
+ msgpack_pack_append_buffer(x, buf, 4);
+ } else {
+ unsigned char buf[6];
+ buf[0] = 0xc9;
+ _msgpack_store32(&buf[1], l);
+ buf[5] = type;
+ msgpack_pack_append_buffer(x, buf, 6);
+ }
+ break;
+ }
+}
+
+msgpack_pack_inline_func(_ext_body)(msgpack_pack_user x, const void* b, size_t l)
+{
+ msgpack_pack_append_buffer(x, (const unsigned char*)b, l);
+}
+
+msgpack_pack_inline_func(_timestamp)(msgpack_pack_user x, const msgpack_timestamp* d)
+{
+ if ((((int64_t)d->tv_sec) >> 34) == 0) {
+ uint64_t data64 = ((uint64_t) d->tv_nsec << 34) | d->tv_sec;
+ if ((data64 & 0xffffffff00000000L) == 0) {
+ // timestamp 32
+ char buf[4];
+ uint32_t data32 = (uint32_t)data64;
+ msgpack_pack_ext(x, 4, -1);
+ _msgpack_store32(buf, data32);
+ msgpack_pack_append_buffer(x, buf, 4);
+ } else {
+ // timestamp 64
+ char buf[8];
+ msgpack_pack_ext(x, 8, -1);
+ _msgpack_store64(buf, data64);
+ msgpack_pack_append_buffer(x, buf, 8);
+ }
+ } else {
+ // timestamp 96
+ char buf[12];
+ _msgpack_store32(&buf[0], d->tv_nsec);
+ _msgpack_store64(&buf[4], d->tv_sec);
+ msgpack_pack_ext(x, 12, -1);
+ msgpack_pack_append_buffer(x, buf, 12);
+ }
+}
+
+#undef msgpack_pack_inline_func
+#undef msgpack_pack_user
+#undef msgpack_pack_append_buffer
+
+#undef TAKE8_8
+#undef TAKE8_16
+#undef TAKE8_32
+#undef TAKE8_64
+
+#undef msgpack_pack_real_uint8
+#undef msgpack_pack_real_uint16
+#undef msgpack_pack_real_uint32
+#undef msgpack_pack_real_uint64
+#undef msgpack_pack_real_int8
+#undef msgpack_pack_real_int16
+#undef msgpack_pack_real_int32
+#undef msgpack_pack_real_int64
diff --git a/third_party/msgpack/include/msgpack/parse.hpp b/third_party/msgpack/include/msgpack/parse.hpp
new file mode 100644
index 0000000000..90e140276f
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/parse.hpp
@@ -0,0 +1,18 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_PARSE_HPP
+#define MSGPACK_PARSE_HPP
+
+#include "msgpack/parse_decl.hpp"
+
+#include "msgpack/v2/parse.hpp"
+#include "msgpack/v3/parse.hpp"
+
+#endif // MSGPACK_PARSE_HPP
diff --git a/third_party/msgpack/include/msgpack/parse_decl.hpp b/third_party/msgpack/include/msgpack/parse_decl.hpp
new file mode 100644
index 0000000000..381aa1a4ff
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/parse_decl.hpp
@@ -0,0 +1,16 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_PARSE_DECL_HPP
+#define MSGPACK_PARSE_DECL_HPP
+
+#include "msgpack/v2/parse_decl.hpp"
+#include "msgpack/v3/parse_decl.hpp"
+
+#endif // MSGPACK_PARSE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/parse_return.hpp b/third_party/msgpack/include/msgpack/parse_return.hpp
new file mode 100644
index 0000000000..c06d1891ad
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/parse_return.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2017 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_PARSE_RETURN_HPP
+#define MSGPACK_PARSE_RETURN_HPP
+
+#include "msgpack/v1/parse_return.hpp"
+#include "msgpack/v2/parse_return.hpp"
+#include "msgpack/v3/parse_return.hpp"
+
+#endif // MSGPACK_PARSE_RETURN_HPP
diff --git a/third_party/msgpack/include/msgpack/predef.h b/third_party/msgpack/include/msgpack/predef.h
new file mode 100644
index 0000000000..0f8d5f5895
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef.h
@@ -0,0 +1,24 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#if !defined(MSGPACK_PREDEF_H) || defined(MSGPACK_PREDEF_INTERNAL_GENERATE_TESTS)
+#ifndef MSGPACK_PREDEF_H
+#define MSGPACK_PREDEF_H
+#endif
+
+#include <msgpack/predef/language.h>
+#include <msgpack/predef/architecture.h>
+#include <msgpack/predef/compiler.h>
+#include <msgpack/predef/library.h>
+#include <msgpack/predef/os.h>
+#include <msgpack/predef/other.h>
+#include <msgpack/predef/platform.h>
+#include <msgpack/predef/hardware.h>
+
+#include <msgpack/predef/version.h>
+
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/architecture.h b/third_party/msgpack/include/msgpack/predef/architecture.h
new file mode 100644
index 0000000000..63879a032f
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/architecture.h
@@ -0,0 +1,32 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#if !defined(MSGPACK_PREDEF_ARCHITECTURE_H) || defined(MSGPACK_PREDEF_INTERNAL_GENERATE_TESTS)
+#ifndef MSGPACK_PREDEF_ARCHITECTURE_H
+#define MSGPACK_PREDEF_ARCHITECTURE_H
+#endif
+
+#include <msgpack/predef/architecture/alpha.h>
+#include <msgpack/predef/architecture/arm.h>
+#include <msgpack/predef/architecture/blackfin.h>
+#include <msgpack/predef/architecture/convex.h>
+#include <msgpack/predef/architecture/ia64.h>
+#include <msgpack/predef/architecture/m68k.h>
+#include <msgpack/predef/architecture/mips.h>
+#include <msgpack/predef/architecture/parisc.h>
+#include <msgpack/predef/architecture/ppc.h>
+#include <msgpack/predef/architecture/pyramid.h>
+#include <msgpack/predef/architecture/rs6k.h>
+#include <msgpack/predef/architecture/sparc.h>
+#include <msgpack/predef/architecture/superh.h>
+#include <msgpack/predef/architecture/sys370.h>
+#include <msgpack/predef/architecture/sys390.h>
+#include <msgpack/predef/architecture/x86.h>
+#include <msgpack/predef/architecture/z.h>
+/*#include <msgpack/predef/architecture/.h>*/
+
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/architecture/alpha.h b/third_party/msgpack/include/msgpack/predef/architecture/alpha.h
new file mode 100644
index 0000000000..e1a39d0e13
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/architecture/alpha.h
@@ -0,0 +1,59 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_ARCHITECTURE_ALPHA_H
+#define MSGPACK_PREDEF_ARCHITECTURE_ALPHA_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_ARCH_ALPHA`]
+
+[@http://en.wikipedia.org/wiki/DEC_Alpha DEC Alpha] architecture.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+ [[`__alpha__`] [__predef_detection__]]
+ [[`__alpha`] [__predef_detection__]]
+ [[`_M_ALPHA`] [__predef_detection__]]
+
+ [[`__alpha_ev4__`] [4.0.0]]
+ [[`__alpha_ev5__`] [5.0.0]]
+ [[`__alpha_ev6__`] [6.0.0]]
+ ]
+ */
+
+#define MSGPACK_ARCH_ALPHA MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__alpha__) || defined(__alpha) || \
+ defined(_M_ALPHA)
+# undef MSGPACK_ARCH_ALPHA
+# if !defined(MSGPACK_ARCH_ALPHA) && defined(__alpha_ev4__)
+# define MSGPACK_ARCH_ALPHA MSGPACK_VERSION_NUMBER(4,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_ALPHA) && defined(__alpha_ev5__)
+# define MSGPACK_ARCH_ALPHA MSGPACK_VERSION_NUMBER(5,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_ALPHA) && defined(__alpha_ev6__)
+# define MSGPACK_ARCH_ALPHA MSGPACK_VERSION_NUMBER(6,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_ALPHA)
+# define MSGPACK_ARCH_ALPHA MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if MSGPACK_ARCH_ALPHA
+# define MSGPACK_ARCH_ALPHA_AVAILABLE
+#endif
+
+#define MSGPACK_ARCH_ALPHA_NAME "DEC Alpha"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_ARCH_ALPHA,MSGPACK_ARCH_ALPHA_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/architecture/arm.h b/third_party/msgpack/include/msgpack/predef/architecture/arm.h
new file mode 100644
index 0000000000..c37f2d1306
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/architecture/arm.h
@@ -0,0 +1,70 @@
+/*
+Copyright Rene Rivera 2008-2015
+Copyright Franz Detro 2014
+Copyright (c) Microsoft Corporation 2014
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_ARCHITECTURE_ARM_H
+#define MSGPACK_PREDEF_ARCHITECTURE_ARM_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_ARCH_ARM`]
+
+[@http://en.wikipedia.org/wiki/ARM_architecture ARM] architecture.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__arm__`] [__predef_detection__]]
+ [[`__arm64`] [__predef_detection__]]
+ [[`__thumb__`] [__predef_detection__]]
+ [[`__TARGET_ARCH_ARM`] [__predef_detection__]]
+ [[`__TARGET_ARCH_THUMB`] [__predef_detection__]]
+ [[`_M_ARM`] [__predef_detection__]]
+
+ [[`__arm64`] [8.0.0]]
+ [[`__TARGET_ARCH_ARM`] [V.0.0]]
+ [[`__TARGET_ARCH_THUMB`] [V.0.0]]
+ [[`_M_ARM`] [V.0.0]]
+ ]
+ */
+
+#define MSGPACK_ARCH_ARM MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__arm__) || defined(__arm64) || defined(__thumb__) || \
+ defined(__TARGET_ARCH_ARM) || defined(__TARGET_ARCH_THUMB) || \
+ defined(_M_ARM)
+# undef MSGPACK_ARCH_ARM
+# if !defined(MSGPACK_ARCH_ARM) && defined(__arm64)
+# define MSGPACK_ARCH_ARM MSGPACK_VERSION_NUMBER(8,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_ARM) && defined(__TARGET_ARCH_ARM)
+# define MSGPACK_ARCH_ARM MSGPACK_VERSION_NUMBER(__TARGET_ARCH_ARM,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_ARM) && defined(__TARGET_ARCH_THUMB)
+# define MSGPACK_ARCH_ARM MSGPACK_VERSION_NUMBER(__TARGET_ARCH_THUMB,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_ARM) && defined(_M_ARM)
+# define MSGPACK_ARCH_ARM MSGPACK_VERSION_NUMBER(_M_ARM,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_ARM)
+# define MSGPACK_ARCH_ARM MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if MSGPACK_ARCH_ARM
+# define MSGPACK_ARCH_ARM_AVAILABLE
+#endif
+
+#define MSGPACK_ARCH_ARM_NAME "ARM"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_ARCH_ARM,MSGPACK_ARCH_ARM_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/architecture/blackfin.h b/third_party/msgpack/include/msgpack/predef/architecture/blackfin.h
new file mode 100644
index 0000000000..c3e580d87e
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/architecture/blackfin.h
@@ -0,0 +1,46 @@
+/*
+Copyright Rene Rivera 2013-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_ARCHITECTURE_BLACKFIN_H
+#define MSGPACK_PREDEF_ARCHITECTURE_BLACKFIN_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_ARCH_BLACKFIN`]
+
+Blackfin Processors from Analog Devices.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__bfin__`] [__predef_detection__]]
+ [[`__BFIN__`] [__predef_detection__]]
+ [[`bfin`] [__predef_detection__]]
+ [[`BFIN`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_ARCH_BLACKFIN MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__bfin__) || defined(__BFIN__) || \
+ defined(bfin) || defined(BFIN)
+# undef MSGPACK_ARCH_BLACKFIN
+# define MSGPACK_ARCH_BLACKFIN MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if MSGPACK_ARCH_BLACKFIN
+# define MSGPACK_ARCH_BLACKFIN_AVAILABLE
+#endif
+
+#define MSGPACK_ARCH_BLACKFIN_NAME "Blackfin"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_ARCH_BLACKFIN,MSGPACK_ARCH_BLACKFIN_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/architecture/convex.h b/third_party/msgpack/include/msgpack/predef/architecture/convex.h
new file mode 100644
index 0000000000..6509ffd2a4
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/architecture/convex.h
@@ -0,0 +1,65 @@
+/*
+Copyright Rene Rivera 2011-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_ARCHITECTURE_CONVEX_H
+#define MSGPACK_PREDEF_ARCHITECTURE_CONVEX_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_ARCH_CONVEX`]
+
+[@http://en.wikipedia.org/wiki/Convex_Computer Convex Computer] architecture.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__convex__`] [__predef_detection__]]
+
+ [[`__convex_c1__`] [1.0.0]]
+ [[`__convex_c2__`] [2.0.0]]
+ [[`__convex_c32__`] [3.2.0]]
+ [[`__convex_c34__`] [3.4.0]]
+ [[`__convex_c38__`] [3.8.0]]
+ ]
+ */
+
+#define MSGPACK_ARCH_CONVEX MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__convex__)
+# undef MSGPACK_ARCH_CONVEX
+# if !defined(MSGPACK_ARCH_CONVEX) && defined(__convex_c1__)
+# define MSGPACK_ARCH_CONVEX MSGPACK_VERSION_NUMBER(1,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_CONVEX) && defined(__convex_c2__)
+# define MSGPACK_ARCH_CONVEX MSGPACK_VERSION_NUMBER(2,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_CONVEX) && defined(__convex_c32__)
+# define MSGPACK_ARCH_CONVEX MSGPACK_VERSION_NUMBER(3,2,0)
+# endif
+# if !defined(MSGPACK_ARCH_CONVEX) && defined(__convex_c34__)
+# define MSGPACK_ARCH_CONVEX MSGPACK_VERSION_NUMBER(3,4,0)
+# endif
+# if !defined(MSGPACK_ARCH_CONVEX) && defined(__convex_c38__)
+# define MSGPACK_ARCH_CONVEX MSGPACK_VERSION_NUMBER(3,8,0)
+# endif
+# if !defined(MSGPACK_ARCH_CONVEX)
+# define MSGPACK_ARCH_CONVEX MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if MSGPACK_ARCH_CONVEX
+# define MSGPACK_ARCH_CONVEX_AVAILABLE
+#endif
+
+#define MSGPACK_ARCH_CONVEX_NAME "Convex Computer"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_ARCH_CONVEX,MSGPACK_ARCH_CONVEX_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/architecture/ia64.h b/third_party/msgpack/include/msgpack/predef/architecture/ia64.h
new file mode 100644
index 0000000000..f6a0da03df
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/architecture/ia64.h
@@ -0,0 +1,49 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_ARCHITECTURE_IA64_H
+#define MSGPACK_PREDEF_ARCHITECTURE_IA64_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_ARCH_IA64`]
+
+[@http://en.wikipedia.org/wiki/Ia64 Intel Itanium 64] architecture.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__ia64__`] [__predef_detection__]]
+ [[`_IA64`] [__predef_detection__]]
+ [[`__IA64__`] [__predef_detection__]]
+ [[`__ia64`] [__predef_detection__]]
+ [[`_M_IA64`] [__predef_detection__]]
+ [[`__itanium__`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_ARCH_IA64 MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__ia64__) || defined(_IA64) || \
+ defined(__IA64__) || defined(__ia64) || \
+ defined(_M_IA64) || defined(__itanium__)
+# undef MSGPACK_ARCH_IA64
+# define MSGPACK_ARCH_IA64 MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if MSGPACK_ARCH_IA64
+# define MSGPACK_ARCH_IA64_AVAILABLE
+#endif
+
+#define MSGPACK_ARCH_IA64_NAME "Intel Itanium 64"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_ARCH_IA64,MSGPACK_ARCH_IA64_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/architecture/m68k.h b/third_party/msgpack/include/msgpack/predef/architecture/m68k.h
new file mode 100644
index 0000000000..0112a47358
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/architecture/m68k.h
@@ -0,0 +1,82 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_ARCHITECTURE_M68K_H
+#define MSGPACK_PREDEF_ARCHITECTURE_M68K_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_ARCH_M68K`]
+
+[@http://en.wikipedia.org/wiki/M68k Motorola 68k] architecture.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__m68k__`] [__predef_detection__]]
+ [[`M68000`] [__predef_detection__]]
+
+ [[`__mc68060__`] [6.0.0]]
+ [[`mc68060`] [6.0.0]]
+ [[`__mc68060`] [6.0.0]]
+ [[`__mc68040__`] [4.0.0]]
+ [[`mc68040`] [4.0.0]]
+ [[`__mc68040`] [4.0.0]]
+ [[`__mc68030__`] [3.0.0]]
+ [[`mc68030`] [3.0.0]]
+ [[`__mc68030`] [3.0.0]]
+ [[`__mc68020__`] [2.0.0]]
+ [[`mc68020`] [2.0.0]]
+ [[`__mc68020`] [2.0.0]]
+ [[`__mc68010__`] [1.0.0]]
+ [[`mc68010`] [1.0.0]]
+ [[`__mc68010`] [1.0.0]]
+ [[`__mc68000__`] [0.0.1]]
+ [[`mc68000`] [0.0.1]]
+ [[`__mc68000`] [0.0.1]]
+ ]
+ */
+
+#define MSGPACK_ARCH_M68K MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__m68k__) || defined(M68000)
+# undef MSGPACK_ARCH_M68K
+# if !defined(MSGPACK_ARCH_M68K) && (defined(__mc68060__) || defined(mc68060) || defined(__mc68060))
+# define MSGPACK_ARCH_M68K MSGPACK_VERSION_NUMBER(6,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_M68K) && (defined(__mc68040__) || defined(mc68040) || defined(__mc68040))
+# define MSGPACK_ARCH_M68K MSGPACK_VERSION_NUMBER(4,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_M68K) && (defined(__mc68030__) || defined(mc68030) || defined(__mc68030))
+# define MSGPACK_ARCH_M68K MSGPACK_VERSION_NUMBER(3,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_M68K) && (defined(__mc68020__) || defined(mc68020) || defined(__mc68020))
+# define MSGPACK_ARCH_M68K MSGPACK_VERSION_NUMBER(2,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_M68K) && (defined(__mc68010__) || defined(mc68010) || defined(__mc68010))
+# define MSGPACK_ARCH_M68K MSGPACK_VERSION_NUMBER(1,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_M68K) && (defined(__mc68000__) || defined(mc68000) || defined(__mc68000))
+# define MSGPACK_ARCH_M68K MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+# if !defined(MSGPACK_ARCH_M68K)
+# define MSGPACK_ARCH_M68K MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if MSGPACK_ARCH_M68K
+# define MSGPACK_ARCH_M68K_AVAILABLE
+#endif
+
+#define MSGPACK_ARCH_M68K_NAME "Motorola 68k"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_ARCH_M68K,MSGPACK_ARCH_M68K_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/architecture/mips.h b/third_party/msgpack/include/msgpack/predef/architecture/mips.h
new file mode 100644
index 0000000000..c83021a658
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/architecture/mips.h
@@ -0,0 +1,73 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_ARCHITECTURE_MIPS_H
+#define MSGPACK_PREDEF_ARCHITECTURE_MIPS_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_ARCH_MIPS`]
+
+[@http://en.wikipedia.org/wiki/MIPS_architecture MIPS] architecture.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__mips__`] [__predef_detection__]]
+ [[`__mips`] [__predef_detection__]]
+ [[`__MIPS__`] [__predef_detection__]]
+
+ [[`__mips`] [V.0.0]]
+ [[`_MIPS_ISA_MIPS1`] [1.0.0]]
+ [[`_R3000`] [1.0.0]]
+ [[`_MIPS_ISA_MIPS2`] [2.0.0]]
+ [[`__MIPS_ISA2__`] [2.0.0]]
+ [[`_R4000`] [2.0.0]]
+ [[`_MIPS_ISA_MIPS3`] [3.0.0]]
+ [[`__MIPS_ISA3__`] [3.0.0]]
+ [[`_MIPS_ISA_MIPS4`] [4.0.0]]
+ [[`__MIPS_ISA4__`] [4.0.0]]
+ ]
+ */
+
+#define MSGPACK_ARCH_MIPS MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__mips__) || defined(__mips) || \
+ defined(__MIPS__)
+# undef MSGPACK_ARCH_MIPS
+# if !defined(MSGPACK_ARCH_MIPS) && (defined(__mips))
+# define MSGPACK_ARCH_MIPS MSGPACK_VERSION_NUMBER(__mips,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_MIPS) && (defined(_MIPS_ISA_MIPS1) || defined(_R3000))
+# define MSGPACK_ARCH_MIPS MSGPACK_VERSION_NUMBER(1,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_MIPS) && (defined(_MIPS_ISA_MIPS2) || defined(__MIPS_ISA2__) || defined(_R4000))
+# define MSGPACK_ARCH_MIPS MSGPACK_VERSION_NUMBER(2,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_MIPS) && (defined(_MIPS_ISA_MIPS3) || defined(__MIPS_ISA3__))
+# define MSGPACK_ARCH_MIPS MSGPACK_VERSION_NUMBER(3,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_MIPS) && (defined(_MIPS_ISA_MIPS4) || defined(__MIPS_ISA4__))
+# define MSGPACK_ARCH_MIPS MSGPACK_VERSION_NUMBER(4,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_MIPS)
+# define MSGPACK_ARCH_MIPS MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if MSGPACK_ARCH_MIPS
+# define MSGPACK_ARCH_MIPS_AVAILABLE
+#endif
+
+#define MSGPACK_ARCH_MIPS_NAME "MIPS"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_ARCH_MIPS,MSGPACK_ARCH_MIPS_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/architecture/parisc.h b/third_party/msgpack/include/msgpack/predef/architecture/parisc.h
new file mode 100644
index 0000000000..bbd8aa1624
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/architecture/parisc.h
@@ -0,0 +1,64 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_ARCHITECTURE_PARISC_H
+#define MSGPACK_PREDEF_ARCHITECTURE_PARISC_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_ARCH_PARISK`]
+
+[@http://en.wikipedia.org/wiki/PA-RISC_family HP/PA RISC] architecture.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__hppa__`] [__predef_detection__]]
+ [[`__hppa`] [__predef_detection__]]
+ [[`__HPPA__`] [__predef_detection__]]
+
+ [[`_PA_RISC1_0`] [1.0.0]]
+ [[`_PA_RISC1_1`] [1.1.0]]
+ [[`__HPPA11__`] [1.1.0]]
+ [[`__PA7100__`] [1.1.0]]
+ [[`_PA_RISC2_0`] [2.0.0]]
+ [[`__RISC2_0__`] [2.0.0]]
+ [[`__HPPA20__`] [2.0.0]]
+ [[`__PA8000__`] [2.0.0]]
+ ]
+ */
+
+#define MSGPACK_ARCH_PARISC MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__hppa__) || defined(__hppa) || defined(__HPPA__)
+# undef MSGPACK_ARCH_PARISC
+# if !defined(MSGPACK_ARCH_PARISC) && (defined(_PA_RISC1_0))
+# define MSGPACK_ARCH_PARISC MSGPACK_VERSION_NUMBER(1,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_PARISC) && (defined(_PA_RISC1_1) || defined(__HPPA11__) || defined(__PA7100__))
+# define MSGPACK_ARCH_PARISC MSGPACK_VERSION_NUMBER(1,1,0)
+# endif
+# if !defined(MSGPACK_ARCH_PARISC) && (defined(_PA_RISC2_0) || defined(__RISC2_0__) || defined(__HPPA20__) || defined(__PA8000__))
+# define MSGPACK_ARCH_PARISC MSGPACK_VERSION_NUMBER(2,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_PARISC)
+# define MSGPACK_ARCH_PARISC MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if MSGPACK_ARCH_PARISC
+# define MSGPACK_ARCH_PARISC_AVAILABLE
+#endif
+
+#define MSGPACK_ARCH_PARISC_NAME "HP/PA RISC"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_ARCH_PARISC,MSGPACK_ARCH_PARISC_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/architecture/ppc.h b/third_party/msgpack/include/msgpack/predef/architecture/ppc.h
new file mode 100644
index 0000000000..29cad9298b
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/architecture/ppc.h
@@ -0,0 +1,72 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_ARCHITECTURE_PPC_H
+#define MSGPACK_PREDEF_ARCHITECTURE_PPC_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_ARCH_PPC`]
+
+[@http://en.wikipedia.org/wiki/PowerPC PowerPC] architecture.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__powerpc`] [__predef_detection__]]
+ [[`__powerpc__`] [__predef_detection__]]
+ [[`__POWERPC__`] [__predef_detection__]]
+ [[`__ppc__`] [__predef_detection__]]
+ [[`_M_PPC`] [__predef_detection__]]
+ [[`_ARCH_PPC`] [__predef_detection__]]
+ [[`__PPCGECKO__`] [__predef_detection__]]
+ [[`__PPCBROADWAY__`] [__predef_detection__]]
+ [[`_XENON`] [__predef_detection__]]
+
+ [[`__ppc601__`] [6.1.0]]
+ [[`_ARCH_601`] [6.1.0]]
+ [[`__ppc603__`] [6.3.0]]
+ [[`_ARCH_603`] [6.3.0]]
+ [[`__ppc604__`] [6.4.0]]
+ [[`__ppc604__`] [6.4.0]]
+ ]
+ */
+
+#define MSGPACK_ARCH_PPC MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__powerpc) || defined(__powerpc__) || \
+ defined(__POWERPC__) || defined(__ppc__) || \
+ defined(_M_PPC) || defined(_ARCH_PPC) || \
+ defined(__PPCGECKO__) || defined(__PPCBROADWAY__) || \
+ defined(_XENON)
+# undef MSGPACK_ARCH_PPC
+# if !defined (MSGPACK_ARCH_PPC) && (defined(__ppc601__) || defined(_ARCH_601))
+# define MSGPACK_ARCH_PPC MSGPACK_VERSION_NUMBER(6,1,0)
+# endif
+# if !defined (MSGPACK_ARCH_PPC) && (defined(__ppc603__) || defined(_ARCH_603))
+# define MSGPACK_ARCH_PPC MSGPACK_VERSION_NUMBER(6,3,0)
+# endif
+# if !defined (MSGPACK_ARCH_PPC) && (defined(__ppc604__) || defined(__ppc604__))
+# define MSGPACK_ARCH_PPC MSGPACK_VERSION_NUMBER(6,4,0)
+# endif
+# if !defined (MSGPACK_ARCH_PPC)
+# define MSGPACK_ARCH_PPC MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if MSGPACK_ARCH_PPC
+# define MSGPACK_ARCH_PPC_AVAILABLE
+#endif
+
+#define MSGPACK_ARCH_PPC_NAME "PowerPC"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_ARCH_PPC,MSGPACK_ARCH_PPC_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/architecture/pyramid.h b/third_party/msgpack/include/msgpack/predef/architecture/pyramid.h
new file mode 100644
index 0000000000..5799d831b0
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/architecture/pyramid.h
@@ -0,0 +1,42 @@
+/*
+Copyright Rene Rivera 2011-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_ARCHITECTURE_PYRAMID_H
+#define MSGPACK_PREDEF_ARCHITECTURE_PYRAMID_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_ARCH_PYRAMID`]
+
+Pyramid 9810 architecture.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`pyr`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_ARCH_PYRAMID MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(pyr)
+# undef MSGPACK_ARCH_PYRAMID
+# define MSGPACK_ARCH_PYRAMID MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if MSGPACK_ARCH_PYRAMID
+# define MSGPACK_ARCH_PYRAMID_AVAILABLE
+#endif
+
+#define MSGPACK_ARCH_PYRAMID_NAME "Pyramid 9810"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_ARCH_PYRAMID,MSGPACK_ARCH_PYRAMID_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/architecture/rs6k.h b/third_party/msgpack/include/msgpack/predef/architecture/rs6k.h
new file mode 100644
index 0000000000..241876059e
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/architecture/rs6k.h
@@ -0,0 +1,56 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_ARCHITECTURE_RS6K_H
+#define MSGPACK_PREDEF_ARCHITECTURE_RS6K_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_ARCH_RS6000`]
+
+[@http://en.wikipedia.org/wiki/RS/6000 RS/6000] architecture.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__THW_RS6000`] [__predef_detection__]]
+ [[`_IBMR2`] [__predef_detection__]]
+ [[`_POWER`] [__predef_detection__]]
+ [[`_ARCH_PWR`] [__predef_detection__]]
+ [[`_ARCH_PWR2`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_ARCH_RS6000 MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__THW_RS6000) || defined(_IBMR2) || \
+ defined(_POWER) || defined(_ARCH_PWR) || \
+ defined(_ARCH_PWR2)
+# undef MSGPACK_ARCH_RS6000
+# define MSGPACK_ARCH_RS6000 MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if MSGPACK_ARCH_RS6000
+# define MSGPACK_ARCH_RS6000_AVAILABLE
+#endif
+
+#define MSGPACK_ARCH_RS6000_NAME "RS/6000"
+
+#define MSGPACK_ARCH_PWR MSGPACK_ARCH_RS6000
+
+#if MSGPACK_ARCH_PWR
+# define MSGPACK_ARCH_PWR_AVAILABLE
+#endif
+
+#define MSGPACK_ARCH_PWR_NAME MSGPACK_ARCH_RS6000_NAME
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_ARCH_RS6000,MSGPACK_ARCH_RS6000_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/architecture/sparc.h b/third_party/msgpack/include/msgpack/predef/architecture/sparc.h
new file mode 100644
index 0000000000..4cb764e59d
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/architecture/sparc.h
@@ -0,0 +1,54 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_ARCHITECTURE_SPARC_H
+#define MSGPACK_PREDEF_ARCHITECTURE_SPARC_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_ARCH_SPARC`]
+
+[@http://en.wikipedia.org/wiki/SPARC SPARC] architecture.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__sparc__`] [__predef_detection__]]
+ [[`__sparc`] [__predef_detection__]]
+
+ [[`__sparcv9`] [9.0.0]]
+ [[`__sparcv8`] [8.0.0]]
+ ]
+ */
+
+#define MSGPACK_ARCH_SPARC MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__sparc__) || defined(__sparc)
+# undef MSGPACK_ARCH_SPARC
+# if !defined(MSGPACK_ARCH_SPARC) && defined(__sparcv9)
+# define MSGPACK_ARCH_SPARC MSGPACK_VERSION_NUMBER(9,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_SPARC) && defined(__sparcv8)
+# define MSGPACK_ARCH_SPARC MSGPACK_VERSION_NUMBER(8,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_SPARC)
+# define MSGPACK_ARCH_SPARC MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if MSGPACK_ARCH_SPARC
+# define MSGPACK_ARCH_SPARC_AVAILABLE
+#endif
+
+#define MSGPACK_ARCH_SPARC_NAME "SPARC"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_ARCH_SPARC,MSGPACK_ARCH_SPARC_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/architecture/superh.h b/third_party/msgpack/include/msgpack/predef/architecture/superh.h
new file mode 100644
index 0000000000..8256d2b8b7
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/architecture/superh.h
@@ -0,0 +1,67 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_ARCHITECTURE_SUPERH_H
+#define MSGPACK_PREDEF_ARCHITECTURE_SUPERH_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_ARCH_SH`]
+
+[@http://en.wikipedia.org/wiki/SuperH SuperH] architecture:
+If available versions \[1-5\] are specifically detected.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__sh__`] [__predef_detection__]]
+
+ [[`__SH5__`] [5.0.0]]
+ [[`__SH4__`] [4.0.0]]
+ [[`__sh3__`] [3.0.0]]
+ [[`__SH3__`] [3.0.0]]
+ [[`__sh2__`] [2.0.0]]
+ [[`__sh1__`] [1.0.0]]
+ ]
+ */
+
+#define MSGPACK_ARCH_SH MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__sh__)
+# undef MSGPACK_ARCH_SH
+# if !defined(MSGPACK_ARCH_SH) && (defined(__SH5__))
+# define MSGPACK_ARCH_SH MSGPACK_VERSION_NUMBER(5,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_SH) && (defined(__SH4__))
+# define MSGPACK_ARCH_SH MSGPACK_VERSION_NUMBER(4,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_SH) && (defined(__sh3__) || defined(__SH3__))
+# define MSGPACK_ARCH_SH MSGPACK_VERSION_NUMBER(3,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_SH) && (defined(__sh2__))
+# define MSGPACK_ARCH_SH MSGPACK_VERSION_NUMBER(2,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_SH) && (defined(__sh1__))
+# define MSGPACK_ARCH_SH MSGPACK_VERSION_NUMBER(1,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_SH)
+# define MSGPACK_ARCH_SH MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if MSGPACK_ARCH_SH
+# define MSGPACK_ARCH_SH_AVAILABLE
+#endif
+
+#define MSGPACK_ARCH_SH_NAME "SuperH"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_ARCH_SH,MSGPACK_ARCH_SH_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/architecture/sys370.h b/third_party/msgpack/include/msgpack/predef/architecture/sys370.h
new file mode 100644
index 0000000000..a03b691137
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/architecture/sys370.h
@@ -0,0 +1,43 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_ARCHITECTURE_SYS370_H
+#define MSGPACK_PREDEF_ARCHITECTURE_SYS370_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_ARCH_SYS370`]
+
+[@http://en.wikipedia.org/wiki/System/370 System/370] architecture.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__370__`] [__predef_detection__]]
+ [[`__THW_370__`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_ARCH_SYS370 MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__370__) || defined(__THW_370__)
+# undef MSGPACK_ARCH_SYS370
+# define MSGPACK_ARCH_SYS370 MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if MSGPACK_ARCH_SYS370
+# define MSGPACK_ARCH_SYS370_AVAILABLE
+#endif
+
+#define MSGPACK_ARCH_SYS370_NAME "System/370"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_ARCH_SYS370,MSGPACK_ARCH_SYS370_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/architecture/sys390.h b/third_party/msgpack/include/msgpack/predef/architecture/sys390.h
new file mode 100644
index 0000000000..20fbb1d349
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/architecture/sys390.h
@@ -0,0 +1,43 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_ARCHITECTURE_SYS390_H
+#define MSGPACK_PREDEF_ARCHITECTURE_SYS390_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_ARCH_SYS390`]
+
+[@http://en.wikipedia.org/wiki/System/390 System/390] architecture.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__s390__`] [__predef_detection__]]
+ [[`__s390x__`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_ARCH_SYS390 MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__s390__) || defined(__s390x__)
+# undef MSGPACK_ARCH_SYS390
+# define MSGPACK_ARCH_SYS390 MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if MSGPACK_ARCH_SYS390
+# define MSGPACK_ARCH_SYS390_AVAILABLE
+#endif
+
+#define MSGPACK_ARCH_SYS390_NAME "System/390"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_ARCH_SYS390,MSGPACK_ARCH_SYS390_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/architecture/x86.h b/third_party/msgpack/include/msgpack/predef/architecture/x86.h
new file mode 100644
index 0000000000..02353b15d8
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/architecture/x86.h
@@ -0,0 +1,38 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#include <msgpack/predef/architecture/x86/32.h>
+#include <msgpack/predef/architecture/x86/64.h>
+
+#ifndef MSGPACK_PREDEF_ARCHITECTURE_X86_H
+#define MSGPACK_PREDEF_ARCHITECTURE_X86_H
+
+/*`
+[heading `MSGPACK_ARCH_X86`]
+
+[@http://en.wikipedia.org/wiki/X86 Intel x86] architecture. This is
+a category to indicate that either `MSGPACK_ARCH_X86_32` or
+`MSGPACK_ARCH_X86_64` is detected.
+ */
+
+#define MSGPACK_ARCH_X86 MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if MSGPACK_ARCH_X86_32 || MSGPACK_ARCH_X86_64
+# undef MSGPACK_ARCH_X86
+# define MSGPACK_ARCH_X86 MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if MSGPACK_ARCH_X86
+# define MSGPACK_ARCH_X86_AVAILABLE
+#endif
+
+#define MSGPACK_ARCH_X86_NAME "Intel x86"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_ARCH_X86,MSGPACK_ARCH_X86_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/architecture/x86/32.h b/third_party/msgpack/include/msgpack/predef/architecture/x86/32.h
new file mode 100644
index 0000000000..82cff0195e
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/architecture/x86/32.h
@@ -0,0 +1,87 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_ARCHITECTURE_X86_32_H
+#define MSGPACK_PREDEF_ARCHITECTURE_X86_32_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_ARCH_X86_32`]
+
+[@http://en.wikipedia.org/wiki/X86 Intel x86] architecture:
+If available versions \[3-6\] are specifically detected.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`i386`] [__predef_detection__]]
+ [[`__i386__`] [__predef_detection__]]
+ [[`__i486__`] [__predef_detection__]]
+ [[`__i586__`] [__predef_detection__]]
+ [[`__i686__`] [__predef_detection__]]
+ [[`__i386`] [__predef_detection__]]
+ [[`_M_IX86`] [__predef_detection__]]
+ [[`_X86_`] [__predef_detection__]]
+ [[`__THW_INTEL__`] [__predef_detection__]]
+ [[`__I86__`] [__predef_detection__]]
+ [[`__INTEL__`] [__predef_detection__]]
+
+ [[`__I86__`] [V.0.0]]
+ [[`_M_IX86`] [V.0.0]]
+ [[`__i686__`] [6.0.0]]
+ [[`__i586__`] [5.0.0]]
+ [[`__i486__`] [4.0.0]]
+ [[`__i386__`] [3.0.0]]
+ ]
+ */
+
+#define MSGPACK_ARCH_X86_32 MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(i386) || defined(__i386__) || \
+ defined(__i486__) || defined(__i586__) || \
+ defined(__i686__) || defined(__i386) || \
+ defined(_M_IX86) || defined(_X86_) || \
+ defined(__THW_INTEL__) || defined(__I86__) || \
+ defined(__INTEL__)
+# undef MSGPACK_ARCH_X86_32
+# if !defined(MSGPACK_ARCH_X86_32) && defined(__I86__)
+# define MSGPACK_ARCH_X86_32 MSGPACK_VERSION_NUMBER(__I86__,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_X86_32) && defined(_M_IX86)
+# define MSGPACK_ARCH_X86_32 MSGPACK_PREDEF_MAKE_10_VV00(_M_IX86)
+# endif
+# if !defined(MSGPACK_ARCH_X86_32) && defined(__i686__)
+# define MSGPACK_ARCH_X86_32 MSGPACK_VERSION_NUMBER(6,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_X86_32) && defined(__i586__)
+# define MSGPACK_ARCH_X86_32 MSGPACK_VERSION_NUMBER(5,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_X86_32) && defined(__i486__)
+# define MSGPACK_ARCH_X86_32 MSGPACK_VERSION_NUMBER(4,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_X86_32) && defined(__i386__)
+# define MSGPACK_ARCH_X86_32 MSGPACK_VERSION_NUMBER(3,0,0)
+# endif
+# if !defined(MSGPACK_ARCH_X86_32)
+# define MSGPACK_ARCH_X86_32 MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if MSGPACK_ARCH_X86_32
+# define MSGPACK_ARCH_X86_32_AVAILABLE
+#endif
+
+#define MSGPACK_ARCH_X86_32_NAME "Intel x86-32"
+
+#include <msgpack/predef/architecture/x86.h>
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_ARCH_X86_32,MSGPACK_ARCH_X86_32_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/architecture/x86/64.h b/third_party/msgpack/include/msgpack/predef/architecture/x86/64.h
new file mode 100644
index 0000000000..72a05c26b2
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/architecture/x86/64.h
@@ -0,0 +1,50 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_ARCHITECTURE_X86_64_H
+#define MSGPACK_PREDEF_ARCHITECTURE_X86_64_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_ARCH_X86_64`]
+
+[@http://en.wikipedia.org/wiki/Ia64 Intel IA-64] architecture.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__x86_64`] [__predef_detection__]]
+ [[`__x86_64__`] [__predef_detection__]]
+ [[`__amd64__`] [__predef_detection__]]
+ [[`__amd64`] [__predef_detection__]]
+ [[`_M_X64`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_ARCH_X86_64 MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__x86_64) || defined(__x86_64__) || \
+ defined(__amd64__) || defined(__amd64) || \
+ defined(_M_X64)
+# undef MSGPACK_ARCH_X86_64
+# define MSGPACK_ARCH_X86_64 MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if MSGPACK_ARCH_X86_64
+# define MSGPACK_ARCH_X86_64_AVAILABLE
+#endif
+
+#define MSGPACK_ARCH_X86_64_NAME "Intel x86-64"
+
+#include <msgpack/predef/architecture/x86.h>
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_ARCH_X86_64,MSGPACK_ARCH_X86_64_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/architecture/z.h b/third_party/msgpack/include/msgpack/predef/architecture/z.h
new file mode 100644
index 0000000000..f5e9f859ca
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/architecture/z.h
@@ -0,0 +1,42 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_ARCHITECTURE_Z_H
+#define MSGPACK_PREDEF_ARCHITECTURE_Z_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_ARCH_Z`]
+
+[@http://en.wikipedia.org/wiki/Z/Architecture z/Architecture] architecture.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__SYSC_ZARCH__`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_ARCH_Z MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__SYSC_ZARCH__)
+# undef MSGPACK_ARCH_Z
+# define MSGPACK_ARCH_Z MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if MSGPACK_ARCH_Z
+# define MSGPACK_ARCH_Z_AVAILABLE
+#endif
+
+#define MSGPACK_ARCH_Z_NAME "z/Architecture"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_ARCH_Z,MSGPACK_ARCH_Z_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/compiler.h b/third_party/msgpack/include/msgpack/predef/compiler.h
new file mode 100644
index 0000000000..5605816674
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/compiler.h
@@ -0,0 +1,43 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#if !defined(MSGPACK_PREDEF_COMPILER_H) || defined(MSGPACK_PREDEF_INTERNAL_GENERATE_TESTS)
+#ifndef MSGPACK_PREDEF_COMPILER_H
+#define MSGPACK_PREDEF_COMPILER_H
+#endif
+
+#include <msgpack/predef/compiler/borland.h>
+#include <msgpack/predef/compiler/clang.h>
+#include <msgpack/predef/compiler/comeau.h>
+#include <msgpack/predef/compiler/compaq.h>
+#include <msgpack/predef/compiler/diab.h>
+#include <msgpack/predef/compiler/digitalmars.h>
+#include <msgpack/predef/compiler/dignus.h>
+#include <msgpack/predef/compiler/edg.h>
+#include <msgpack/predef/compiler/ekopath.h>
+#include <msgpack/predef/compiler/gcc_xml.h>
+#include <msgpack/predef/compiler/gcc.h>
+#include <msgpack/predef/compiler/greenhills.h>
+#include <msgpack/predef/compiler/hp_acc.h>
+#include <msgpack/predef/compiler/iar.h>
+#include <msgpack/predef/compiler/ibm.h>
+#include <msgpack/predef/compiler/intel.h>
+#include <msgpack/predef/compiler/kai.h>
+#include <msgpack/predef/compiler/llvm.h>
+#include <msgpack/predef/compiler/metaware.h>
+#include <msgpack/predef/compiler/metrowerks.h>
+#include <msgpack/predef/compiler/microtec.h>
+#include <msgpack/predef/compiler/mpw.h>
+#include <msgpack/predef/compiler/palm.h>
+#include <msgpack/predef/compiler/pgi.h>
+#include <msgpack/predef/compiler/sgi_mipspro.h>
+#include <msgpack/predef/compiler/sunpro.h>
+#include <msgpack/predef/compiler/tendra.h>
+#include <msgpack/predef/compiler/visualc.h>
+#include <msgpack/predef/compiler/watcom.h>
+
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/compiler/borland.h b/third_party/msgpack/include/msgpack/predef/compiler/borland.h
new file mode 100644
index 0000000000..89e0d9f2ce
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/compiler/borland.h
@@ -0,0 +1,63 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_COMPILER_BORLAND_H
+#define MSGPACK_PREDEF_COMPILER_BORLAND_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_COMP_BORLAND`]
+
+[@http://en.wikipedia.org/wiki/C_plus_plus_builder Borland C++] compiler.
+Version number available as major, minor, and patch.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__BORLANDC__`] [__predef_detection__]]
+ [[`__CODEGEARC__`] [__predef_detection__]]
+
+ [[`__BORLANDC__`] [V.R.P]]
+ [[`__CODEGEARC__`] [V.R.P]]
+ ]
+ */
+
+#define MSGPACK_COMP_BORLAND MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__BORLANDC__) || defined(__CODEGEARC__)
+# if !defined(MSGPACK_COMP_BORLAND_DETECTION) && (defined(__CODEGEARC__))
+# define MSGPACK_COMP_BORLAND_DETECTION MSGPACK_PREDEF_MAKE_0X_VVRP(__CODEGEARC__)
+# endif
+# if !defined(MSGPACK_COMP_BORLAND_DETECTION)
+# define MSGPACK_COMP_BORLAND_DETECTION MSGPACK_PREDEF_MAKE_0X_VVRP(__BORLANDC__)
+# endif
+#endif
+
+#ifdef MSGPACK_COMP_BORLAND_DETECTION
+# define MSGPACK_COMP_BORLAND_AVAILABLE
+# if defined(MSGPACK_PREDEF_DETAIL_COMP_DETECTED)
+# define MSGPACK_COMP_BORLAND_EMULATED MSGPACK_COMP_BORLAND_DETECTION
+# else
+# undef MSGPACK_COMP_BORLAND
+# define MSGPACK_COMP_BORLAND MSGPACK_COMP_BORLAND_DETECTION
+# endif
+# include <msgpack/predef/detail/comp_detected.h>
+#endif
+
+#define MSGPACK_COMP_BORLAND_NAME "Borland C++"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_BORLAND,MSGPACK_COMP_BORLAND_NAME)
+
+#ifdef MSGPACK_COMP_BORLAND_EMULATED
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_BORLAND_EMULATED,MSGPACK_COMP_BORLAND_NAME)
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/compiler/clang.h b/third_party/msgpack/include/msgpack/predef/compiler/clang.h
new file mode 100644
index 0000000000..93616cf53f
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/compiler/clang.h
@@ -0,0 +1,56 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_COMPILER_CLANG_H
+#define MSGPACK_PREDEF_COMPILER_CLANG_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_COMP_CLANG`]
+
+[@http://en.wikipedia.org/wiki/Clang Clang] compiler.
+Version number available as major, minor, and patch.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__clang__`] [__predef_detection__]]
+
+ [[`__clang_major__`, `__clang_minor__`, `__clang_patchlevel__`] [V.R.P]]
+ ]
+ */
+
+#define MSGPACK_COMP_CLANG MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__clang__)
+# define MSGPACK_COMP_CLANG_DETECTION MSGPACK_VERSION_NUMBER(__clang_major__,__clang_minor__,__clang_patchlevel__)
+#endif
+
+#ifdef MSGPACK_COMP_CLANG_DETECTION
+# if defined(MSGPACK_PREDEF_DETAIL_COMP_DETECTED)
+# define MSGPACK_COMP_CLANG_EMULATED MSGPACK_COMP_CLANG_DETECTION
+# else
+# undef MSGPACK_COMP_CLANG
+# define MSGPACK_COMP_CLANG MSGPACK_COMP_CLANG_DETECTION
+# endif
+# define MSGPACK_COMP_CLANG_AVAILABLE
+# include <msgpack/predef/detail/comp_detected.h>
+#endif
+
+#define MSGPACK_COMP_CLANG_NAME "Clang"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_CLANG,MSGPACK_COMP_CLANG_NAME)
+
+#ifdef MSGPACK_COMP_CLANG_EMULATED
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_CLANG_EMULATED,MSGPACK_COMP_CLANG_NAME)
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/compiler/comeau.h b/third_party/msgpack/include/msgpack/predef/compiler/comeau.h
new file mode 100644
index 0000000000..f944bca863
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/compiler/comeau.h
@@ -0,0 +1,61 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_COMPILER_COMEAU_H
+#define MSGPACK_PREDEF_COMPILER_COMEAU_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+#define MSGPACK_COMP_COMO MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+/*`
+[heading `MSGPACK_COMP_COMO`]
+
+[@http://en.wikipedia.org/wiki/Comeau_C/C%2B%2B Comeau C++] compiler.
+Version number available as major, minor, and patch.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__COMO__`] [__predef_detection__]]
+
+ [[`__COMO_VERSION__`] [V.R.P]]
+ ]
+ */
+
+#if defined(__COMO__)
+# if !defined(MSGPACK_COMP_COMO_DETECTION) && defined(__COMO_VERSION__)
+# define MSGPACK_COMP_COMO_DETECTION MSGPACK_PREDEF_MAKE_0X_VRP(__COMO_VERSION__)
+# endif
+# if !defined(MSGPACK_COMP_COMO_DETECTION)
+# define MSGPACK_COMP_COMO_DETECTION MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#ifdef MSGPACK_COMP_COMO_DETECTION
+# if defined(MSGPACK_PREDEF_DETAIL_COMP_DETECTED)
+# define MSGPACK_COMP_COMO_EMULATED MSGPACK_COMP_COMO_DETECTION
+# else
+# undef MSGPACK_COMP_COMO
+# define MSGPACK_COMP_COMO MSGPACK_COMP_COMO_DETECTION
+# endif
+# define MSGPACK_COMP_COMO_AVAILABLE
+# include <msgpack/predef/detail/comp_detected.h>
+#endif
+
+#define MSGPACK_COMP_COMO_NAME "Comeau C++"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_COMO,MSGPACK_COMP_COMO_NAME)
+
+#ifdef MSGPACK_COMP_COMO_EMULATED
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_COMO_EMULATED,MSGPACK_COMP_COMO_NAME)
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/compiler/compaq.h b/third_party/msgpack/include/msgpack/predef/compiler/compaq.h
new file mode 100644
index 0000000000..b2771a73c8
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/compiler/compaq.h
@@ -0,0 +1,66 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_COMPILER_COMPAQ_H
+#define MSGPACK_PREDEF_COMPILER_COMPAQ_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_COMP_DEC`]
+
+[@http://www.openvms.compaq.com/openvms/brochures/deccplus/ Compaq C/C++] compiler.
+Version number available as major, minor, and patch.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__DECCXX`] [__predef_detection__]]
+ [[`__DECC`] [__predef_detection__]]
+
+ [[`__DECCXX_VER`] [V.R.P]]
+ [[`__DECC_VER`] [V.R.P]]
+ ]
+ */
+
+#define MSGPACK_COMP_DEC MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__DECC) || defined(__DECCXX)
+# if !defined(MSGPACK_COMP_DEC_DETECTION) && defined(__DECCXX_VER)
+# define MSGPACK_COMP_DEC_DETECTION MSGPACK_PREDEF_MAKE_10_VVRR0PP00(__DECCXX_VER)
+# endif
+# if !defined(MSGPACK_COMP_DEC_DETECTION) && defined(__DECC_VER)
+# define MSGPACK_COMP_DEC_DETECTION MSGPACK_PREDEF_MAKE_10_VVRR0PP00(__DECC_VER)
+# endif
+# if !defined(MSGPACK_COMP_DEC_DETECTION)
+# define MSGPACK_COM_DEC_DETECTION MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#ifdef MSGPACK_COMP_DEC_DETECTION
+# if defined(MSGPACK_PREDEF_DETAIL_COMP_DETECTED)
+# define MSGPACK_COMP_DEC_EMULATED MSGPACK_COMP_DEC_DETECTION
+# else
+# undef MSGPACK_COMP_DEC
+# define MSGPACK_COMP_DEC MSGPACK_COMP_DEC_DETECTION
+# endif
+# define MSGPACK_COMP_DEC_AVAILABLE
+# include <msgpack/predef/detail/comp_detected.h>
+#endif
+
+#define MSGPACK_COMP_DEC_NAME "Compaq C/C++"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_DEC,MSGPACK_COMP_DEC_NAME)
+
+#ifdef MSGPACK_COMP_DEC_EMULATED
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_DEC_EMULATED,MSGPACK_COMP_DEC_NAME)
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/compiler/diab.h b/third_party/msgpack/include/msgpack/predef/compiler/diab.h
new file mode 100644
index 0000000000..a365a35c52
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/compiler/diab.h
@@ -0,0 +1,56 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_COMPILER_DIAB_H
+#define MSGPACK_PREDEF_COMPILER_DIAB_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_COMP_DIAB`]
+
+[@http://www.windriver.com/products/development_suite/wind_river_compiler/ Diab C/C++] compiler.
+Version number available as major, minor, and patch.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__DCC__`] [__predef_detection__]]
+
+ [[`__VERSION_NUMBER__`] [V.R.P]]
+ ]
+ */
+
+#define MSGPACK_COMP_DIAB MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__DCC__)
+# define MSGPACK_COMP_DIAB_DETECTION MSGPACK_PREDEF_MAKE_10_VRPP(__VERSION_NUMBER__)
+#endif
+
+#ifdef MSGPACK_COMP_DIAB_DETECTION
+# if defined(MSGPACK_PREDEF_DETAIL_COMP_DETECTED)
+# define MSGPACK_COMP_DIAB_EMULATED MSGPACK_COMP_DIAB_DETECTION
+# else
+# undef MSGPACK_COMP_DIAB
+# define MSGPACK_COMP_DIAB MSGPACK_COMP_DIAB_DETECTION
+# endif
+# define MSGPACK_COMP_DIAB_AVAILABLE
+# include <msgpack/predef/detail/comp_detected.h>
+#endif
+
+#define MSGPACK_COMP_DIAB_NAME "Diab C/C++"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_DIAB,MSGPACK_COMP_DIAB_NAME)
+
+#ifdef MSGPACK_COMP_DIAB_EMULATED
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_DIAB_EMULATED,MSGPACK_COMP_DIAB_NAME)
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/compiler/digitalmars.h b/third_party/msgpack/include/msgpack/predef/compiler/digitalmars.h
new file mode 100644
index 0000000000..eca2a3123e
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/compiler/digitalmars.h
@@ -0,0 +1,56 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_COMPILER_DIGITALMARS_H
+#define MSGPACK_PREDEF_COMPILER_DIGITALMARS_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_COMP_DMC`]
+
+[@http://en.wikipedia.org/wiki/Digital_Mars Digital Mars] compiler.
+Version number available as major, minor, and patch.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__DMC__`] [__predef_detection__]]
+
+ [[`__DMC__`] [V.R.P]]
+ ]
+ */
+
+#define MSGPACK_COMP_DMC MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__DMC__)
+# define MSGPACK_COMP_DMC_DETECTION MSGPACK_PREDEF_MAKE_0X_VRP(__DMC__)
+#endif
+
+#ifdef MSGPACK_COMP_DMC_DETECTION
+# if defined(MSGPACK_PREDEF_DETAIL_COMP_DETECTED)
+# define MSGPACK_COMP_DMC_EMULATED MSGPACK_COMP_DMC_DETECTION
+# else
+# undef MSGPACK_COMP_DMC
+# define MSGPACK_COMP_DMC MSGPACK_COMP_DMC_DETECTION
+# endif
+# define MSGPACK_COMP_DMC_AVAILABLE
+# include <msgpack/predef/detail/comp_detected.h>
+#endif
+
+#define MSGPACK_COMP_DMC_NAME "Digital Mars"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_DMC,MSGPACK_COMP_DMC_NAME)
+
+#ifdef MSGPACK_COMP_DMC_EMULATED
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_DMC_EMULATED,MSGPACK_COMP_DMC_NAME)
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/compiler/dignus.h b/third_party/msgpack/include/msgpack/predef/compiler/dignus.h
new file mode 100644
index 0000000000..8040baa9b4
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/compiler/dignus.h
@@ -0,0 +1,56 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_COMPILER_DIGNUS_H
+#define MSGPACK_PREDEF_COMPILER_DIGNUS_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_COMP_SYSC`]
+
+[@http://www.dignus.com/dcxx/ Dignus Systems/C++] compiler.
+Version number available as major, minor, and patch.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__SYSC__`] [__predef_detection__]]
+
+ [[`__SYSC_VER__`] [V.R.P]]
+ ]
+ */
+
+#define MSGPACK_COMP_SYSC MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__SYSC__)
+# define MSGPACK_COMP_SYSC_DETECTION MSGPACK_PREDEF_MAKE_10_VRRPP(__SYSC_VER__)
+#endif
+
+#ifdef MSGPACK_COMP_SYSC_DETECTION
+# if defined(MSGPACK_PREDEF_DETAIL_COMP_DETECTED)
+# define MSGPACK_COMP_SYSC_EMULATED MSGPACK_COMP_SYSC_DETECTION
+# else
+# undef MSGPACK_COMP_SYSC
+# define MSGPACK_COMP_SYSC MSGPACK_COMP_SYSC_DETECTION
+# endif
+# define MSGPACK_COMP_SYSC_AVAILABLE
+# include <msgpack/predef/detail/comp_detected.h>
+#endif
+
+#define MSGPACK_COMP_SYSC_NAME "Dignus Systems/C++"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_SYSC,MSGPACK_COMP_SYSC_NAME)
+
+#ifdef MSGPACK_COMP_SYSC_EMULATED
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_SYSC_EMULATED,MSGPACK_COMP_SYSC_NAME)
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/compiler/edg.h b/third_party/msgpack/include/msgpack/predef/compiler/edg.h
new file mode 100644
index 0000000000..700f8bdc4d
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/compiler/edg.h
@@ -0,0 +1,56 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_COMPILER_EDG_H
+#define MSGPACK_PREDEF_COMPILER_EDG_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_COMP_EDG`]
+
+[@http://en.wikipedia.org/wiki/Edison_Design_Group EDG C++ Frontend] compiler.
+Version number available as major, minor, and patch.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__EDG__`] [__predef_detection__]]
+
+ [[`__EDG_VERSION__`] [V.R.0]]
+ ]
+ */
+
+#define MSGPACK_COMP_EDG MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__EDG__)
+# define MSGPACK_COMP_EDG_DETECTION MSGPACK_PREDEF_MAKE_10_VRR(__EDG_VERSION__)
+#endif
+
+#ifdef MSGPACK_COMP_EDG_DETECTION
+# if defined(MSGPACK_PREDEF_DETAIL_COMP_DETECTED)
+# define MSGPACK_COMP_EDG_EMULATED MSGPACK_COMP_EDG_DETECTION
+# else
+# undef MSGPACK_COMP_EDG
+# define MSGPACK_COMP_EDG MSGPACK_COMP_EDG_DETECTION
+# endif
+# define MSGPACK_COMP_EDG_AVAILABLE
+# include <msgpack/predef/detail/comp_detected.h>
+#endif
+
+#define MSGPACK_COMP_EDG_NAME "EDG C++ Frontend"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_EDG,MSGPACK_COMP_EDG_NAME)
+
+#ifdef MSGPACK_COMP_EDG_EMULATED
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_EDG_EMULATED,MSGPACK_COMP_EDG_NAME)
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/compiler/ekopath.h b/third_party/msgpack/include/msgpack/predef/compiler/ekopath.h
new file mode 100644
index 0000000000..72fda2723b
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/compiler/ekopath.h
@@ -0,0 +1,57 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_COMPILER_EKOPATH_H
+#define MSGPACK_PREDEF_COMPILER_EKOPATH_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_COMP_PATH`]
+
+[@http://en.wikipedia.org/wiki/PathScale EKOpath] compiler.
+Version number available as major, minor, and patch.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__PATHCC__`] [__predef_detection__]]
+
+ [[`__PATHCC__`, `__PATHCC_MINOR__`, `__PATHCC_PATCHLEVEL__`] [V.R.P]]
+ ]
+ */
+
+#define MSGPACK_COMP_PATH MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__PATHCC__)
+# define MSGPACK_COMP_PATH_DETECTION \
+ MSGPACK_VERSION_NUMBER(__PATHCC__,__PATHCC_MINOR__,__PATHCC_PATCHLEVEL__)
+#endif
+
+#ifdef MSGPACK_COMP_PATH_DETECTION
+# if defined(MSGPACK_PREDEF_DETAIL_COMP_DETECTED)
+# define MSGPACK_COMP_PATH_EMULATED MSGPACK_COMP_PATH_DETECTION
+# else
+# undef MSGPACK_COMP_PATH
+# define MSGPACK_COMP_PATH MSGPACK_COMP_PATH_DETECTION
+# endif
+# define MSGPACK_COMP_PATH_AVAILABLE
+# include <msgpack/predef/detail/comp_detected.h>
+#endif
+
+#define MSGPACK_COMP_PATH_NAME "EKOpath"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_PATH,MSGPACK_COMP_PATH_NAME)
+
+#ifdef MSGPACK_COMP_PATH_EMULATED
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_PATH_EMULATED,MSGPACK_COMP_PATH_NAME)
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/compiler/gcc.h b/third_party/msgpack/include/msgpack/predef/compiler/gcc.h
new file mode 100644
index 0000000000..03fcd2a784
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/compiler/gcc.h
@@ -0,0 +1,68 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_COMPILER_GCC_H
+#define MSGPACK_PREDEF_COMPILER_GCC_H
+
+/* Other compilers that emulate this one need to be detected first. */
+
+#include <msgpack/predef/compiler/clang.h>
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_COMP_GNUC`]
+
+[@http://en.wikipedia.org/wiki/GNU_Compiler_Collection Gnu GCC C/C++] compiler.
+Version number available as major, minor, and patch (if available).
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__GNUC__`] [__predef_detection__]]
+
+ [[`__GNUC__`, `__GNUC_MINOR__`, `__GNUC_PATCHLEVEL__`] [V.R.P]]
+ [[`__GNUC__`, `__GNUC_MINOR__`] [V.R.0]]
+ ]
+ */
+
+#define MSGPACK_COMP_GNUC MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__GNUC__)
+# if !defined(MSGPACK_COMP_GNUC_DETECTION) && defined(__GNUC_PATCHLEVEL__)
+# define MSGPACK_COMP_GNUC_DETECTION \
+ MSGPACK_VERSION_NUMBER(__GNUC__,__GNUC_MINOR__,__GNUC_PATCHLEVEL__)
+# endif
+# if !defined(MSGPACK_COMP_GNUC_DETECTION)
+# define MSGPACK_COMP_GNUC_DETECTION \
+ MSGPACK_VERSION_NUMBER(__GNUC__,__GNUC_MINOR__,0)
+# endif
+#endif
+
+#ifdef MSGPACK_COMP_GNUC_DETECTION
+# if defined(MSGPACK_PREDEF_DETAIL_COMP_DETECTED)
+# define MSGPACK_COMP_GNUC_EMULATED MSGPACK_COMP_GNUC_DETECTION
+# else
+# undef MSGPACK_COMP_GNUC
+# define MSGPACK_COMP_GNUC MSGPACK_COMP_GNUC_DETECTION
+# endif
+# define MSGPACK_COMP_GNUC_AVAILABLE
+# include <msgpack/predef/detail/comp_detected.h>
+#endif
+
+#define MSGPACK_COMP_GNUC_NAME "Gnu GCC C/C++"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_GNUC,MSGPACK_COMP_GNUC_NAME)
+
+#ifdef MSGPACK_COMP_GNUC_EMULATED
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_GNUC_EMULATED,MSGPACK_COMP_GNUC_NAME)
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/compiler/gcc_xml.h b/third_party/msgpack/include/msgpack/predef/compiler/gcc_xml.h
new file mode 100644
index 0000000000..678cf71c76
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/compiler/gcc_xml.h
@@ -0,0 +1,53 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_COMPILER_GCC_XML_H
+#define MSGPACK_PREDEF_COMPILER_GCC_XML_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_COMP_GCCXML`]
+
+[@http://www.gccxml.org/ GCC XML] compiler.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__GCCXML__`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_COMP_GCCXML MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__GCCXML__)
+# define MSGPACK_COMP_GCCXML_DETECTION MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#ifdef MSGPACK_COMP_GCCXML_DETECTION
+# if defined(MSGPACK_PREDEF_DETAIL_COMP_DETECTED)
+# define MSGPACK_COMP_GCCXML_EMULATED MSGPACK_COMP_GCCXML_DETECTION
+# else
+# undef MSGPACK_COMP_GCCXML
+# define MSGPACK_COMP_GCCXML MSGPACK_COMP_GCCXML_DETECTION
+# endif
+# define MSGPACK_COMP_GCCXML_AVAILABLE
+# include <msgpack/predef/detail/comp_detected.h>
+#endif
+
+#define MSGPACK_COMP_GCCXML_NAME "GCC XML"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_GCCXML,MSGPACK_COMP_GCCXML_NAME)
+
+#ifdef MSGPACK_COMP_GCCXML_EMULATED
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_GCCXML_EMULATED,MSGPACK_COMP_GCCXML_NAME)
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/compiler/greenhills.h b/third_party/msgpack/include/msgpack/predef/compiler/greenhills.h
new file mode 100644
index 0000000000..f997843673
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/compiler/greenhills.h
@@ -0,0 +1,66 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_COMPILER_GREENHILLS_H
+#define MSGPACK_PREDEF_COMPILER_GREENHILLS_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_COMP_GHS`]
+
+[@http://en.wikipedia.org/wiki/Green_Hills_Software Green Hills C/C++] compiler.
+Version number available as major, minor, and patch.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__ghs`] [__predef_detection__]]
+ [[`__ghs__`] [__predef_detection__]]
+
+ [[`__GHS_VERSION_NUMBER__`] [V.R.P]]
+ [[`__ghs`] [V.R.P]]
+ ]
+ */
+
+#define MSGPACK_COMP_GHS MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__ghs) || defined(__ghs__)
+# if !defined(MSGPACK_COMP_GHS_DETECTION) && defined(__GHS_VERSION_NUMBER__)
+# define MSGPACK_COMP_GHS_DETECTION MSGPACK_PREDEF_MAKE_10_VRP(__GHS_VERSION_NUMBER__)
+# endif
+# if !defined(MSGPACK_COMP_GHS_DETECTION) && defined(__ghs)
+# define MSGPACK_COMP_GHS_DETECTION MSGPACK_PREDEF_MAKE_10_VRP(__ghs)
+# endif
+# if !defined(MSGPACK_COMP_GHS_DETECTION)
+# define MSGPACK_COMP_GHS_DETECTION MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#ifdef MSGPACK_COMP_GHS_DETECTION
+# if defined(MSGPACK_PREDEF_DETAIL_COMP_DETECTED)
+# define MSGPACK_COMP_GHS_EMULATED MSGPACK_COMP_GHS_DETECTION
+# else
+# undef MSGPACK_COMP_GHS
+# define MSGPACK_COMP_GHS MSGPACK_COMP_GHS_DETECTION
+# endif
+# define MSGPACK_COMP_GHS_AVAILABLE
+# include <msgpack/predef/detail/comp_detected.h>
+#endif
+
+#define MSGPACK_COMP_GHS_NAME "Green Hills C/C++"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_GHS,MSGPACK_COMP_GHS_NAME)
+
+#ifdef MSGPACK_COMP_GHS_EMULATED
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_GHS_EMULATED,MSGPACK_COMP_GHS_NAME)
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/compiler/hp_acc.h b/third_party/msgpack/include/msgpack/predef/compiler/hp_acc.h
new file mode 100644
index 0000000000..5a47ae4df9
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/compiler/hp_acc.h
@@ -0,0 +1,61 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_COMPILER_HP_ACC_H
+#define MSGPACK_PREDEF_COMPILER_HP_ACC_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_COMP_HPACC`]
+
+HP aC++ compiler.
+Version number available as major, minor, and patch.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__HP_aCC`] [__predef_detection__]]
+
+ [[`__HP_aCC`] [V.R.P]]
+ ]
+ */
+
+#define MSGPACK_COMP_HPACC MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__HP_aCC)
+# if !defined(MSGPACK_COMP_HPACC_DETECTION) && (__HP_aCC > 1)
+# define MSGPACK_COMP_HPACC_DETECTION MSGPACK_PREDEF_MAKE_10_VVRRPP(__HP_aCC)
+# endif
+# if !defined(MSGPACK_COMP_HPACC_DETECTION)
+# define MSGPACK_COMP_HPACC_DETECTION MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#ifdef MSGPACK_COMP_HPACC_DETECTION
+# if defined(MSGPACK_PREDEF_DETAIL_COMP_DETECTED)
+# define MSGPACK_COMP_HPACC_EMULATED MSGPACK_COMP_HPACC_DETECTION
+# else
+# undef MSGPACK_COMP_HPACC
+# define MSGPACK_COMP_HPACC MSGPACK_COMP_HPACC_DETECTION
+# endif
+# define MSGPACK_COMP_HPACC_AVAILABLE
+# include <msgpack/predef/detail/comp_detected.h>
+#endif
+
+#define MSGPACK_COMP_HPACC_NAME "HP aC++"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_HPACC,MSGPACK_COMP_HPACC_NAME)
+
+#ifdef MSGPACK_COMP_HPACC_EMULATED
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_HPACC_EMULATED,MSGPACK_COMP_HPACC_NAME)
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/compiler/iar.h b/third_party/msgpack/include/msgpack/predef/compiler/iar.h
new file mode 100644
index 0000000000..2cce96003c
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/compiler/iar.h
@@ -0,0 +1,56 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_COMPILER_IAR_H
+#define MSGPACK_PREDEF_COMPILER_IAR_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_COMP_IAR`]
+
+IAR C/C++ compiler.
+Version number available as major, minor, and patch.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__IAR_SYSTEMS_ICC__`] [__predef_detection__]]
+
+ [[`__VER__`] [V.R.P]]
+ ]
+ */
+
+#define MSGPACK_COMP_IAR MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__IAR_SYSTEMS_ICC__)
+# define MSGPACK_COMP_IAR_DETECTION MSGPACK_PREDEF_MAKE_10_VVRR(__VER__)
+#endif
+
+#ifdef MSGPACK_COMP_IAR_DETECTION
+# if defined(MSGPACK_PREDEF_DETAIL_COMP_DETECTED)
+# define MSGPACK_COMP_IAR_EMULATED MSGPACK_COMP_IAR_DETECTION
+# else
+# undef MSGPACK_COMP_IAR
+# define MSGPACK_COMP_IAR MSGPACK_COMP_IAR_DETECTION
+# endif
+# define MSGPACK_COMP_IAR_AVAILABLE
+# include <msgpack/predef/detail/comp_detected.h>
+#endif
+
+#define MSGPACK_COMP_IAR_NAME "IAR C/C++"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_IAR,MSGPACK_COMP_IAR_NAME)
+
+#ifdef MSGPACK_COMP_IAR_EMULATED
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_IAR_EMULATED,MSGPACK_COMP_IAR_NAME)
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/compiler/ibm.h b/third_party/msgpack/include/msgpack/predef/compiler/ibm.h
new file mode 100644
index 0000000000..fc4ecfae03
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/compiler/ibm.h
@@ -0,0 +1,72 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_COMPILER_IBM_H
+#define MSGPACK_PREDEF_COMPILER_IBM_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_COMP_IBM`]
+
+[@http://en.wikipedia.org/wiki/VisualAge IBM XL C/C++] compiler.
+Version number available as major, minor, and patch.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__IBMCPP__`] [__predef_detection__]]
+ [[`__xlC__`] [__predef_detection__]]
+ [[`__xlc__`] [__predef_detection__]]
+
+ [[`__COMPILER_VER__`] [V.R.P]]
+ [[`__xlC__`] [V.R.P]]
+ [[`__xlc__`] [V.R.P]]
+ [[`__IBMCPP__`] [V.R.P]]
+ ]
+ */
+
+#define MSGPACK_COMP_IBM MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__IBMCPP__) || defined(__xlC__) || defined(__xlc__)
+# if !defined(MSGPACK_COMP_IBM_DETECTION) && defined(__COMPILER_VER__)
+# define MSGPACK_COMP_IBM_DETECTION MSGPACK_PREDEF_MAKE_0X_VRRPPPP(__COMPILER_VER__)
+# endif
+# if !defined(MSGPACK_COMP_IBM_DETECTION) && defined(__xlC__)
+# define MSGPACK_COMP_IBM_DETECTION MSGPACK_PREDEF_MAKE_0X_VVRR(__xlC__)
+# endif
+# if !defined(MSGPACK_COMP_IBM_DETECTION) && defined(__xlc__)
+# define MSGPACK_COMP_IBM_DETECTION MSGPACK_PREDEF_MAKE_0X_VVRR(__xlc__)
+# endif
+# if !defined(MSGPACK_COMP_IBM_DETECTION)
+# define MSGPACK_COMP_IBM_DETECTION MSGPACK_PREDEF_MAKE_10_VRP(__IBMCPP__)
+# endif
+#endif
+
+#ifdef MSGPACK_COMP_IBM_DETECTION
+# if defined(MSGPACK_PREDEF_DETAIL_COMP_DETECTED)
+# define MSGPACK_COMP_IBM_EMULATED MSGPACK_COMP_IBM_DETECTION
+# else
+# undef MSGPACK_COMP_IBM
+# define MSGPACK_COMP_IBM MSGPACK_COMP_IBM_DETECTION
+# endif
+# define MSGPACK_COMP_IBM_AVAILABLE
+# include <msgpack/predef/detail/comp_detected.h>
+#endif
+
+#define MSGPACK_COMP_IBM_NAME "IBM XL C/C++"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_IBM,MSGPACK_COMP_IBM_NAME)
+
+#ifdef MSGPACK_COMP_IBM_EMULATED
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_IBM_EMULATED,MSGPACK_COMP_IBM_NAME)
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/compiler/intel.h b/third_party/msgpack/include/msgpack/predef/compiler/intel.h
new file mode 100644
index 0000000000..7a1d76efee
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/compiler/intel.h
@@ -0,0 +1,65 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_COMPILER_INTEL_H
+#define MSGPACK_PREDEF_COMPILER_INTEL_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_COMP_INTEL`]
+
+[@http://en.wikipedia.org/wiki/Intel_C%2B%2B Intel C/C++] compiler.
+Version number available as major, minor, and patch.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__INTEL_COMPILER`] [__predef_detection__]]
+ [[`__ICL`] [__predef_detection__]]
+ [[`__ICC`] [__predef_detection__]]
+ [[`__ECC`] [__predef_detection__]]
+
+ [[`__INTEL_COMPILER`] [V.R.P]]
+ ]
+ */
+
+#define MSGPACK_COMP_INTEL MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || \
+ defined(__ECC)
+# if !defined(MSGPACK_COMP_INTEL_DETECTION) && defined(__INTEL_COMPILER)
+# define MSGPACK_COMP_INTEL_DETECTION MSGPACK_PREDEF_MAKE_10_VRP(__INTEL_COMPILER)
+# endif
+# if !defined(MSGPACK_COMP_INTEL_DETECTION)
+# define MSGPACK_COMP_INTEL_DETECTION MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#ifdef MSGPACK_COMP_INTEL_DETECTION
+# if defined(MSGPACK_PREDEF_DETAIL_COMP_DETECTED)
+# define MSGPACK_COMP_INTEL_EMULATED MSGPACK_COMP_INTEL_DETECTION
+# else
+# undef MSGPACK_COMP_INTEL
+# define MSGPACK_COMP_INTEL MSGPACK_COMP_INTEL_DETECTION
+# endif
+# define MSGPACK_COMP_INTEL_AVAILABLE
+# include <msgpack/predef/detail/comp_detected.h>
+#endif
+
+#define MSGPACK_COMP_INTEL_NAME "Intel C/C++"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_INTEL,MSGPACK_COMP_INTEL_NAME)
+
+#ifdef MSGPACK_COMP_INTEL_EMULATED
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_INTEL_EMULATED,MSGPACK_COMP_INTEL_NAME)
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/compiler/kai.h b/third_party/msgpack/include/msgpack/predef/compiler/kai.h
new file mode 100644
index 0000000000..232d54d5f0
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/compiler/kai.h
@@ -0,0 +1,56 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_COMPILER_KAI_H
+#define MSGPACK_PREDEF_COMPILER_KAI_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_COMP_KCC`]
+
+Kai C++ compiler.
+Version number available as major, minor, and patch.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__KCC`] [__predef_detection__]]
+
+ [[`__KCC_VERSION`] [V.R.P]]
+ ]
+ */
+
+#define MSGPACK_COMP_KCC MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__KCC)
+# define MSGPACK_COMP_KCC_DETECTION MSGPACK_PREDEF_MAKE_0X_VRPP(__KCC_VERSION)
+#endif
+
+#ifdef MSGPACK_COMP_KCC_DETECTION
+# if defined(MSGPACK_PREDEF_DETAIL_COMP_DETECTED)
+# define MSGPACK_COMP_KCC_EMULATED MSGPACK_COMP_KCC_DETECTION
+# else
+# undef MSGPACK_COMP_KCC
+# define MSGPACK_COMP_KCC MSGPACK_COMP_KCC_DETECTION
+# endif
+# define MSGPACK_COMP_KCC_AVAILABLE
+# include <msgpack/predef/detail/comp_detected.h>
+#endif
+
+#define MSGPACK_COMP_KCC_NAME "Kai C++"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_KCC,MSGPACK_COMP_KCC_NAME)
+
+#ifdef MSGPACK_COMP_KCC_EMULATED
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_KCC_EMULATED,MSGPACK_COMP_KCC_NAME)
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/compiler/llvm.h b/third_party/msgpack/include/msgpack/predef/compiler/llvm.h
new file mode 100644
index 0000000000..873d308731
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/compiler/llvm.h
@@ -0,0 +1,57 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_COMPILER_LLVM_H
+#define MSGPACK_PREDEF_COMPILER_LLVM_H
+
+/* Other compilers that emulate this one need to be detected first. */
+
+#include <msgpack/predef/compiler/clang.h>
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_COMP_LLVM`]
+
+[@http://en.wikipedia.org/wiki/LLVM LLVM] compiler.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__llvm__`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_COMP_LLVM MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__llvm__)
+# define MSGPACK_COMP_LLVM_DETECTION MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#ifdef MSGPACK_COMP_LLVM_DETECTION
+# if defined(MSGPACK_PREDEF_DETAIL_COMP_DETECTED)
+# define MSGPACK_COMP_LLVM_EMULATED MSGPACK_COMP_LLVM_DETECTION
+# else
+# undef MSGPACK_COMP_LLVM
+# define MSGPACK_COMP_LLVM MSGPACK_COMP_LLVM_DETECTION
+# endif
+# define MSGPACK_COMP_LLVM_AVAILABLE
+# include <msgpack/predef/detail/comp_detected.h>
+#endif
+
+#define MSGPACK_COMP_LLVM_NAME "LLVM"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_LLVM,MSGPACK_COMP_LLVM_NAME)
+
+#ifdef MSGPACK_COMP_LLVM_EMULATED
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_LLVM_EMULATED,MSGPACK_COMP_LLVM_NAME)
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/compiler/metaware.h b/third_party/msgpack/include/msgpack/predef/compiler/metaware.h
new file mode 100644
index 0000000000..a3c66adcd3
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/compiler/metaware.h
@@ -0,0 +1,53 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_COMPILER_METAWARE_H
+#define MSGPACK_PREDEF_COMPILER_METAWARE_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_COMP_HIGHC`]
+
+MetaWare High C/C++ compiler.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__HIGHC__`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_COMP_HIGHC MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__HIGHC__)
+# define MSGPACK_COMP_HIGHC_DETECTION MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#ifdef MSGPACK_COMP_HIGHC_DETECTION
+# if defined(MSGPACK_PREDEF_DETAIL_COMP_DETECTED)
+# define MSGPACK_COMP_HIGHC_EMULATED MSGPACK_COMP_HIGHC_DETECTION
+# else
+# undef MSGPACK_COMP_HIGHC
+# define MSGPACK_COMP_HIGHC MSGPACK_COMP_HIGHC_DETECTION
+# endif
+# define MSGPACK_COMP_HIGHC_AVAILABLE
+# include <msgpack/predef/detail/comp_detected.h>
+#endif
+
+#define MSGPACK_COMP_HIGHC_NAME "MetaWare High C/C++"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_HIGHC,MSGPACK_COMP_HIGHC_NAME)
+
+#ifdef MSGPACK_COMP_HIGHC_EMULATED
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_HIGHC_EMULATED,MSGPACK_COMP_HIGHC_NAME)
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/compiler/metrowerks.h b/third_party/msgpack/include/msgpack/predef/compiler/metrowerks.h
new file mode 100644
index 0000000000..2b902b371c
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/compiler/metrowerks.h
@@ -0,0 +1,77 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_COMPILER_METROWERKS_H
+#define MSGPACK_PREDEF_COMPILER_METROWERKS_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_COMP_MWERKS`]
+
+[@http://en.wikipedia.org/wiki/CodeWarrior Metrowerks CodeWarrior] compiler.
+Version number available as major, minor, and patch.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__MWERKS__`] [__predef_detection__]]
+ [[`__CWCC__`] [__predef_detection__]]
+
+ [[`__CWCC__`] [V.R.P]]
+ [[`__MWERKS__`] [V.R.P >= 4.2.0]]
+ [[`__MWERKS__`] [9.R.0]]
+ [[`__MWERKS__`] [8.R.0]]
+ ]
+ */
+
+#define MSGPACK_COMP_MWERKS MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__MWERKS__) || defined(__CWCC__)
+# if !defined(MSGPACK_COMP_MWERKS_DETECTION) && defined(__CWCC__)
+# define MSGPACK_COMP_MWERKS_DETECTION MSGPACK_PREDEF_MAKE_0X_VRPP(__CWCC__)
+# endif
+# if !defined(MSGPACK_COMP_MWERKS_DETECTION) && (__MWERKS__ >= 0x4200)
+# define MSGPACK_COMP_MWERKS_DETECTION MSGPACK_PREDEF_MAKE_0X_VRPP(__MWERKS__)
+# endif
+# if !defined(MSGPACK_COMP_MWERKS_DETECTION) && (__MWERKS__ >= 0x3204) // note the "skip": 04->9.3
+# define MSGPACK_COMP_MWERKS_DETECTION MSGPACK_VERSION_NUMBER(9,(__MWERKS__)%100-1,0)
+# endif
+# if !defined(MSGPACK_COMP_MWERKS_DETECTION) && (__MWERKS__ >= 0x3200)
+# define MSGPACK_COMP_MWERKS_DETECTION MSGPACK_VERSION_NUMBER(9,(__MWERKS__)%100,0)
+# endif
+# if !defined(MSGPACK_COMP_MWERKS_DETECTION) && (__MWERKS__ >= 0x3000)
+# define MSGPACK_COMP_MWERKS_DETECTION MSGPACK_VERSION_NUMBER(8,(__MWERKS__)%100,0)
+# endif
+# if !defined(MSGPACK_COMP_MWERKS_DETECTION)
+# define MSGPACK_COMP_MWERKS_DETECTION MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#ifdef MSGPACK_COMP_MWERKS_DETECTION
+# if defined(MSGPACK_PREDEF_DETAIL_COMP_DETECTED)
+# define MSGPACK_COMP_MWERKS_EMULATED MSGPACK_COMP_MWERKS_DETECTION
+# else
+# undef MSGPACK_COMP_MWERKS
+# define MSGPACK_COMP_MWERKS MSGPACK_COMP_MWERKS_DETECTION
+# endif
+# define MSGPACK_COMP_MWERKS_AVAILABLE
+# include <msgpack/predef/detail/comp_detected.h>
+#endif
+
+#define MSGPACK_COMP_MWERKS_NAME "Metrowerks CodeWarrior"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_MWERKS,MSGPACK_COMP_MWERKS_NAME)
+
+#ifdef MSGPACK_COMP_MWERKS_EMULATED
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_MWERKS_EMULATED,MSGPACK_COMP_MWERKS_NAME)
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/compiler/microtec.h b/third_party/msgpack/include/msgpack/predef/compiler/microtec.h
new file mode 100644
index 0000000000..bc9c360284
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/compiler/microtec.h
@@ -0,0 +1,53 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_COMPILER_MICROTEC_H
+#define MSGPACK_PREDEF_COMPILER_MICROTEC_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_COMP_MRI`]
+
+[@http://www.mentor.com/microtec/ Microtec C/C++] compiler.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`_MRI`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_COMP_MRI MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(_MRI)
+# define MSGPACK_COMP_MRI_DETECTION MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#ifdef MSGPACK_COMP_MRI_DETECTION
+# if defined(MSGPACK_PREDEF_DETAIL_COMP_DETECTED)
+# define MSGPACK_COMP_MRI_EMULATED MSGPACK_COMP_MRI_DETECTION
+# else
+# undef MSGPACK_COMP_MRI
+# define MSGPACK_COMP_MRI MSGPACK_COMP_MRI_DETECTION
+# endif
+# define MSGPACK_COMP_MRI_AVAILABLE
+# include <msgpack/predef/detail/comp_detected.h>
+#endif
+
+#define MSGPACK_COMP_MRI_NAME "Microtec C/C++"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_MRI,MSGPACK_COMP_MRI_NAME)
+
+#ifdef MSGPACK_COMP_MRI_EMULATED
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_MRI_EMULATED,MSGPACK_COMP_MRI_NAME)
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/compiler/mpw.h b/third_party/msgpack/include/msgpack/predef/compiler/mpw.h
new file mode 100644
index 0000000000..81788f9dfd
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/compiler/mpw.h
@@ -0,0 +1,63 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_COMPILER_MPW_H
+#define MSGPACK_PREDEF_COMPILER_MPW_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_COMP_MPW`]
+
+[@http://en.wikipedia.org/wiki/Macintosh_Programmer%27s_Workshop MPW C++] compiler.
+Version number available as major, and minor.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__MRC__`] [__predef_detection__]]
+ [[`MPW_C`] [__predef_detection__]]
+ [[`MPW_CPLUS`] [__predef_detection__]]
+
+ [[`__MRC__`] [V.R.0]]
+ ]
+ */
+
+#define MSGPACK_COMP_MPW MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__MRC__) || defined(MPW_C) || defined(MPW_CPLUS)
+# if !defined(MSGPACK_COMP_MPW_DETECTION) && defined(__MRC__)
+# define MSGPACK_COMP_MPW_DETECTION MSGPACK_PREDEF_MAKE_0X_VVRR(__MRC__)
+# endif
+# if !defined(MSGPACK_COMP_MPW_DETECTION)
+# define MSGPACK_COMP_MPW_DETECTION MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#ifdef MSGPACK_COMP_MPW_DETECTION
+# if defined(MSGPACK_PREDEF_DETAIL_COMP_DETECTED)
+# define MSGPACK_COMP_MPW_EMULATED MSGPACK_COMP_MPW_DETECTION
+# else
+# undef MSGPACK_COMP_MPW
+# define MSGPACK_COMP_MPW MSGPACK_COMP_MPW_DETECTION
+# endif
+# define MSGPACK_COMP_MPW_AVAILABLE
+# include <msgpack/predef/detail/comp_detected.h>
+#endif
+
+#define MSGPACK_COMP_MPW_NAME "MPW C++"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_MPW,MSGPACK_COMP_MPW_NAME)
+
+#ifdef MSGPACK_COMP_MPW_EMULATED
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_MPW_EMULATED,MSGPACK_COMP_MPW_NAME)
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/compiler/palm.h b/third_party/msgpack/include/msgpack/predef/compiler/palm.h
new file mode 100644
index 0000000000..0134cd2939
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/compiler/palm.h
@@ -0,0 +1,56 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_COMPILER_PALM_H
+#define MSGPACK_PREDEF_COMPILER_PALM_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_COMP_PALM`]
+
+Palm C/C++ compiler.
+Version number available as major, minor, and patch.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`_PACC_VER`] [__predef_detection__]]
+
+ [[`_PACC_VER`] [V.R.P]]
+ ]
+ */
+
+#define MSGPACK_COMP_PALM MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(_PACC_VER)
+# define MSGPACK_COMP_PALM_DETECTION MSGPACK_PREDEF_MAKE_0X_VRRPP000(_PACC_VER)
+#endif
+
+#ifdef MSGPACK_COMP_PALM_DETECTION
+# if defined(MSGPACK_PREDEF_DETAIL_COMP_DETECTED)
+# define MSGPACK_COMP_PALM_EMULATED MSGPACK_COMP_PALM_DETECTION
+# else
+# undef MSGPACK_COMP_PALM
+# define MSGPACK_COMP_PALM MSGPACK_COMP_PALM_DETECTION
+# endif
+# define MSGPACK_COMP_PALM_AVAILABLE
+# include <msgpack/predef/detail/comp_detected.h>
+#endif
+
+#define MSGPACK_COMP_PALM_NAME "Palm C/C++"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_PALM,MSGPACK_COMP_PALM_NAME)
+
+#ifdef MSGPACK_COMP_PALM_EMULATED
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_PALM_EMULATED,MSGPACK_COMP_PALM_NAME)
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/compiler/pgi.h b/third_party/msgpack/include/msgpack/predef/compiler/pgi.h
new file mode 100644
index 0000000000..a8399dd371
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/compiler/pgi.h
@@ -0,0 +1,60 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_COMPILER_PGI_H
+#define MSGPACK_PREDEF_COMPILER_PGI_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_COMP_PGI`]
+
+[@http://en.wikipedia.org/wiki/The_Portland_Group Portland Group C/C++] compiler.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__PGI`] [__predef_detection__]]
+
+ [[`__PGIC__`, `__PGIC_MINOR__`, `__PGIC_PATCHLEVEL__`] [V.R.P]]
+ ]
+ */
+
+#define MSGPACK_COMP_PGI MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__PGI)
+# if !defined(MSGPACK_COMP_PGI_DETECTION) && (defined(__PGIC__) && defined(__PGIC_MINOR__) && defined(__PGIC_PATCHLEVEL__))
+# define MSGPACK_COMP_PGI_DETECTION MSGPACK_VERSION_NUMBER(__PGIC__,__PGIC_MINOR__,__PGIC_PATCHLEVEL__)
+# endif
+# if !defined(MSGPACK_COMP_PGI_DETECTION)
+# define MSGPACK_COMP_PGI_DETECTION MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#ifdef MSGPACK_COMP_PGI_DETECTION
+# if defined(MSGPACK_PREDEF_DETAIL_COMP_DETECTED)
+# define MSGPACK_COMP_PGI_EMULATED MSGPACK_COMP_PGI_DETECTION
+# else
+# undef MSGPACK_COMP_PGI
+# define MSGPACK_COMP_PGI MSGPACK_COMP_PGI_DETECTION
+# endif
+# define MSGPACK_COMP_PGI_AVAILABLE
+# include <msgpack/predef/detail/comp_detected.h>
+#endif
+
+#define MSGPACK_COMP_PGI_NAME "Portland Group C/C++"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_PGI,MSGPACK_COMP_PGI_NAME)
+
+#ifdef MSGPACK_COMP_PGI_EMULATED
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_PGI_EMULATED,MSGPACK_COMP_PGI_NAME)
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/compiler/sgi_mipspro.h b/third_party/msgpack/include/msgpack/predef/compiler/sgi_mipspro.h
new file mode 100644
index 0000000000..673b9bedc6
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/compiler/sgi_mipspro.h
@@ -0,0 +1,66 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_COMPILER_SGI_MIPSPRO_H
+#define MSGPACK_PREDEF_COMPILER_SGI_MIPSPRO_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_COMP_SGI`]
+
+[@http://en.wikipedia.org/wiki/MIPSpro SGI MIPSpro] compiler.
+Version number available as major, minor, and patch.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__sgi`] [__predef_detection__]]
+ [[`sgi`] [__predef_detection__]]
+
+ [[`_SGI_COMPILER_VERSION`] [V.R.P]]
+ [[`_COMPILER_VERSION`] [V.R.P]]
+ ]
+ */
+
+#define MSGPACK_COMP_SGI MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__sgi) || defined(sgi)
+# if !defined(MSGPACK_COMP_SGI_DETECTION) && defined(_SGI_COMPILER_VERSION)
+# define MSGPACK_COMP_SGI_DETECTION MSGPACK_PREDEF_MAKE_10_VRP(_SGI_COMPILER_VERSION)
+# endif
+# if !defined(MSGPACK_COMP_SGI_DETECTION) && defined(_COMPILER_VERSION)
+# define MSGPACK_COMP_SGI_DETECTION MSGPACK_PREDEF_MAKE_10_VRP(_COMPILER_VERSION)
+# endif
+# if !defined(MSGPACK_COMP_SGI_DETECTION)
+# define MSGPACK_COMP_SGI_DETECTION MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#ifdef MSGPACK_COMP_SGI_DETECTION
+# if defined(MSGPACK_PREDEF_DETAIL_COMP_DETECTED)
+# define MSGPACK_COMP_SGI_EMULATED MSGPACK_COMP_SGI_DETECTION
+# else
+# undef MSGPACK_COMP_SGI
+# define MSGPACK_COMP_SGI MSGPACK_COMP_SGI_DETECTION
+# endif
+# define MSGPACK_COMP_SGI_AVAILABLE
+# include <msgpack/predef/detail/comp_detected.h>
+#endif
+
+#define MSGPACK_COMP_SGI_NAME "SGI MIPSpro"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_SGI,MSGPACK_COMP_SGI_NAME)
+
+#ifdef MSGPACK_COMP_SGI_EMULATED
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_SGI_EMULATED,MSGPACK_COMP_SGI_NAME)
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/compiler/sunpro.h b/third_party/msgpack/include/msgpack/predef/compiler/sunpro.h
new file mode 100644
index 0000000000..0b77334ede
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/compiler/sunpro.h
@@ -0,0 +1,76 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_COMPILER_SUNPRO_H
+#define MSGPACK_PREDEF_COMPILER_SUNPRO_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_COMP_SUNPRO`]
+
+[@http://en.wikipedia.org/wiki/Oracle_Solaris_Studio Oracle Solaris Studio] compiler.
+Version number available as major, minor, and patch.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__SUNPRO_CC`] [__predef_detection__]]
+ [[`__SUNPRO_C`] [__predef_detection__]]
+
+ [[`__SUNPRO_CC`] [V.R.P]]
+ [[`__SUNPRO_C`] [V.R.P]]
+ [[`__SUNPRO_CC`] [VV.RR.P]]
+ [[`__SUNPRO_C`] [VV.RR.P]]
+ ]
+ */
+
+#define MSGPACK_COMP_SUNPRO MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__SUNPRO_CC) || defined(__SUNPRO_C)
+# if !defined(MSGPACK_COMP_SUNPRO_DETECTION) && defined(__SUNPRO_CC)
+# if (__SUNPRO_CC < 0x5100)
+# define MSGPACK_COMP_SUNPRO_DETECTION MSGPACK_PREDEF_MAKE_0X_VRP(__SUNPRO_CC)
+# else
+# define MSGPACK_COMP_SUNPRO_DETECTION MSGPACK_PREDEF_MAKE_0X_VVRRP(__SUNPRO_CC)
+# endif
+# endif
+# if !defined(MSGPACK_COMP_SUNPRO_DETECTION) && defined(__SUNPRO_C)
+# if (__SUNPRO_C < 0x5100)
+# define MSGPACK_COMP_SUNPRO_DETECTION MSGPACK_PREDEF_MAKE_0X_VRP(__SUNPRO_C)
+# else
+# define MSGPACK_COMP_SUNPRO_DETECTION MSGPACK_PREDEF_MAKE_0X_VVRRP(__SUNPRO_C)
+# endif
+# endif
+# if !defined(MSGPACK_COMP_SUNPRO_DETECTION)
+# define MSGPACK_COMP_SUNPRO_DETECTION MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#ifdef MSGPACK_COMP_SUNPRO_DETECTION
+# if defined(MSGPACK_PREDEF_DETAIL_COMP_DETECTED)
+# define MSGPACK_COMP_SUNPRO_EMULATED MSGPACK_COMP_SUNPRO_DETECTION
+# else
+# undef MSGPACK_COMP_SUNPRO
+# define MSGPACK_COMP_SUNPRO MSGPACK_COMP_SUNPRO_DETECTION
+# endif
+# define MSGPACK_COMP_SUNPRO_AVAILABLE
+# include <msgpack/predef/detail/comp_detected.h>
+#endif
+
+#define MSGPACK_COMP_SUNPRO_NAME "Oracle Solaris Studio"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_SUNPRO,MSGPACK_COMP_SUNPRO_NAME)
+
+#ifdef MSGPACK_COMP_SUNPRO_EMULATED
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_SUNPRO_EMULATED,MSGPACK_COMP_SUNPRO_NAME)
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/compiler/tendra.h b/third_party/msgpack/include/msgpack/predef/compiler/tendra.h
new file mode 100644
index 0000000000..e90df56006
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/compiler/tendra.h
@@ -0,0 +1,53 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_COMPILER_TENDRA_H
+#define MSGPACK_PREDEF_COMPILER_TENDRA_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_COMP_TENDRA`]
+
+[@http://en.wikipedia.org/wiki/TenDRA_Compiler TenDRA C/C++] compiler.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__TenDRA__`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_COMP_TENDRA MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__TenDRA__)
+# define MSGPACK_COMP_TENDRA_DETECTION MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#ifdef MSGPACK_COMP_TENDRA_DETECTION
+# if defined(MSGPACK_PREDEF_DETAIL_COMP_DETECTED)
+# define MSGPACK_COMP_TENDRA_EMULATED MSGPACK_COMP_TENDRA_DETECTION
+# else
+# undef MSGPACK_COMP_TENDRA
+# define MSGPACK_COMP_TENDRA MSGPACK_COMP_TENDRA_DETECTION
+# endif
+# define MSGPACK_COMP_TENDRA_AVAILABLE
+# include <msgpack/predef/detail/comp_detected.h>
+#endif
+
+#define MSGPACK_COMP_TENDRA_NAME "TenDRA C/C++"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_TENDRA,MSGPACK_COMP_TENDRA_NAME)
+
+#ifdef MSGPACK_COMP_TENDRA_EMULATED
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_TENDRA_EMULATED,MSGPACK_COMP_TENDRA_NAME)
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/compiler/visualc.h b/third_party/msgpack/include/msgpack/predef/compiler/visualc.h
new file mode 100644
index 0000000000..547a5bf197
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/compiler/visualc.h
@@ -0,0 +1,91 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_COMPILER_VISUALC_H
+#define MSGPACK_PREDEF_COMPILER_VISUALC_H
+
+/* Other compilers that emulate this one need to be detected first. */
+
+#include <msgpack/predef/compiler/clang.h>
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_COMP_MSVC`]
+
+[@http://en.wikipedia.org/wiki/Visual_studio Microsoft Visual C/C++] compiler.
+Version number available as major, minor, and patch.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`_MSC_VER`] [__predef_detection__]]
+
+ [[`_MSC_FULL_VER`] [V.R.P]]
+ [[`_MSC_VER`] [V.R.0]]
+ ]
+ */
+
+#define MSGPACK_COMP_MSVC MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(_MSC_VER)
+# if !defined (_MSC_FULL_VER)
+# define MSGPACK_COMP_MSVC_BUILD 0
+# else
+ /* how many digits does the build number have? */
+# if _MSC_FULL_VER / 10000 == _MSC_VER
+ /* four digits */
+# define MSGPACK_COMP_MSVC_BUILD (_MSC_FULL_VER % 10000)
+# elif _MSC_FULL_VER / 100000 == _MSC_VER
+ /* five digits */
+# define MSGPACK_COMP_MSVC_BUILD (_MSC_FULL_VER % 100000)
+# else
+# error "Cannot determine build number from _MSC_FULL_VER"
+# endif
+# endif
+ /*
+ VS2014 was skipped in the release sequence for MS. Which
+ means that the compiler and VS product versions are no longer
+ in sync. Hence we need to use different formulas for
+ mapping from MSC version to VS product version.
+ */
+# if (_MSC_VER >= 1900)
+# define MSGPACK_COMP_MSVC_DETECTION MSGPACK_VERSION_NUMBER(\
+ _MSC_VER/100-5,\
+ _MSC_VER%100,\
+ MSGPACK_COMP_MSVC_BUILD)
+# else
+# define MSGPACK_COMP_MSVC_DETECTION MSGPACK_VERSION_NUMBER(\
+ _MSC_VER/100-6,\
+ _MSC_VER%100,\
+ MSGPACK_COMP_MSVC_BUILD)
+# endif
+#endif
+
+#ifdef MSGPACK_COMP_MSVC_DETECTION
+# if defined(MSGPACK_PREDEF_DETAIL_COMP_DETECTED)
+# define MSGPACK_COMP_MSVC_EMULATED MSGPACK_COMP_MSVC_DETECTION
+# else
+# undef MSGPACK_COMP_MSVC
+# define MSGPACK_COMP_MSVC MSGPACK_COMP_MSVC_DETECTION
+# endif
+# define MSGPACK_COMP_MSVC_AVAILABLE
+# include <msgpack/predef/detail/comp_detected.h>
+#endif
+
+#define MSGPACK_COMP_MSVC_NAME "Microsoft Visual C/C++"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_MSVC,MSGPACK_COMP_MSVC_NAME)
+
+#ifdef MSGPACK_COMP_MSVC_EMULATED
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_MSVC_EMULATED,MSGPACK_COMP_MSVC_NAME)
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/compiler/watcom.h b/third_party/msgpack/include/msgpack/predef/compiler/watcom.h
new file mode 100644
index 0000000000..6e3022ac47
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/compiler/watcom.h
@@ -0,0 +1,56 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_COMPILER_WATCOM_H
+#define MSGPACK_PREDEF_COMPILER_WATCOM_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_COMP_WATCOM`]
+
+[@http://en.wikipedia.org/wiki/Watcom Watcom C++] compiler.
+Version number available as major, and minor.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__WATCOMC__`] [__predef_detection__]]
+
+ [[`__WATCOMC__`] [V.R.P]]
+ ]
+ */
+
+#define MSGPACK_COMP_WATCOM MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__WATCOMC__)
+# define MSGPACK_COMP_WATCOM_DETECTION MSGPACK_PREDEF_MAKE_10_VVRR(__WATCOMC__)
+#endif
+
+#ifdef MSGPACK_COMP_WATCOM_DETECTION
+# if defined(MSGPACK_PREDEF_DETAIL_COMP_DETECTED)
+# define MSGPACK_COMP_WATCOM_EMULATED MSGPACK_COMP_WATCOM_DETECTION
+# else
+# undef MSGPACK_COMP_WATCOM
+# define MSGPACK_COMP_WATCOM MSGPACK_COMP_WATCOM_DETECTION
+# endif
+# define MSGPACK_COMP_WATCOM_AVAILABLE
+# include <msgpack/predef/detail/comp_detected.h>
+#endif
+
+#define MSGPACK_COMP_WATCOM_NAME "Watcom C++"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_WATCOM,MSGPACK_COMP_WATCOM_NAME)
+
+#ifdef MSGPACK_COMP_WATCOM_EMULATED
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_COMP_WATCOM_EMULATED,MSGPACK_COMP_WATCOM_NAME)
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/detail/_cassert.h b/third_party/msgpack/include/msgpack/predef/detail/_cassert.h
new file mode 100644
index 0000000000..155ebebdb9
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/detail/_cassert.h
@@ -0,0 +1,17 @@
+/*
+Copyright Rene Rivera 2011-2012
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_DETAIL__CASSERT_H
+#define MSGPACK_PREDEF_DETAIL__CASSERT_H
+
+#if defined(__cplusplus)
+#include <cassert>
+#else
+#include <assert.h>
+#endif
+
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/detail/_exception.h b/third_party/msgpack/include/msgpack/predef/detail/_exception.h
new file mode 100644
index 0000000000..ca157b9537
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/detail/_exception.h
@@ -0,0 +1,15 @@
+/*
+Copyright Rene Rivera 2011-2012
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_DETAIL__EXCEPTION_H
+#define MSGPACK_PREDEF_DETAIL__EXCEPTION_H
+
+#if defined(__cplusplus)
+#include <exception>
+#endif
+
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/detail/comp_detected.h b/third_party/msgpack/include/msgpack/predef/detail/comp_detected.h
new file mode 100644
index 0000000000..3996fd3979
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/detail/comp_detected.h
@@ -0,0 +1,10 @@
+/*
+Copyright Rene Rivera 2014
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_DETAIL_COMP_DETECTED
+#define MSGPACK_PREDEF_DETAIL_COMP_DETECTED 1
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/detail/endian_compat.h b/third_party/msgpack/include/msgpack/predef/detail/endian_compat.h
new file mode 100644
index 0000000000..1b4a66581c
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/detail/endian_compat.h
@@ -0,0 +1,26 @@
+/*
+Copyright Rene Rivera 2013
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_DETAIL_ENDIAN_COMPAT_H
+#define MSGPACK_PREDEF_DETAIL_ENDIAN_COMPAT_H
+
+#include <msgpack/predef/other/endian.h>
+
+#if MSGPACK_ENDIAN_BIG_BYTE
+# define MSGPACK_BIG_ENDIAN
+# define MSGPACK_BYTE_ORDER 4321
+#endif
+#if MSGPACK_ENDIAN_LITTLE_BYTE
+# define MSGPACK_LITTLE_ENDIAN
+# define MSGPACK_BYTE_ORDER 1234
+#endif
+#if MSGPACK_ENDIAN_LITTLE_WORD
+# define MSGPACK_PDP_ENDIAN
+# define MSGPACK_BYTE_ORDER 2134
+#endif
+
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/detail/os_detected.h b/third_party/msgpack/include/msgpack/predef/detail/os_detected.h
new file mode 100644
index 0000000000..f9f23b787e
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/detail/os_detected.h
@@ -0,0 +1,10 @@
+/*
+Copyright Rene Rivera 2013
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_DETAIL_OS_DETECTED
+#define MSGPACK_PREDEF_DETAIL_OS_DETECTED 1
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/detail/platform_detected.h b/third_party/msgpack/include/msgpack/predef/detail/platform_detected.h
new file mode 100644
index 0000000000..782b3a291d
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/detail/platform_detected.h
@@ -0,0 +1,10 @@
+/*
+Copyright Rene Rivera 2014
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_DETAIL_PLAT_DETECTED
+#define MSGPACK_PREDEF_DETAIL_PLAT_DETECTED 1
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/detail/test.h b/third_party/msgpack/include/msgpack/predef/detail/test.h
new file mode 100644
index 0000000000..1414060350
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/detail/test.h
@@ -0,0 +1,17 @@
+/*
+Copyright Rene Rivera 2011-2012
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_DETAIL_TEST_H
+#define MSGPACK_PREDEF_DETAIL_TEST_H
+
+#if !defined(MSGPACK_PREDEF_INTERNAL_GENERATE_TESTS)
+
+#define MSGPACK_PREDEF_DECLARE_TEST(x,s)
+
+#endif
+
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/detail/test_def.h b/third_party/msgpack/include/msgpack/predef/detail/test_def.h
new file mode 100644
index 0000000000..924c1e5f2d
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/detail/test_def.h
@@ -0,0 +1,71 @@
+/*
+Copyright Rene Rivera 2011-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+#include <msgpack/predef.h>
+
+#define MSGPACK_PREDEF_INTERNAL_GENERATE_TESTS
+
+void * add_predef_entry(const char * name, const char * description, unsigned value)
+#undef MSGPACK_PREDEF_DECLARE_TEST
+#define MSGPACK_PREDEF_DECLARE_TEST(x,s) void predef_entry_##x() { add_predef_entry(#x, s, x) }
+#include <msgpack/predef.h>
+
+#undef MSGPACK_PREDEF_DECLARE_TEST
+#define MSGPACK_PREDEF_DECLARE_TEST(x,s) predef_entry_##x()
+void create_predef_entries()
+{
+#include <msgpack/predef.h>
+}
+
+#ifdef __cplusplus
+#include <cstring>
+#include <cstdio>
+#include <cstdlib>
+using namespace std
+#else
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#endif
+
+typedef struct predef_info
+{
+ const char * name
+ const char * description
+ unsigned value
+} predef_info
+
+#ifdef __cplusplus
+using namespace std
+#endif
+
+unsigned generated_predef_info_count = 0
+predef_info* generated_predef_info = 0
+void * add_predef_entry(const char * name, const char * description, unsigned value)
+{
+ if (0 == generated_predef_info_count)
+ {
+ generated_predef_info_count = 1
+ generated_predef_info = (predef_info*)malloc(sizeof(predef_info))
+ }
+ else
+ {
+ generated_predef_info_count += 1
+ generated_predef_info = (predef_info*)realloc(generated_predef_info,
+ generated_predef_info_count*sizeof(predef_info))
+ }
+ generated_predef_info[generated_predef_info_count-1].name = name
+ generated_predef_info[generated_predef_info_count-1].description = description
+ generated_predef_info[generated_predef_info_count-1].value = value
+ return 0
+}
+
+int predef_info_compare(const void * a, const void * b)
+{
+ const predef_info * i = (const predef_info *)a
+ const predef_info * j = (const predef_info *)b
+ return strcmp(i->name,j->name)
+}
diff --git a/third_party/msgpack/include/msgpack/predef/hardware.h b/third_party/msgpack/include/msgpack/predef/hardware.h
new file mode 100644
index 0000000000..328409839d
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/hardware.h
@@ -0,0 +1,16 @@
+/*
+Copyright Charly Chevalier 2015
+Copyright Joel Falcou 2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#if !defined(MSGPACK_PREDEF_HARDWARE_H) || defined(MSGPACK_PREDEF_INTERNAL_GENERATE_TESTS)
+#ifndef MSGPACK_PREDEF_HARDWARE_H
+#define MSGPACK_PREDEF_HARDWARE_H
+#endif
+
+#include <msgpack/predef/hardware/simd.h>
+
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/hardware/simd.h b/third_party/msgpack/include/msgpack/predef/hardware/simd.h
new file mode 100644
index 0000000000..30489d22b9
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/hardware/simd.h
@@ -0,0 +1,119 @@
+/*
+Copyright Charly Chevalier 2015
+Copyright Joel Falcou 2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#include <msgpack/predef/hardware/simd/x86.h>
+#include <msgpack/predef/hardware/simd/x86_amd.h>
+#include <msgpack/predef/hardware/simd/arm.h>
+#include <msgpack/predef/hardware/simd/ppc.h>
+
+#ifndef MSGPACK_PREDEF_HARDWARE_SIMD_H
+#define MSGPACK_PREDEF_HARDWARE_SIMD_H
+
+#include <msgpack/predef/version_number.h>
+
+/*`
+ [section Using the `MSGPACK_HW_SIMD_*` predefs]
+ [include ../doc/hardware_simd.qbk]
+ [endsect]
+
+ [/ --------------------------- ]
+
+ [section `MSGPACK_HW_SIMD_*`]
+
+ [heading `MSGPACK_HW_SIMD`]
+
+ The SIMD extension detected for a specific architectures.
+ Version number depends on the detected extension.
+
+ [table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`MSGPACK_HW_SIMD_X86_AVAILABLE`] [__predef_detection__]]
+ [[`MSGPACK_HW_SIMD_X86_AMD_AVAILABLE`] [__predef_detection__]]
+ [[`MSGPACK_HW_SIMD_ARM_AVAILABLE`] [__predef_detection__]]
+ [[`MSGPACK_HW_SIMD_PPC_AVAILABLE`] [__predef_detection__]]
+ ]
+
+ [include ../include/msgpack/predef/hardware/simd/x86.h]
+ [include ../include/msgpack/predef/hardware/simd/x86_amd.h]
+ [include ../include/msgpack/predef/hardware/simd/arm.h]
+ [include ../include/msgpack/predef/hardware/simd/ppc.h]
+
+ [endsect]
+
+ [/ --------------------------- ]
+
+ [section `MSGPACK_HW_SIMD_X86_*_VERSION`]
+ [include ../include/msgpack/predef/hardware/simd/x86/versions.h]
+ [endsect]
+
+ [section `MSGPACK_HW_SIMD_X86_AMD_*_VERSION`]
+ [include ../include/msgpack/predef/hardware/simd/x86_amd/versions.h]
+ [endsect]
+
+ [section `MSGPACK_HW_SIMD_ARM_*_VERSION`]
+ [include ../include/msgpack/predef/hardware/simd/arm/versions.h]
+ [endsect]
+
+ [section `MSGPACK_HW_SIMD_PPC_*_VERSION`]
+ [include ../include/msgpack/predef/hardware/simd/ppc/versions.h]
+ [endsect]
+
+ */
+
+// We check if SIMD extension of multiples architectures have been detected,
+// if yes, then this is an error!
+//
+// NOTE: _X86_AMD implies _X86, so there is no need to check for it here!
+//
+#if defined(MSGPACK_HW_SIMD_ARM_AVAILABLE) && defined(MSGPACK_HW_SIMD_PPC_AVAILABLE) ||\
+ defined(MSGPACK_HW_SIMD_ARM_AVAILABLE) && defined(MSGPACK_HW_SIMD_X86_AVAILABLE) ||\
+ defined(MSGPACK_HW_SIMD_PPC_AVAILABLE) && defined(MSGPACK_HW_SIMD_X86_AVAILABLE)
+# error "Multiple SIMD architectures detected, this cannot happen!"
+#endif
+
+#if defined(MSGPACK_HW_SIMD_X86_AVAILABLE) && defined(MSGPACK_HW_SIMD_X86_AMD_AVAILABLE)
+ // If both standard _X86 and _X86_AMD are available,
+ // then take the biggest version of the two!
+# if MSGPACK_HW_SIMD_X86 >= MSGPACK_HW_SIMD_X86_AMD
+# define MSGPACK_HW_SIMD MSGPACK_HW_SIMD_X86
+# else
+# define MSGPACK_HW_SIMD MSGPACK_HW_SIMD_X86_AMD
+# endif
+#endif
+
+#if !defined(MSGPACK_HW_SIMD)
+ // At this point, only one of these two is defined
+# if defined(MSGPACK_HW_SIMD_X86_AVAILABLE)
+# define MSGPACK_HW_SIMD MSGPACK_HW_SIMD_X86
+# endif
+# if defined(MSGPACK_HW_SIMD_X86_AMD_AVAILABLE)
+# define MSGPACK_HW_SIMD MSGPACK_HW_SIMD_X86_AMD
+# endif
+#endif
+
+#if defined(MSGPACK_HW_SIMD_ARM_AVAILABLE)
+# define MSGPACK_HW_SIMD MSGPACK_HW_SIMD_ARM
+#endif
+
+#if defined(MSGPACK_HW_SIMD_PPC_AVAILABLE)
+# define MSGPACK_HW_SIMD MSGPACK_HW_SIMD_PPC
+#endif
+
+#if defined(MSGPACK_HW_SIMD)
+# define MSGPACK_HW_SIMD_AVAILABLE
+#else
+# define MSGPACK_HW_SIMD MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+#endif
+
+#define MSGPACK_HW_SIMD_NAME "Hardware SIMD"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_HW_SIMD, MSGPACK_HW_SIMD_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/hardware/simd/arm.h b/third_party/msgpack/include/msgpack/predef/hardware/simd/arm.h
new file mode 100644
index 0000000000..0c22dbdc1f
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/hardware/simd/arm.h
@@ -0,0 +1,57 @@
+/*
+Copyright Charly Chevalier 2015
+Copyright Joel Falcou 2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_HARDWARE_SIMD_ARM_H
+#define MSGPACK_PREDEF_HARDWARE_SIMD_ARM_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/hardware/simd/arm/versions.h>
+
+/*`
+ [heading `MSGPACK_HW_SIMD_ARM`]
+
+ The SIMD extension for ARM (*if detected*).
+ Version number depends on the most recent detected extension.
+
+ [table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__ARM_NEON__`] [__predef_detection__]]
+ [[`__aarch64__`] [__predef_detection__]]
+ [[`_M_ARM`] [__predef_detection__]]
+ ]
+
+ [table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__ARM_NEON__`] [MSGPACK_HW_SIMD_ARM_NEON_VERSION]]
+ [[`__aarch64__`] [MSGPACK_HW_SIMD_ARM_NEON_VERSION]]
+ [[`_M_ARM`] [MSGPACK_HW_SIMD_ARM_NEON_VERSION]]
+ ]
+
+ */
+
+#define MSGPACK_HW_SIMD_ARM MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#undef MSGPACK_HW_SIMD_ARM
+#if !defined(MSGPACK_HW_SIMD_ARM) && (defined(__ARM_NEON__) || defined(__aarch64__) || defined (_M_ARM))
+# define MSGPACK_HW_SIMD_ARM MSGPACK_HW_SIMD_ARM_NEON_VERSION
+#endif
+
+#if !defined(MSGPACK_HW_SIMD_ARM)
+# define MSGPACK_HW_SIMD_ARM MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+#else
+# define MSGPACK_HW_SIMD_ARM_AVAILABLE
+#endif
+
+#define MSGPACK_HW_SIMD_ARM_NAME "ARM SIMD"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_HW_SIMD_ARM, MSGPACK_HW_SIMD_ARM_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/hardware/simd/arm/versions.h b/third_party/msgpack/include/msgpack/predef/hardware/simd/arm/versions.h
new file mode 100644
index 0000000000..6df71bd010
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/hardware/simd/arm/versions.h
@@ -0,0 +1,32 @@
+/*
+Copyright Charly Chevalier 2015
+Copyright Joel Falcou 2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_HARDWARE_SIMD_ARM_VERSIONS_H
+#define MSGPACK_PREDEF_HARDWARE_SIMD_ARM_VERSIONS_H
+
+#include <msgpack/predef/version_number.h>
+
+/*`
+ Those defines represent ARM SIMD extensions versions.
+
+ [note You *MUST* compare them with the predef `MSGPACK_HW_SIMD_ARM`.]
+ */
+
+// ---------------------------------
+
+/*`
+ [heading `MSGPACK_HW_SIMD_ARM_NEON_VERSION`]
+
+ The [@https://en.wikipedia.org/wiki/ARM_architecture#Advanced_SIMD_.28NEON.29 NEON]
+ ARM extension version number.
+
+ Version number is: *1.0.0*.
+ */
+#define MSGPACK_HW_SIMD_ARM_NEON_VERSION MSGPACK_VERSION_NUMBER(1, 0, 0)
+
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/hardware/simd/ppc.h b/third_party/msgpack/include/msgpack/predef/hardware/simd/ppc.h
new file mode 100644
index 0000000000..708cbbaffa
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/hardware/simd/ppc.h
@@ -0,0 +1,69 @@
+/*
+Copyright Charly Chevalier 2015
+Copyright Joel Falcou 2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_HARDWARE_SIMD_PPC_H
+#define MSGPACK_PREDEF_HARDWARE_SIMD_PPC_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/hardware/simd/ppc/versions.h>
+
+/*`
+ [heading `MSGPACK_HW_SIMD_PPC`]
+
+ The SIMD extension for PowerPC (*if detected*).
+ Version number depends on the most recent detected extension.
+
+ [table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__VECTOR4DOUBLE__`] [__predef_detection__]]
+
+ [[`__ALTIVEC__`] [__predef_detection__]]
+ [[`__VEC__`] [__predef_detection__]]
+
+ [[`__VSX__`] [__predef_detection__]]
+ ]
+
+ [table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__VECTOR4DOUBLE__`] [MSGPACK_HW_SIMD_PPC_QPX_VERSION]]
+
+ [[`__ALTIVEC__`] [MSGPACK_HW_SIMD_PPC_VMX_VERSION]]
+ [[`__VEC__`] [MSGPACK_HW_SIMD_PPC_VMX_VERSION]]
+
+ [[`__VSX__`] [MSGPACK_HW_SIMD_PPC_VSX_VERSION]]
+ ]
+
+ */
+
+#define MSGPACK_HW_SIMD_PPC MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#undef MSGPACK_HW_SIMD_PPC
+#if !defined(MSGPACK_HW_SIMD_PPC) && defined(__VECTOR4DOUBLE__)
+# define MSGPACK_HW_SIMD_PPC MSGPACK_HW_SIMD_PPC_QPX_VERSION
+#endif
+#if !defined(MSGPACK_HW_SIMD_PPC) && defined(__VSX__)
+# define MSGPACK_HW_SIMD_PPC MSGPACK_HW_SIMD_PPC_VSX_VERSION
+#endif
+#if !defined(MSGPACK_HW_SIMD_PPC) && (defined(__ALTIVEC__) || defined(__VEC__))
+# define MSGPACK_HW_SIMD_PPC MSGPACK_HW_SIMD_PPC_VMX_VERSION
+#endif
+
+#if !defined(MSGPACK_HW_SIMD_PPC)
+# define MSGPACK_HW_SIMD_PPC MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+#else
+# define MSGPACK_HW_SIMD_PPC_AVAILABLE
+#endif
+
+#define MSGPACK_HW_SIMD_PPC_NAME "PPC SIMD"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_HW_SIMD_PPC, MSGPACK_HW_SIMD_PPC_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/hardware/simd/ppc/versions.h b/third_party/msgpack/include/msgpack/predef/hardware/simd/ppc/versions.h
new file mode 100644
index 0000000000..0ef40f9bcf
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/hardware/simd/ppc/versions.h
@@ -0,0 +1,51 @@
+/*
+Copyright Charly Chevalier 2015
+Copyright Joel Falcou 2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_HARDWARE_SIMD_PPC_VERSIONS_H
+#define MSGPACK_PREDEF_HARDWARE_SIMD_PPC_VERSIONS_H
+
+#include <msgpack/predef/version_number.h>
+
+/*`
+ Those defines represent Power PC SIMD extensions versions.
+
+ [note You *MUST* compare them with the predef `MSGPACK_HW_SIMD_PPC`.]
+ */
+
+// ---------------------------------
+
+/*`
+ [heading `MSGPACK_HW_SIMD_PPC_VMX_VERSION`]
+
+ The [@https://en.wikipedia.org/wiki/AltiVec#VMX128 VMX] powerpc extension
+ version number.
+
+ Version number is: *1.0.0*.
+ */
+#define MSGPACK_HW_SIMD_PPC_VMX_VERSION MSGPACK_VERSION_NUMBER(1, 0, 0)
+
+/*`
+ [heading `MSGPACK_HW_SIMD_PPC_VSX_VERSION`]
+
+ The [@https://en.wikipedia.org/wiki/AltiVec#VSX VSX] powerpc extension version
+ number.
+
+ Version number is: *1.1.0*.
+ */
+#define MSGPACK_HW_SIMD_PPC_VSX_VERSION MSGPACK_VERSION_NUMBER(1, 1, 0)
+
+/*`
+ [heading `MSGPACK_HW_SIMD_PPC_QPX_VERSION`]
+
+ The QPX powerpc extension version number.
+
+ Version number is: *2.0.0*.
+ */
+#define MSGPACK_HW_SIMD_PPC_QPX_VERSION MSGPACK_VERSION_NUMBER(2, 0, 0)
+
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/hardware/simd/x86.h b/third_party/msgpack/include/msgpack/predef/hardware/simd/x86.h
new file mode 100644
index 0000000000..a3e56168c3
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/hardware/simd/x86.h
@@ -0,0 +1,123 @@
+/*
+Copyright Charly Chevalier 2015
+Copyright Joel Falcou 2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_HARDWARE_SIMD_X86_H
+#define MSGPACK_PREDEF_HARDWARE_SIMD_X86_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/hardware/simd/x86/versions.h>
+
+/*`
+ [heading `MSGPACK_HW_SIMD_X86`]
+
+ The SIMD extension for x86 (*if detected*).
+ Version number depends on the most recent detected extension.
+
+ [table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__SSE__`] [__predef_detection__]]
+ [[`_M_X64`] [__predef_detection__]]
+ [[`_M_IX86_FP >= 1`] [__predef_detection__]]
+
+ [[`__SSE2__`] [__predef_detection__]]
+ [[`_M_X64`] [__predef_detection__]]
+ [[`_M_IX86_FP >= 2`] [__predef_detection__]]
+
+ [[`__SSE3__`] [__predef_detection__]]
+
+ [[`__SSSE3__`] [__predef_detection__]]
+
+ [[`__SSE4_1__`] [__predef_detection__]]
+
+ [[`__SSE4_2__`] [__predef_detection__]]
+
+ [[`__AVX__`] [__predef_detection__]]
+
+ [[`__FMA__`] [__predef_detection__]]
+
+ [[`__AVX2__`] [__predef_detection__]]
+ ]
+
+ [table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__SSE__`] [MSGPACK_HW_SIMD_X86_SSE_VERSION]]
+ [[`_M_X64`] [MSGPACK_HW_SIMD_X86_SSE_VERSION]]
+ [[`_M_IX86_FP >= 1`] [MSGPACK_HW_SIMD_X86_SSE_VERSION]]
+
+ [[`__SSE2__`] [MSGPACK_HW_SIMD_X86_SSE2_VERSION]]
+ [[`_M_X64`] [MSGPACK_HW_SIMD_X86_SSE2_VERSION]]
+ [[`_M_IX86_FP >= 2`] [MSGPACK_HW_SIMD_X86_SSE2_VERSION]]
+
+ [[`__SSE3__`] [MSGPACK_HW_SIMD_X86_SSE3_VERSION]]
+
+ [[`__SSSE3__`] [MSGPACK_HW_SIMD_X86_SSSE3_VERSION]]
+
+ [[`__SSE4_1__`] [MSGPACK_HW_SIMD_X86_SSE4_1_VERSION]]
+
+ [[`__SSE4_2__`] [MSGPACK_HW_SIMD_X86_SSE4_2_VERSION]]
+
+ [[`__AVX__`] [MSGPACK_HW_SIMD_X86_AVX_VERSION]]
+
+ [[`__FMA__`] [MSGPACK_HW_SIMD_X86_FMA3_VERSION]]
+
+ [[`__AVX2__`] [MSGPACK_HW_SIMD_X86_AVX2_VERSION]]
+ ]
+
+ */
+
+#define MSGPACK_HW_SIMD_X86 MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#undef MSGPACK_HW_SIMD_X86
+#if !defined(MSGPACK_HW_SIMD_X86) && defined(__MIC__)
+# define MSGPACK_HW_SIMD_X86 MSGPACK_HW_SIMD_X86_MIC_VERSION
+#endif
+#if !defined(MSGPACK_HW_SIMD_X86) && defined(__AVX2__)
+# define MSGPACK_HW_SIMD_X86 MSGPACK_HW_SIMD_X86_AVX2_VERSION
+#endif
+#if !defined(MSGPACK_HW_SIMD_X86) && defined(__AVX__)
+# define MSGPACK_HW_SIMD_X86 MSGPACK_HW_SIMD_X86_AVX_VERSION
+#endif
+#if !defined(MSGPACK_HW_SIMD_X86) && defined(__FMA__)
+# define MSGPACK_HW_SIMD_X86 MSGPACK_HW_SIMD_X86_FMA_VERSION
+#endif
+#if !defined(MSGPACK_HW_SIMD_X86) && defined(__SSE4_2__)
+# define MSGPACK_HW_SIMD_X86 MSGPACK_HW_SIMD_X86_SSE4_2_VERSION
+#endif
+#if !defined(MSGPACK_HW_SIMD_X86) && defined(__SSE4_1__)
+# define MSGPACK_HW_SIMD_X86 MSGPACK_HW_SIMD_X86_SSE4_1_VERSION
+#endif
+#if !defined(MSGPACK_HW_SIMD_X86) && defined(__SSSE3__)
+# define MSGPACK_HW_SIMD_X86 MSGPACK_HW_SIMD_X86_SSSE3_VERSION
+#endif
+#if !defined(MSGPACK_HW_SIMD_X86) && defined(__SSE3__)
+# define MSGPACK_HW_SIMD_X86 MSGPACK_HW_SIMD_X86_SSE3_VERSION
+#endif
+#if !defined(MSGPACK_HW_SIMD_X86) && (defined(__SSE2__) || defined(_M_X64) || (defined(_M_IX86_FP) && _M_IX86_FP >= 2))
+# define MSGPACK_HW_SIMD_X86 MSGPACK_HW_SIMD_X86_SSE2_VERSION
+#endif
+#if !defined(MSGPACK_HW_SIMD_X86) && (defined(__SSE__) || defined(_M_X64) || (defined(_M_IX86_FP) && _M_IX86_FP >= 1))
+# define MSGPACK_HW_SIMD_X86 MSGPACK_HW_SIMD_X86_SSE_VERSION
+#endif
+#if !defined(MSGPACK_HW_SIMD_X86) && defined(__MMX__)
+# define MSGPACK_HW_SIMD_X86 MSGPACK_HW_SIMD_X86_MMX_VERSION
+#endif
+
+#if !defined(MSGPACK_HW_SIMD_X86)
+# define MSGPACK_HW_SIMD_X86 MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+#else
+# define MSGPACK_HW_SIMD_X86_AVAILABLE
+#endif
+
+#define MSGPACK_HW_SIMD_X86_NAME "x86 SIMD"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_HW_SIMD_X86, MSGPACK_HW_SIMD_X86_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/hardware/simd/x86/versions.h b/third_party/msgpack/include/msgpack/predef/hardware/simd/x86/versions.h
new file mode 100644
index 0000000000..a9f965071a
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/hardware/simd/x86/versions.h
@@ -0,0 +1,129 @@
+/*
+Copyright Charly Chevalier 2015
+Copyright Joel Falcou 2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_HARDWARE_SIMD_X86_VERSIONS_H
+#define MSGPACK_PREDEF_HARDWARE_SIMD_X86_VERSIONS_H
+
+#include <msgpack/predef/version_number.h>
+
+/*`
+ Those defines represent x86 SIMD extensions versions.
+
+ [note You *MUST* compare them with the predef `MSGPACK_HW_SIMD_X86`.]
+ */
+
+// ---------------------------------
+
+/*`
+ [heading `MSGPACK_HW_SIMD_X86_MMX_VERSION`]
+
+ The [@https://en.wikipedia.org/wiki/MMX_(instruction_set) MMX] x86 extension
+ version number.
+
+ Version number is: *0.99.0*.
+ */
+#define MSGPACK_HW_SIMD_X86_MMX_VERSION MSGPACK_VERSION_NUMBER(0, 99, 0)
+
+/*`
+ [heading `MSGPACK_HW_SIMD_X86_SSE_VERSION`]
+
+ The [@https://en.wikipedia.org/wiki/Streaming_SIMD_Extensions SSE] x86 extension
+ version number.
+
+ Version number is: *1.0.0*.
+ */
+#define MSGPACK_HW_SIMD_X86_SSE_VERSION MSGPACK_VERSION_NUMBER(1, 0, 0)
+
+/*`
+ [heading `MSGPACK_HW_SIMD_X86_SSE2_VERSION`]
+
+ The [@https://en.wikipedia.org/wiki/SSE2 SSE2] x86 extension version number.
+
+ Version number is: *2.0.0*.
+ */
+#define MSGPACK_HW_SIMD_X86_SSE2_VERSION MSGPACK_VERSION_NUMBER(2, 0, 0)
+
+/*`
+ [heading `MSGPACK_HW_SIMD_X86_SSE3_VERSION`]
+
+ The [@https://en.wikipedia.org/wiki/SSE3 SSE3] x86 extension version number.
+
+ Version number is: *3.0.0*.
+ */
+#define MSGPACK_HW_SIMD_X86_SSE3_VERSION MSGPACK_VERSION_NUMBER(3, 0, 0)
+
+/*`
+ [heading `MSGPACK_HW_SIMD_X86_SSSE3_VERSION`]
+
+ The [@https://en.wikipedia.org/wiki/SSSE3 SSSE3] x86 extension version number.
+
+ Version number is: *3.1.0*.
+ */
+#define MSGPACK_HW_SIMD_X86_SSSE3_VERSION MSGPACK_VERSION_NUMBER(3, 1, 0)
+
+/*`
+ [heading `MSGPACK_HW_SIMD_X86_SSE4_1_VERSION`]
+
+ The [@https://en.wikipedia.org/wiki/SSE4#SSE4.1 SSE4_1] x86 extension version
+ number.
+
+ Version number is: *4.1.0*.
+ */
+#define MSGPACK_HW_SIMD_X86_SSE4_1_VERSION MSGPACK_VERSION_NUMBER(4, 1, 0)
+
+/*`
+ [heading `MSGPACK_HW_SIMD_X86_SSE4_2_VERSION`]
+
+ The [@https://en.wikipedia.org/wiki/SSE4##SSE4.2 SSE4_2] x86 extension version
+ number.
+
+ Version number is: *4.2.0*.
+ */
+#define MSGPACK_HW_SIMD_X86_SSE4_2_VERSION MSGPACK_VERSION_NUMBER(4, 2, 0)
+
+/*`
+ [heading `MSGPACK_HW_SIMD_X86_AVX_VERSION`]
+
+ The [@https://en.wikipedia.org/wiki/Advanced_Vector_Extensions AVX] x86
+ extension version number.
+
+ Version number is: *5.0.0*.
+ */
+#define MSGPACK_HW_SIMD_X86_AVX_VERSION MSGPACK_VERSION_NUMBER(5, 0, 0)
+
+/*`
+ [heading `MSGPACK_HW_SIMD_X86_FMA3_VERSION`]
+
+ The [@https://en.wikipedia.org/wiki/FMA_instruction_set FMA3] x86 extension
+ version number.
+
+ Version number is: *5.2.0*.
+ */
+#define MSGPACK_HW_SIMD_X86_FMA3_VERSION MSGPACK_VERSION_NUMBER(5, 2, 0)
+
+/*`
+ [heading `MSGPACK_HW_SIMD_X86_AVX2_VERSION`]
+
+ The [@https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#Advanced_Vector_Extensions_2 AVX2]
+ x86 extension version number.
+
+ Version number is: *5.3.0*.
+ */
+#define MSGPACK_HW_SIMD_X86_AVX2_VERSION MSGPACK_VERSION_NUMBER(5, 3, 0)
+
+/*`
+ [heading `MSGPACK_HW_SIMD_X86_MIC_VERSION`]
+
+ The [@https://en.wikipedia.org/wiki/Xeon_Phi MIC] (Xeon Phi) x86 extension
+ version number.
+
+ Version number is: *9.0.0*.
+ */
+#define MSGPACK_HW_SIMD_X86_MIC_VERSION MSGPACK_VERSION_NUMBER(9, 0, 0)
+
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/hardware/simd/x86_amd.h b/third_party/msgpack/include/msgpack/predef/hardware/simd/x86_amd.h
new file mode 100644
index 0000000000..6ea56714ea
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/hardware/simd/x86_amd.h
@@ -0,0 +1,87 @@
+/*
+Copyright Charly Chevalier 2015
+Copyright Joel Falcou 2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_HARDWARE_SIMD_X86_AMD_H
+#define MSGPACK_PREDEF_HARDWARE_SIMD_X86_AMD_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/hardware/simd/x86_amd/versions.h>
+
+/*`
+ [heading `MSGPACK_HW_SIMD_X86_AMD`]
+
+ The SIMD extension for x86 (AMD) (*if detected*).
+ Version number depends on the most recent detected extension.
+
+ [table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__SSE4A__`] [__predef_detection__]]
+
+ [[`__FMA4__`] [__predef_detection__]]
+
+ [[`__XOP__`] [__predef_detection__]]
+
+ [[`MSGPACK_HW_SIMD_X86`] [__predef_detection__]]
+ ]
+
+ [table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__SSE4A__`] [MSGPACK_HW_SIMD_X86_SSE4A_VERSION]]
+
+ [[`__FMA4__`] [MSGPACK_HW_SIMD_X86_FMA4_VERSION]]
+
+ [[`__XOP__`] [MSGPACK_HW_SIMD_X86_XOP_VERSION]]
+
+ [[`MSGPACK_HW_SIMD_X86`] [MSGPACK_HW_SIMD_X86]]
+ ]
+
+ [note This predef includes every other x86 SIMD extensions and also has other
+ more specific extensions (FMA4, XOP, SSE4a). You should use this predef
+ instead of `MSGPACK_HW_SIMD_X86` to test if those specific extensions have
+ been detected.]
+
+ */
+
+#define MSGPACK_HW_SIMD_X86_AMD MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+// AMD CPUs also use x86 architecture. We first try to detect if any AMD
+// specific extension are detected, if yes, then try to detect more recent x86
+// common extensions.
+
+#undef MSGPACK_HW_SIMD_X86_AMD
+#if !defined(MSGPACK_HW_SIMD_X86_AMD) && defined(__XOP__)
+# define MSGPACK_HW_SIMD_X86_AMD MSGPACK_HW_SIMD_X86_AMD_XOP_VERSION
+#endif
+#if !defined(MSGPACK_HW_SIMD_X86_AMD) && defined(__FMA4__)
+# define MSGPACK_HW_SIMD_X86_AMD MSGPACK_HW_SIMD_X86_AMD_FMA4_VERSION
+#endif
+#if !defined(MSGPACK_HW_SIMD_X86_AMD) && defined(__SSE4A__)
+# define MSGPACK_HW_SIMD_X86_AMD MSGPACK_HW_SIMD_X86_AMD_SSE4A_VERSION
+#endif
+
+#if !defined(MSGPACK_HW_SIMD_X86_AMD)
+# define MSGPACK_HW_SIMD_X86_AMD MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+#else
+ // At this point, we know that we have an AMD CPU, we do need to check for
+ // other x86 extensions to determine the final version number.
+# include <msgpack/predef/hardware/simd/x86.h>
+# if MSGPACK_HW_SIMD_X86 > MSGPACK_HW_SIMD_X86_AMD
+# undef MSGPACK_HW_SIMD_X86_AMD
+# define MSGPACK_HW_SIMD_X86_AMD MSGPACK_HW_SIMD_X86
+# endif
+# define MSGPACK_HW_SIMD_X86_AMD_AVAILABLE
+#endif
+
+#define MSGPACK_HW_SIMD_X86_AMD_NAME "x86 (AMD) SIMD"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_HW_SIMD_X86_AMD, MSGPACK_HW_SIMD_X86_AMD_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/hardware/simd/x86_amd/versions.h b/third_party/msgpack/include/msgpack/predef/hardware/simd/x86_amd/versions.h
new file mode 100644
index 0000000000..0bd4529985
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/hardware/simd/x86_amd/versions.h
@@ -0,0 +1,51 @@
+/*
+Copyright Charly Chevalier 2015
+Copyright Joel Falcou 2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_HARDWARE_SIMD_X86_AMD_VERSIONS_H
+#define MSGPACK_PREDEF_HARDWARE_SIMD_X86_AMD_VERSIONS_H
+
+#include <msgpack/predef/version_number.h>
+
+/*`
+ Those defines represent x86 (AMD specific) SIMD extensions versions.
+
+ [note You *MUST* compare them with the predef `MSGPACK_HW_SIMD_X86_AMD`.]
+ */
+
+
+// ---------------------------------
+
+/*`
+ [heading `MSGPACK_HW_SIMD_X86_SSE4A_VERSION`]
+
+ [@https://en.wikipedia.org/wiki/SSE4##SSE4A SSE4A] x86 extension (AMD specific).
+
+ Version number is: *4.0.0*.
+ */
+#define MSGPACK_HW_SIMD_X86_AMD_SSE4A_VERSION MSGPACK_VERSION_NUMBER(4, 0, 0)
+
+/*`
+ [heading `MSGPACK_HW_SIMD_X86_FMA4_VERSION`]
+
+ [@https://en.wikipedia.org/wiki/FMA_instruction_set#FMA4_instruction_set FMA4] x86 extension (AMD specific).
+
+ Version number is: *5.1.0*.
+ */
+#define MSGPACK_HW_SIMD_X86_AMD_FMA4_VERSION MSGPACK_VERSION_NUMBER(5, 1, 0)
+
+/*`
+ [heading `MSGPACK_HW_SIMD_X86_XOP_VERSION`]
+
+ [@https://en.wikipedia.org/wiki/XOP_instruction_set XOP] x86 extension (AMD specific).
+
+ Version number is: *5.1.1*.
+ */
+#define MSGPACK_HW_SIMD_X86_AMD_XOP_VERSION MSGPACK_VERSION_NUMBER(5, 1, 1)
+
+
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/language.h b/third_party/msgpack/include/msgpack/predef/language.h
new file mode 100644
index 0000000000..7652c32cb6
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/language.h
@@ -0,0 +1,17 @@
+/*
+Copyright Rene Rivera 2011-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#if !defined(MSGPACK_PREDEF_LANGUAGE_H) || defined(MSGPACK_PREDEF_INTERNAL_GENERATE_TESTS)
+#ifndef MSGPACK_PREDEF_LANGUAGE_H
+#define MSGPACK_PREDEF_LANGUAGE_H
+#endif
+
+#include <msgpack/predef/language/stdc.h>
+#include <msgpack/predef/language/stdcpp.h>
+#include <msgpack/predef/language/objc.h>
+
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/language/objc.h b/third_party/msgpack/include/msgpack/predef/language/objc.h
new file mode 100644
index 0000000000..ee201debf4
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/language/objc.h
@@ -0,0 +1,42 @@
+/*
+Copyright Rene Rivera 2011-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_LANGUAGE_OBJC_H
+#define MSGPACK_PREDEF_LANGUAGE_OBJC_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_LANG_OBJC`]
+
+[@http://en.wikipedia.org/wiki/Objective-C Objective-C] language.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__OBJC__`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_LANG_OBJC MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__OBJC__)
+# undef MSGPACK_LANG_OBJC
+# define MSGPACK_LANG_OBJC MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if MSGPACK_LANG_OBJC
+# define MSGPACK_LANG_OBJC_AVAILABLE
+#endif
+
+#define MSGPACK_LANG_OBJC_NAME "Objective-C"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_LANG_OBJC,MSGPACK_LANG_OBJC_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/language/stdc.h b/third_party/msgpack/include/msgpack/predef/language/stdc.h
new file mode 100644
index 0000000000..5c91650546
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/language/stdc.h
@@ -0,0 +1,53 @@
+/*
+Copyright Rene Rivera 2011-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_LANGUAGE_STDC_H
+#define MSGPACK_PREDEF_LANGUAGE_STDC_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_LANG_STDC`]
+
+[@http://en.wikipedia.org/wiki/C_(programming_language) Standard C] language.
+If available, the year of the standard is detected as YYYY.MM.1 from the Epoc date.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__STDC__`] [__predef_detection__]]
+
+ [[`__STDC_VERSION__`] [V.R.P]]
+ ]
+ */
+
+#define MSGPACK_LANG_STDC MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__STDC__)
+# undef MSGPACK_LANG_STDC
+# if defined(__STDC_VERSION__)
+# if (__STDC_VERSION__ > 100)
+# define MSGPACK_LANG_STDC MSGPACK_PREDEF_MAKE_YYYYMM(__STDC_VERSION__)
+# else
+# define MSGPACK_LANG_STDC MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+# else
+# define MSGPACK_LANG_STDC MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if MSGPACK_LANG_STDC
+# define MSGPACK_LANG_STDC_AVAILABLE
+#endif
+
+#define MSGPACK_LANG_STDC_NAME "Standard C"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_LANG_STDC,MSGPACK_LANG_STDC_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/language/stdcpp.h b/third_party/msgpack/include/msgpack/predef/language/stdcpp.h
new file mode 100644
index 0000000000..07f1024d36
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/language/stdcpp.h
@@ -0,0 +1,121 @@
+/*
+Copyright Rene Rivera 2011-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_LANGUAGE_STDCPP_H
+#define MSGPACK_PREDEF_LANGUAGE_STDCPP_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_LANG_STDCPP`]
+
+[@http://en.wikipedia.org/wiki/C%2B%2B Standard C++] language.
+If available, the year of the standard is detected as YYYY.MM.1 from the Epoc date.
+Because of the way the C++ standardization process works the
+defined version year will not be the commonly known year of the standard.
+Specifically the defined versions are:
+
+[table Detected Version Number vs. C++ Standard Year
+ [[Detected Version Number] [Standard Year] [C++ Standard]]
+ [[27.11.1] [1998] [ISO/IEC 14882:1998]]
+ [[41.12.1] [2011] [ISO/IEC 14882:2011]]
+]
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__cplusplus`] [__predef_detection__]]
+
+ [[`__cplusplus`] [YYYY.MM.1]]
+ ]
+ */
+
+#define MSGPACK_LANG_STDCPP MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__cplusplus)
+# undef MSGPACK_LANG_STDCPP
+# if (__cplusplus > 100)
+# define MSGPACK_LANG_STDCPP MSGPACK_PREDEF_MAKE_YYYYMM(__cplusplus)
+# else
+# define MSGPACK_LANG_STDCPP MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if MSGPACK_LANG_STDCPP
+# define MSGPACK_LANG_STDCPP_AVAILABLE
+#endif
+
+#define MSGPACK_LANG_STDCPP_NAME "Standard C++"
+
+/*`
+[heading `MSGPACK_LANG_STDCPPCLI`]
+
+[@http://en.wikipedia.org/wiki/C%2B%2B/CLI Standard C++/CLI] language.
+If available, the year of the standard is detected as YYYY.MM.1 from the Epoc date.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__cplusplus_cli`] [__predef_detection__]]
+
+ [[`__cplusplus_cli`] [YYYY.MM.1]]
+ ]
+ */
+
+#define MSGPACK_LANG_STDCPPCLI MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__cplusplus_cli)
+# undef MSGPACK_LANG_STDCPPCLI
+# if (__cplusplus_cli > 100)
+# define MSGPACK_LANG_STDCPPCLI MSGPACK_PREDEF_MAKE_YYYYMM(__cplusplus_cli)
+# else
+# define MSGPACK_LANG_STDCPPCLI MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if MSGPACK_LANG_STDCPPCLI
+# define MSGPACK_LANG_STDCPPCLI_AVAILABLE
+#endif
+
+#define MSGPACK_LANG_STDCPPCLI_NAME "Standard C++/CLI"
+
+/*`
+[heading `MSGPACK_LANG_STDECPP`]
+
+[@http://en.wikipedia.org/wiki/Embedded_C%2B%2B Standard Embedded C++] language.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__embedded_cplusplus`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_LANG_STDECPP MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__embedded_cplusplus)
+# undef MSGPACK_LANG_STDECPP
+# define MSGPACK_LANG_STDECPP MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if MSGPACK_LANG_STDECPP
+# define MSGPACK_LANG_STDECPP_AVAILABLE
+#endif
+
+#define MSGPACK_LANG_STDECPP_NAME "Standard Embedded C++"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_LANG_STDCPP,MSGPACK_LANG_STDCPP_NAME)
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_LANG_STDCPPCLI,MSGPACK_LANG_STDCPPCLI_NAME)
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_LANG_STDECPP,MSGPACK_LANG_STDECPP_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/library.h b/third_party/msgpack/include/msgpack/predef/library.h
new file mode 100644
index 0000000000..3c96c4b979
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/library.h
@@ -0,0 +1,16 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#if !defined(MSGPACK_PREDEF_LIBRARY_H) || defined(MSGPACK_PREDEF_INTERNAL_GENERATE_TESTS)
+#ifndef MSGPACK_PREDEF_LIBRARY_H
+#define MSGPACK_PREDEF_LIBRARY_H
+#endif
+
+#include <msgpack/predef/library/c.h>
+#include <msgpack/predef/library/std.h>
+
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/library/c.h b/third_party/msgpack/include/msgpack/predef/library/c.h
new file mode 100644
index 0000000000..2817bf91f1
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/library/c.h
@@ -0,0 +1,20 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#if !defined(MSGPACK_PREDEF_LIBRARY_C_H) || defined(MSGPACK_PREDEF_INTERNAL_GENERATE_TESTS)
+#ifndef MSGPACK_PREDEF_LIBRARY_C_H
+#define MSGPACK_PREDEF_LIBRARY_C_H
+#endif
+
+#include <msgpack/predef/library/c/_prefix.h>
+
+#include <msgpack/predef/library/c/gnu.h>
+#include <msgpack/predef/library/c/uc.h>
+#include <msgpack/predef/library/c/vms.h>
+#include <msgpack/predef/library/c/zos.h>
+
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/library/c/_prefix.h b/third_party/msgpack/include/msgpack/predef/library/c/_prefix.h
new file mode 100644
index 0000000000..d16c373bcc
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/library/c/_prefix.h
@@ -0,0 +1,13 @@
+/*
+Copyright Rene Rivera 2008-2013
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_LIBRARY_C__PREFIX_H
+#define MSGPACK_PREDEF_LIBRARY_C__PREFIX_H
+
+#include <msgpack/predef/detail/_cassert.h>
+
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/library/c/gnu.h b/third_party/msgpack/include/msgpack/predef/library/c/gnu.h
new file mode 100644
index 0000000000..0d89032051
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/library/c/gnu.h
@@ -0,0 +1,61 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_LIBRARY_C_GNU_H
+#define MSGPACK_PREDEF_LIBRARY_C_GNU_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+#include <msgpack/predef/library/c/_prefix.h>
+
+#if defined(__STDC__)
+#include <stddef.h>
+#elif defined(__cplusplus)
+#include <cstddef>
+#endif
+
+/*`
+[heading `MSGPACK_LIB_C_GNU`]
+
+[@http://en.wikipedia.org/wiki/Glibc GNU glibc] Standard C library.
+Version number available as major, and minor.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__GLIBC__`] [__predef_detection__]]
+ [[`__GNU_LIBRARY__`] [__predef_detection__]]
+
+ [[`__GLIBC__`, `__GLIBC_MINOR__`] [V.R.0]]
+ [[`__GNU_LIBRARY__`, `__GNU_LIBRARY_MINOR__`] [V.R.0]]
+ ]
+ */
+
+#define MSGPACK_LIB_C_GNU MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__GLIBC__) || defined(__GNU_LIBRARY__)
+# undef MSGPACK_LIB_C_GNU
+# if defined(__GLIBC__)
+# define MSGPACK_LIB_C_GNU \
+ MSGPACK_VERSION_NUMBER(__GLIBC__,__GLIBC_MINOR__,0)
+# else
+# define MSGPACK_LIB_C_GNU \
+ MSGPACK_VERSION_NUMBER(__GNU_LIBRARY__,__GNU_LIBRARY_MINOR__,0)
+# endif
+#endif
+
+#if MSGPACK_LIB_C_GNU
+# define MSGPACK_LIB_C_GNU_AVAILABLE
+#endif
+
+#define MSGPACK_LIB_C_GNU_NAME "GNU"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_LIB_C_GNU,MSGPACK_LIB_C_GNU_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/library/c/uc.h b/third_party/msgpack/include/msgpack/predef/library/c/uc.h
new file mode 100644
index 0000000000..39893d4d34
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/library/c/uc.h
@@ -0,0 +1,47 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_LIBRARY_C_UC_H
+#define MSGPACK_PREDEF_LIBRARY_C_UC_H
+
+#include <msgpack/predef/library/c/_prefix.h>
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_LIB_C_UC`]
+
+[@http://en.wikipedia.org/wiki/Uclibc uClibc] Standard C library.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__UCLIBC__`] [__predef_detection__]]
+
+ [[`__UCLIBC_MAJOR__`, `__UCLIBC_MINOR__`, `__UCLIBC_SUBLEVEL__`] [V.R.P]]
+ ]
+ */
+
+#define MSGPACK_LIB_C_UC MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__UCLIBC__)
+# undef MSGPACK_LIB_C_UC
+# define MSGPACK_LIB_C_UC MSGPACK_VERSION_NUMBER(\
+ __UCLIBC_MAJOR__,__UCLIBC_MINOR__,__UCLIBC_SUBLEVEL__)
+#endif
+
+#if MSGPACK_LIB_C_UC
+# define MSGPACK_LIB_C_UC_AVAILABLE
+#endif
+
+#define MSGPACK_LIB_C_UC_NAME "uClibc"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_LIB_C_UC,MSGPACK_LIB_C_UC_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/library/c/vms.h b/third_party/msgpack/include/msgpack/predef/library/c/vms.h
new file mode 100644
index 0000000000..35253649ee
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/library/c/vms.h
@@ -0,0 +1,47 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_LIBRARY_C_VMS_H
+#define MSGPACK_PREDEF_LIBRARY_C_VMS_H
+
+#include <msgpack/predef/library/c/_prefix.h>
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_LIB_C_VMS`]
+
+VMS libc Standard C library.
+Version number available as major, minor, and patch.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__CRTL_VER`] [__predef_detection__]]
+
+ [[`__CRTL_VER`] [V.R.P]]
+ ]
+ */
+
+#define MSGPACK_LIB_C_VMS MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__CRTL_VER)
+# undef MSGPACK_LIB_C_VMS
+# define MSGPACK_LIB_C_VMS MSGPACK_PREDEF_MAKE_10_VVRR0PP00(__CRTL_VER)
+#endif
+
+#if MSGPACK_LIB_C_VMS
+# define MSGPACK_LIB_C_VMS_AVAILABLE
+#endif
+
+#define MSGPACK_LIB_C_VMS_NAME "VMS"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_LIB_C_VMS,MSGPACK_LIB_C_VMS_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/library/c/zos.h b/third_party/msgpack/include/msgpack/predef/library/c/zos.h
new file mode 100644
index 0000000000..9bae6ef78a
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/library/c/zos.h
@@ -0,0 +1,56 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_LIBRARY_C_ZOS_H
+#define MSGPACK_PREDEF_LIBRARY_C_ZOS_H
+
+#include <msgpack/predef/library/c/_prefix.h>
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_LIB_C_ZOS`]
+
+z/OS libc Standard C library.
+Version number available as major, minor, and patch.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__LIBREL__`] [__predef_detection__]]
+
+ [[`__LIBREL__`] [V.R.P]]
+ [[`__TARGET_LIB__`] [V.R.P]]
+ ]
+ */
+
+#define MSGPACK_LIB_C_ZOS MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__LIBREL__)
+# undef MSGPACK_LIB_C_ZOS
+# if !defined(MSGPACK_LIB_C_ZOS) && defined(__LIBREL__)
+# define MSGPACK_LIB_C_ZOS MSGPACK_PREDEF_MAKE_0X_VRRPPPP(__LIBREL__)
+# endif
+# if !defined(MSGPACK_LIB_C_ZOS) && defined(__TARGET_LIB__)
+# define MSGPACK_LIB_C_ZOS MSGPACK_PREDEF_MAKE_0X_VRRPPPP(__TARGET_LIB__)
+# endif
+# if !defined(MSGPACK_LIB_C_ZOS)
+# define MSGPACK_LIB_C_ZOS MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if MSGPACK_LIB_C_ZOS
+# define MSGPACK_LIB_C_ZOS_AVAILABLE
+#endif
+
+#define MSGPACK_LIB_C_ZOS_NAME "z/OS"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_LIB_C_ZOS,MSGPACK_LIB_C_ZOS_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/library/std.h b/third_party/msgpack/include/msgpack/predef/library/std.h
new file mode 100644
index 0000000000..14ff2bffa8
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/library/std.h
@@ -0,0 +1,25 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+#if !defined(MSGPACK_PREDEF_LIBRARY_STD_H) || defined(MSGPACK_PREDEF_INTERNAL_GENERATE_TESTS)
+#ifndef MSGPACK_PREDEF_LIBRARY_STD_H
+#define MSGPACK_PREDEF_LIBRARY_STD_H
+#endif
+
+#include <msgpack/predef/library/std/_prefix.h>
+
+#include <msgpack/predef/library/std/cxx.h>
+#include <msgpack/predef/library/std/dinkumware.h>
+#include <msgpack/predef/library/std/libcomo.h>
+#include <msgpack/predef/library/std/modena.h>
+#include <msgpack/predef/library/std/msl.h>
+#include <msgpack/predef/library/std/roguewave.h>
+#include <msgpack/predef/library/std/sgi.h>
+#include <msgpack/predef/library/std/stdcpp3.h>
+#include <msgpack/predef/library/std/stlport.h>
+#include <msgpack/predef/library/std/vacpp.h>
+
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/library/std/_prefix.h b/third_party/msgpack/include/msgpack/predef/library/std/_prefix.h
new file mode 100644
index 0000000000..6f9f56649d
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/library/std/_prefix.h
@@ -0,0 +1,23 @@
+/*
+Copyright Rene Rivera 2008-2013
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+#ifndef MSGPACK_PREDEF_LIBRARY_STD__PREFIX_H
+#define MSGPACK_PREDEF_LIBRARY_STD__PREFIX_H
+
+/*
+We need to include an STD header to gives us the context
+of which library we are using. The "smallest" code-wise header
+seems to be <exception>. Boost uses <utility> but as far
+as I can tell (RR) it's not a stand-alone header in most
+implementations. Using <exception> also has the benefit of
+being available in EC++, so we get a chance to make this work
+for embedded users. And since it's not a header impacted by TR1
+there's no magic needed for inclusion in the face of the
+Boost.TR1 library.
+*/
+#include <msgpack/predef/detail/_exception.h>
+
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/library/std/cxx.h b/third_party/msgpack/include/msgpack/predef/library/std/cxx.h
new file mode 100644
index 0000000000..605184481e
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/library/std/cxx.h
@@ -0,0 +1,46 @@
+/*
+Copyright Rene Rivera 2011-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_LIBRARY_STD_CXX_H
+#define MSGPACK_PREDEF_LIBRARY_STD_CXX_H
+
+#include <msgpack/predef/library/std/_prefix.h>
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_LIB_STD_CXX`]
+
+[@http://libcxx.llvm.org/ libc++] C++ Standard Library.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`_LIBCPP_VERSION`] [__predef_detection__]]
+
+ [[`_LIBCPP_VERSION`] [V.0.P]]
+ ]
+ */
+
+#define MSGPACK_LIB_STD_CXX MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(_LIBCPP_VERSION)
+# undef MSGPACK_LIB_STD_CXX
+# define MSGPACK_LIB_STD_CXX MSGPACK_PREDEF_MAKE_10_VPPP(_LIBCPP_VERSION)
+#endif
+
+#if MSGPACK_LIB_STD_CXX
+# define MSGPACK_LIB_STD_CXX_AVAILABLE
+#endif
+
+#define MSGPACK_LIB_STD_CXX_NAME "libc++"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_LIB_STD_CXX,MSGPACK_LIB_STD_CXX_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/library/std/dinkumware.h b/third_party/msgpack/include/msgpack/predef/library/std/dinkumware.h
new file mode 100644
index 0000000000..7e82bda1d6
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/library/std/dinkumware.h
@@ -0,0 +1,52 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_LIBRARY_STD_DINKUMWARE_H
+#define MSGPACK_PREDEF_LIBRARY_STD_DINKUMWARE_H
+
+#include <msgpack/predef/library/std/_prefix.h>
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_LIB_STD_DINKUMWARE`]
+
+[@http://en.wikipedia.org/wiki/Dinkumware Dinkumware] Standard C++ Library.
+If available version number as major, minor, and patch.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`_YVALS`, `__IBMCPP__`] [__predef_detection__]]
+ [[`_CPPLIB_VER`] [__predef_detection__]]
+
+ [[`_CPPLIB_VER`] [V.R.0]]
+ ]
+ */
+
+#define MSGPACK_LIB_STD_DINKUMWARE MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER)
+# undef MSGPACK_LIB_STD_DINKUMWARE
+# if defined(_CPPLIB_VER)
+# define MSGPACK_LIB_STD_DINKUMWARE MSGPACK_PREDEF_MAKE_10_VVRR(_CPPLIB_VER)
+# else
+# define MSGPACK_LIB_STD_DINKUMWARE MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if MSGPACK_LIB_STD_DINKUMWARE
+# define MSGPACK_LIB_STD_DINKUMWARE_AVAILABLE
+#endif
+
+#define MSGPACK_LIB_STD_DINKUMWARE_NAME "Dinkumware"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_LIB_STD_DINKUMWARE,MSGPACK_LIB_STD_DINKUMWARE_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/library/std/libcomo.h b/third_party/msgpack/include/msgpack/predef/library/std/libcomo.h
new file mode 100644
index 0000000000..54f58b5247
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/library/std/libcomo.h
@@ -0,0 +1,47 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_LIBRARY_STD_LIBCOMO_H
+#define MSGPACK_PREDEF_LIBRARY_STD_LIBCOMO_H
+
+#include <msgpack/predef/library/std/_prefix.h>
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_LIB_STD_COMO`]
+
+[@http://www.comeaucomputing.com/libcomo/ Comeau Computing] Standard C++ Library.
+Version number available as major.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__LIBCOMO__`] [__predef_detection__]]
+
+ [[`__LIBCOMO_VERSION__`] [V.0.0]]
+ ]
+ */
+
+#define MSGPACK_LIB_STD_COMO MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__LIBCOMO__)
+# undef MSGPACK_LIB_STD_COMO
+# define MSGPACK_LIB_STD_COMO MSGPACK_VERSION_NUMBER(__LIBCOMO_VERSION__,0,0)
+#endif
+
+#if MSGPACK_LIB_STD_COMO
+# define MSGPACK_LIB_STD_COMO_AVAILABLE
+#endif
+
+#define MSGPACK_LIB_STD_COMO_NAME "Comeau Computing"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_LIB_STD_COMO,MSGPACK_LIB_STD_COMO_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/library/std/modena.h b/third_party/msgpack/include/msgpack/predef/library/std/modena.h
new file mode 100644
index 0000000000..a8f7501786
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/library/std/modena.h
@@ -0,0 +1,45 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_LIBRARY_STD_MODENA_H
+#define MSGPACK_PREDEF_LIBRARY_STD_MODENA_H
+
+#include <msgpack/predef/library/std/_prefix.h>
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_LIB_STD_MSIPL`]
+
+[@http://modena.us/ Modena Software Lib++] Standard C++ Library.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`MSIPL_COMPILE_H`] [__predef_detection__]]
+ [[`__MSIPL_COMPILE_H`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_LIB_STD_MSIPL MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(MSIPL_COMPILE_H) || defined(__MSIPL_COMPILE_H)
+# undef MSGPACK_LIB_STD_MSIPL
+# define MSGPACK_LIB_STD_MSIPL MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if MSGPACK_LIB_STD_MSIPL
+# define MSGPACK_LIB_STD_MSIPL_AVAILABLE
+#endif
+
+#define MSGPACK_LIB_STD_MSIPL_NAME "Modena Software Lib++"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_LIB_STD_MSIPL,MSGPACK_LIB_STD_MSIPL_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/library/std/msl.h b/third_party/msgpack/include/msgpack/predef/library/std/msl.h
new file mode 100644
index 0000000000..187a6e1d52
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/library/std/msl.h
@@ -0,0 +1,53 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_LIBRARY_STD_MSL_H
+#define MSGPACK_PREDEF_LIBRARY_STD_MSL_H
+
+#include <msgpack/predef/library/std/_prefix.h>
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_LIB_STD_MSL`]
+
+[@http://www.freescale.com/ Metrowerks] Standard C++ Library.
+Version number available as major, minor, and patch.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__MSL_CPP__`] [__predef_detection__]]
+ [[`__MSL__`] [__predef_detection__]]
+
+ [[`__MSL_CPP__`] [V.R.P]]
+ [[`__MSL__`] [V.R.P]]
+ ]
+ */
+
+#define MSGPACK_LIB_STD_MSL MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__MSL_CPP__) || defined(__MSL__)
+# undef MSGPACK_LIB_STD_MSL
+# if defined(__MSL_CPP__)
+# define MSGPACK_LIB_STD_MSL MSGPACK_PREDEF_MAKE_0X_VRPP(__MSL_CPP__)
+# else
+# define MSGPACK_LIB_STD_MSL MSGPACK_PREDEF_MAKE_0X_VRPP(__MSL__)
+# endif
+#endif
+
+#if MSGPACK_LIB_STD_MSL
+# define MSGPACK_LIB_STD_MSL_AVAILABLE
+#endif
+
+#define MSGPACK_LIB_STD_MSL_NAME "Metrowerks"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_LIB_STD_MSL,MSGPACK_LIB_STD_MSL_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/library/std/roguewave.h b/third_party/msgpack/include/msgpack/predef/library/std/roguewave.h
new file mode 100644
index 0000000000..94ccaf9c2d
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/library/std/roguewave.h
@@ -0,0 +1,56 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_LIBRARY_STD_ROGUEWAVE_H
+#define MSGPACK_PREDEF_LIBRARY_STD_ROGUEWAVE_H
+
+#include <msgpack/predef/library/std/_prefix.h>
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_LIB_STD_RW`]
+
+[@http://stdcxx.apache.org/ Roguewave] Standard C++ library.
+If available version number as major, minor, and patch.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__STD_RWCOMPILER_H__`] [__predef_detection__]]
+ [[`_RWSTD_VER`] [__predef_detection__]]
+
+ [[`_RWSTD_VER`] [V.R.P]]
+ ]
+ */
+
+#define MSGPACK_LIB_STD_RW MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER)
+# undef MSGPACK_LIB_STD_RW
+# if defined(_RWSTD_VER)
+# if _RWSTD_VER < 0x010000
+# define MSGPACK_LIB_STD_RW MSGPACK_PREDEF_MAKE_0X_VVRRP(_RWSTD_VER)
+# else
+# define MSGPACK_LIB_STD_RW MSGPACK_PREDEF_MAKE_0X_VVRRPP(_RWSTD_VER)
+# endif
+# else
+# define MSGPACK_LIB_STD_RW MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if MSGPACK_LIB_STD_RW
+# define MSGPACK_LIB_STD_RW_AVAILABLE
+#endif
+
+#define MSGPACK_LIB_STD_RW_NAME "Roguewave"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_LIB_STD_RW,MSGPACK_LIB_STD_RW_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/library/std/sgi.h b/third_party/msgpack/include/msgpack/predef/library/std/sgi.h
new file mode 100644
index 0000000000..b23b9ed37c
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/library/std/sgi.h
@@ -0,0 +1,51 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_LIBRARY_STD_SGI_H
+#define MSGPACK_PREDEF_LIBRARY_STD_SGI_H
+
+#include <msgpack/predef/library/std/_prefix.h>
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_LIB_STD_SGI`]
+
+[@http://www.sgi.com/tech/stl/ SGI] Standard C++ library.
+If available version number as major, minor, and patch.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__STL_CONFIG_H`] [__predef_detection__]]
+
+ [[`__SGI_STL`] [V.R.P]]
+ ]
+ */
+
+#define MSGPACK_LIB_STD_SGI MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__STL_CONFIG_H)
+# undef MSGPACK_LIB_STD_SGI
+# if defined(__SGI_STL)
+# define MSGPACK_LIB_STD_SGI MSGPACK_PREDEF_MAKE_0X_VRP(__SGI_STL)
+# else
+# define MSGPACK_LIB_STD_SGI MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if MSGPACK_LIB_STD_SGI
+# define MSGPACK_LIB_STD_SGI_AVAILABLE
+#endif
+
+#define MSGPACK_LIB_STD_SGI_NAME "SGI"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_LIB_STD_SGI,MSGPACK_LIB_STD_SGI_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/library/std/stdcpp3.h b/third_party/msgpack/include/msgpack/predef/library/std/stdcpp3.h
new file mode 100644
index 0000000000..6a5de28ad2
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/library/std/stdcpp3.h
@@ -0,0 +1,53 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_LIBRARY_STD_STDCPP3_H
+#define MSGPACK_PREDEF_LIBRARY_STD_STDCPP3_H
+
+#include <msgpack/predef/library/std/_prefix.h>
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_LIB_STD_GNU`]
+
+[@http://gcc.gnu.org/libstdc++/ GNU libstdc++] Standard C++ library.
+Version number available as year (from 1970), month, and day.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__GLIBCXX__`] [__predef_detection__]]
+ [[`__GLIBCPP__`] [__predef_detection__]]
+
+ [[`__GLIBCXX__`] [V.R.P]]
+ [[`__GLIBCPP__`] [V.R.P]]
+ ]
+ */
+
+#define MSGPACK_LIB_STD_GNU MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__GLIBCPP__) || defined(__GLIBCXX__)
+# undef MSGPACK_LIB_STD_GNU
+# if defined(__GLIBCXX__)
+# define MSGPACK_LIB_STD_GNU MSGPACK_PREDEF_MAKE_YYYYMMDD(__GLIBCXX__)
+# else
+# define MSGPACK_LIB_STD_GNU MSGPACK_PREDEF_MAKE_YYYYMMDD(__GLIBCPP__)
+# endif
+#endif
+
+#if MSGPACK_LIB_STD_GNU
+# define MSGPACK_LIB_STD_GNU_AVAILABLE
+#endif
+
+#define MSGPACK_LIB_STD_GNU_NAME "GNU"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_LIB_STD_GNU,MSGPACK_LIB_STD_GNU_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/library/std/stlport.h b/third_party/msgpack/include/msgpack/predef/library/std/stlport.h
new file mode 100644
index 0000000000..667ff04f16
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/library/std/stlport.h
@@ -0,0 +1,59 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_LIBRARY_STD_STLPORT_H
+#define MSGPACK_PREDEF_LIBRARY_STD_STLPORT_H
+
+#include <msgpack/predef/library/std/_prefix.h>
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_LIB_STD_STLPORT`]
+
+[@http://sourceforge.net/projects/stlport/ STLport Standard C++] library.
+Version number available as major, minor, and patch.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__SGI_STL_PORT`] [__predef_detection__]]
+ [[`_STLPORT_VERSION`] [__predef_detection__]]
+
+ [[`_STLPORT_MAJOR`, `_STLPORT_MINOR`, `_STLPORT_PATCHLEVEL`] [V.R.P]]
+ [[`_STLPORT_VERSION`] [V.R.P]]
+ [[`__SGI_STL_PORT`] [V.R.P]]
+ ]
+ */
+
+#define MSGPACK_LIB_STD_STLPORT MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
+# undef MSGPACK_LIB_STD_STLPORT
+# if !defined(MSGPACK_LIB_STD_STLPORT) && defined(_STLPORT_MAJOR)
+# define MSGPACK_LIB_STD_STLPORT \
+ MSGPACK_VERSION_NUMBER(_STLPORT_MAJOR,_STLPORT_MINOR,_STLPORT_PATCHLEVEL)
+# endif
+# if !defined(MSGPACK_LIB_STD_STLPORT) && defined(_STLPORT_VERSION)
+# define MSGPACK_LIB_STD_STLPORT MSGPACK_PREDEF_MAKE_0X_VRP(_STLPORT_VERSION)
+# endif
+# if !defined(MSGPACK_LIB_STD_STLPORT)
+# define MSGPACK_LIB_STD_STLPORT MSGPACK_PREDEF_MAKE_0X_VRP(__SGI_STL_PORT)
+# endif
+#endif
+
+#if MSGPACK_LIB_STD_STLPORT
+# define MSGPACK_LIB_STD_STLPORT_AVAILABLE
+#endif
+
+#define MSGPACK_LIB_STD_STLPORT_NAME "STLport"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_LIB_STD_STLPORT,MSGPACK_LIB_STD_STLPORT_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/library/std/vacpp.h b/third_party/msgpack/include/msgpack/predef/library/std/vacpp.h
new file mode 100644
index 0000000000..4b4adac908
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/library/std/vacpp.h
@@ -0,0 +1,44 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_LIBRARY_STD_VACPP_H
+#define MSGPACK_PREDEF_LIBRARY_STD_VACPP_H
+
+#include <msgpack/predef/library/std/_prefix.h>
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_LIB_STD_IBM`]
+
+[@http://www.ibm.com/software/awdtools/xlcpp/ IBM VACPP Standard C++] library.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__IBMCPP__`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_LIB_STD_IBM MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__IBMCPP__)
+# undef MSGPACK_LIB_STD_IBM
+# define MSGPACK_LIB_STD_IBM MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if MSGPACK_LIB_STD_IBM
+# define MSGPACK_LIB_STD_IBM_AVAILABLE
+#endif
+
+#define MSGPACK_LIB_STD_IBM_NAME "IBM VACPP"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_LIB_STD_IBM,MSGPACK_LIB_STD_IBM_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/make.h b/third_party/msgpack/include/msgpack/predef/make.h
new file mode 100644
index 0000000000..a0d8b128c9
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/make.h
@@ -0,0 +1,89 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+#include <msgpack/predef/detail/test.h>
+
+#ifndef MSGPACK_PREDEF_MAKE_H
+#define MSGPACK_PREDEF_MAKE_H
+
+/*
+Shorthands for the common version number formats used by vendors...
+*/
+
+/*`
+[heading `MSGPACK_PREDEF_MAKE_..` macros]
+
+These set of macros decompose common vendor version number
+macros which are composed version, revision, and patch digits.
+The naming convention indicates:
+
+* The base of the specified version number. "`MSGPACK_PREDEF_MAKE_0X`" for
+ hexadecimal digits, and "`MSGPACK_PREDEF_MAKE_10`" for decimal digits.
+* The format of the vendor version number. Where "`V`" indicates the version digits,
+ "`R`" indicates the revision digits, "`P`" indicates the patch digits, and "`0`"
+ indicates an ignored digit.
+
+Macros are:
+*/
+/*` `MSGPACK_PREDEF_MAKE_0X_VRP(V)` */
+#define MSGPACK_PREDEF_MAKE_0X_VRP(V) MSGPACK_VERSION_NUMBER((V&0xF00)>>8,(V&0xF0)>>4,(V&0xF))
+/*` `MSGPACK_PREDEF_MAKE_0X_VVRP(V)` */
+#define MSGPACK_PREDEF_MAKE_0X_VVRP(V) MSGPACK_VERSION_NUMBER((V&0xFF00)>>8,(V&0xF0)>>4,(V&0xF))
+/*` `MSGPACK_PREDEF_MAKE_0X_VRPP(V)` */
+#define MSGPACK_PREDEF_MAKE_0X_VRPP(V) MSGPACK_VERSION_NUMBER((V&0xF000)>>12,(V&0xF00)>>8,(V&0xFF))
+/*` `MSGPACK_PREDEF_MAKE_0X_VVRR(V)` */
+#define MSGPACK_PREDEF_MAKE_0X_VVRR(V) MSGPACK_VERSION_NUMBER((V&0xFF00)>>8,(V&0xFF),0)
+/*` `MSGPACK_PREDEF_MAKE_0X_VRRPPPP(V)` */
+#define MSGPACK_PREDEF_MAKE_0X_VRRPPPP(V) MSGPACK_VERSION_NUMBER((V&0xF000000)>>24,(V&0xFF0000)>>16,(V&0xFFFF))
+/*` `MSGPACK_PREDEF_MAKE_0X_VVRRP(V)` */
+#define MSGPACK_PREDEF_MAKE_0X_VVRRP(V) MSGPACK_VERSION_NUMBER((V&0xFF000)>>12,(V&0xFF0)>>4,(V&0xF))
+/*` `MSGPACK_PREDEF_MAKE_0X_VRRPP000(V)` */
+#define MSGPACK_PREDEF_MAKE_0X_VRRPP000(V) MSGPACK_VERSION_NUMBER((V&0xF0000000)>>28,(V&0xFF00000)>>20,(V&0xFF000)>>12)
+/*` `MSGPACK_PREDEF_MAKE_0X_VVRRPP(V)` */
+#define MSGPACK_PREDEF_MAKE_0X_VVRRPP(V) MSGPACK_VERSION_NUMBER((V&0xFF0000)>>16,(V&0xFF00)>>8,(V&0xFF))
+/*` `MSGPACK_PREDEF_MAKE_10_VPPP(V)` */
+#define MSGPACK_PREDEF_MAKE_10_VPPP(V) MSGPACK_VERSION_NUMBER(((V)/1000)%10,0,(V)%1000)
+/*` `MSGPACK_PREDEF_MAKE_10_VRP(V)` */
+#define MSGPACK_PREDEF_MAKE_10_VRP(V) MSGPACK_VERSION_NUMBER(((V)/100)%10,((V)/10)%10,(V)%10)
+/*` `MSGPACK_PREDEF_MAKE_10_VRP000(V)` */
+#define MSGPACK_PREDEF_MAKE_10_VRP000(V) MSGPACK_VERSION_NUMBER(((V)/100000)%10,((V)/10000)%10,((V)/1000)%10)
+/*` `MSGPACK_PREDEF_MAKE_10_VRPP(V)` */
+#define MSGPACK_PREDEF_MAKE_10_VRPP(V) MSGPACK_VERSION_NUMBER(((V)/1000)%10,((V)/100)%10,(V)%100)
+/*` `MSGPACK_PREDEF_MAKE_10_VRR(V)` */
+#define MSGPACK_PREDEF_MAKE_10_VRR(V) MSGPACK_VERSION_NUMBER(((V)/100)%10,(V)%100,0)
+/*` `MSGPACK_PREDEF_MAKE_10_VRRPP(V)` */
+#define MSGPACK_PREDEF_MAKE_10_VRRPP(V) MSGPACK_VERSION_NUMBER(((V)/10000)%10,((V)/100)%100,(V)%100)
+/*` `MSGPACK_PREDEF_MAKE_10_VRR000(V)` */
+#define MSGPACK_PREDEF_MAKE_10_VRR000(V) MSGPACK_VERSION_NUMBER(((V)/100000)%10,((V)/1000)%100,0)
+/*` `MSGPACK_PREDEF_MAKE_10_VV00(V)` */
+#define MSGPACK_PREDEF_MAKE_10_VV00(V) MSGPACK_VERSION_NUMBER(((V)/100)%100,0,0)
+/*` `MSGPACK_PREDEF_MAKE_10_VVRR(V)` */
+#define MSGPACK_PREDEF_MAKE_10_VVRR(V) MSGPACK_VERSION_NUMBER(((V)/100)%100,(V)%100,0)
+/*` `MSGPACK_PREDEF_MAKE_10_VVRRPP(V)` */
+#define MSGPACK_PREDEF_MAKE_10_VVRRPP(V) MSGPACK_VERSION_NUMBER(((V)/10000)%100,((V)/100)%100,(V)%100)
+/*` `MSGPACK_PREDEF_MAKE_10_VVRR0PP00(V)` */
+#define MSGPACK_PREDEF_MAKE_10_VVRR0PP00(V) MSGPACK_VERSION_NUMBER(((V)/10000000)%100,((V)/100000)%100,((V)/100)%100)
+/*` `MSGPACK_PREDEF_MAKE_10_VVRR0PPPP(V)` */
+#define MSGPACK_PREDEF_MAKE_10_VVRR0PPPP(V) MSGPACK_VERSION_NUMBER(((V)/10000000)%100,((V)/100000)%100,(V)%10000)
+/*` `MSGPACK_PREDEF_MAKE_10_VVRR00PP00(V)` */
+#define MSGPACK_PREDEF_MAKE_10_VVRR00PP00(V) MSGPACK_VERSION_NUMBER(((V)/100000000)%100,((V)/1000000)%100,((V)/100)%100)
+/*`
+[heading `MSGPACK_PREDEF_MAKE_*..` date macros]
+
+Date decomposition macros return a date in the relative to the 1970
+Epoch date. If the month is not available, January 1st is used as the month and day.
+If the day is not available, but the month is, the 1st of the month is used as the day.
+*/
+/*` `MSGPACK_PREDEF_MAKE_DATE(Y,M,D)` */
+#define MSGPACK_PREDEF_MAKE_DATE(Y,M,D) MSGPACK_VERSION_NUMBER((Y)%10000-1970,(M)%100,(D)%100)
+/*` `MSGPACK_PREDEF_MAKE_YYYYMMDD(V)` */
+#define MSGPACK_PREDEF_MAKE_YYYYMMDD(V) MSGPACK_PREDEF_MAKE_DATE(((V)/10000)%10000,((V)/100)%100,(V)%100)
+/*` `MSGPACK_PREDEF_MAKE_YYYY(V)` */
+#define MSGPACK_PREDEF_MAKE_YYYY(V) MSGPACK_PREDEF_MAKE_DATE(V,1,1)
+/*` `MSGPACK_PREDEF_MAKE_YYYYMM(V)` */
+#define MSGPACK_PREDEF_MAKE_YYYYMM(V) MSGPACK_PREDEF_MAKE_DATE((V)/100,(V)%100,1)
+
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/os.h b/third_party/msgpack/include/msgpack/predef/os.h
new file mode 100644
index 0000000000..e08842066a
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/os.h
@@ -0,0 +1,33 @@
+/*
+Copyright Rene Rivera 2008-2015
+Copyright Franz Detro 2014
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#if !defined(MSGPACK_PREDEF_OS_H) || defined(MSGPACK_PREDEF_INTERNAL_GENERATE_TESTS)
+#ifndef MSGPACK_PREDEF_OS_H
+#define MSGPACK_PREDEF_OS_H
+#endif
+
+#include <msgpack/predef/os/aix.h>
+#include <msgpack/predef/os/amigaos.h>
+#include <msgpack/predef/os/android.h>
+#include <msgpack/predef/os/beos.h>
+#include <msgpack/predef/os/bsd.h>
+#include <msgpack/predef/os/cygwin.h>
+#include <msgpack/predef/os/haiku.h>
+#include <msgpack/predef/os/hpux.h>
+#include <msgpack/predef/os/irix.h>
+#include <msgpack/predef/os/ios.h>
+#include <msgpack/predef/os/linux.h>
+#include <msgpack/predef/os/macos.h>
+#include <msgpack/predef/os/os400.h>
+#include <msgpack/predef/os/qnxnto.h>
+#include <msgpack/predef/os/solaris.h>
+#include <msgpack/predef/os/unix.h>
+#include <msgpack/predef/os/vms.h>
+#include <msgpack/predef/os/windows.h>
+
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/os/aix.h b/third_party/msgpack/include/msgpack/predef/os/aix.h
new file mode 100644
index 0000000000..fa7f61c53f
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/os/aix.h
@@ -0,0 +1,66 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_OS_AIX_H
+#define MSGPACK_PREDEF_OS_AIX_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_OS_AIX`]
+
+[@http://en.wikipedia.org/wiki/AIX_operating_system IBM AIX] operating system.
+Version number available as major, minor, and patch.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`_AIX`] [__predef_detection__]]
+ [[`__TOS_AIX__`] [__predef_detection__]]
+
+ [[`_AIX43`] [4.3.0]]
+ [[`_AIX41`] [4.1.0]]
+ [[`_AIX32`] [3.2.0]]
+ [[`_AIX3`] [3.0.0]]
+ ]
+ */
+
+#define MSGPACK_OS_AIX MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if !defined(MSGPACK_PREDEF_DETAIL_OS_DETECTED) && ( \
+ defined(_AIX) || defined(__TOS_AIX__) \
+ )
+# undef MSGPACK_OS_AIX
+# if !defined(MSGPACK_OS_AIX) && defined(_AIX43)
+# define MSGPACK_OS_AIX MSGPACK_VERSION_NUMBER(4,3,0)
+# endif
+# if !defined(MSGPACK_OS_AIX) && defined(_AIX41)
+# define MSGPACK_OS_AIX MSGPACK_VERSION_NUMBER(4,1,0)
+# endif
+# if !defined(MSGPACK_OS_AIX) && defined(_AIX32)
+# define MSGPACK_OS_AIX MSGPACK_VERSION_NUMBER(3,2,0)
+# endif
+# if !defined(MSGPACK_OS_AIX) && defined(_AIX3)
+# define MSGPACK_OS_AIX MSGPACK_VERSION_NUMBER(3,0,0)
+# endif
+# if !defined(MSGPACK_OS_AIX)
+# define MSGPACK_OS_AIX MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if MSGPACK_OS_AIX
+# define MSGPACK_OS_AIX_AVAILABLE
+# include <msgpack/predef/detail/os_detected.h>
+#endif
+
+#define MSGPACK_OS_AIX_NAME "IBM AIX"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_OS_AIX,MSGPACK_OS_AIX_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/os/amigaos.h b/third_party/msgpack/include/msgpack/predef/os/amigaos.h
new file mode 100644
index 0000000000..26493bca3e
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/os/amigaos.h
@@ -0,0 +1,46 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_OS_AMIGAOS_H
+#define MSGPACK_PREDEF_OS_AMIGAOS_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_OS_AMIGAOS`]
+
+[@http://en.wikipedia.org/wiki/AmigaOS AmigaOS] operating system.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`AMIGA`] [__predef_detection__]]
+ [[`__amigaos__`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_OS_AMIGAOS MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if !defined(MSGPACK_PREDEF_DETAIL_OS_DETECTED) && ( \
+ defined(AMIGA) || defined(__amigaos__) \
+ )
+# undef MSGPACK_OS_AMIGAOS
+# define MSGPACK_OS_AMIGAOS MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if MSGPACK_OS_AMIGAOS
+# define MSGPACK_OS_AMIGAOS_AVAILABLE
+# include <msgpack/predef/detail/os_detected.h>
+#endif
+
+#define MSGPACK_OS_AMIGAOS_NAME "AmigaOS"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_OS_AMIGAOS,MSGPACK_OS_AMIGAOS_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/os/android.h b/third_party/msgpack/include/msgpack/predef/os/android.h
new file mode 100644
index 0000000000..14195ea8ef
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/os/android.h
@@ -0,0 +1,45 @@
+/*
+Copyright Rene Rivera 2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_OS_ADROID_H
+#define MSGPACK_PREDEF_OS_ADROID_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_OS_ANDROID`]
+
+[@http://en.wikipedia.org/wiki/Android_%28operating_system%29 Android] operating system.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__ANDROID__`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_OS_ANDROID MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if !defined(MSGPACK_PREDEF_DETAIL_OS_DETECTED) && ( \
+ defined(__ANDROID__) \
+ )
+# undef MSGPACK_OS_ANDROID
+# define MSGPACK_OS_ANDROID MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if MSGPACK_OS_ANDROID
+# define MSGPACK_OS_ANDROID_AVAILABLE
+# include <msgpack/predef/detail/os_detected.h>
+#endif
+
+#define MSGPACK_OS_ANDROID_NAME "Android"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_OS_ANDROID,MSGPACK_OS_ANDROID_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/os/beos.h b/third_party/msgpack/include/msgpack/predef/os/beos.h
new file mode 100644
index 0000000000..35f143a50c
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/os/beos.h
@@ -0,0 +1,45 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_OS_BEOS_H
+#define MSGPACK_PREDEF_OS_BEOS_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_OS_BEOS`]
+
+[@http://en.wikipedia.org/wiki/BeOS BeOS] operating system.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__BEOS__`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_OS_BEOS MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if !defined(MSGPACK_PREDEF_DETAIL_OS_DETECTED) && ( \
+ defined(__BEOS__) \
+ )
+# undef MSGPACK_OS_BEOS
+# define MSGPACK_OS_BEOS MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if MSGPACK_OS_BEOS
+# define MSGPACK_OS_BEOS_AVAILABLE
+# include <msgpack/predef/detail/os_detected.h>
+#endif
+
+#define MSGPACK_OS_BEOS_NAME "BeOS"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_OS_BEOS,MSGPACK_OS_BEOS_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/os/bsd.h b/third_party/msgpack/include/msgpack/predef/os/bsd.h
new file mode 100644
index 0000000000..90b251333b
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/os/bsd.h
@@ -0,0 +1,103 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_OS_BSD_H
+#define MSGPACK_PREDEF_OS_BSD_H
+
+/* Special case: OSX will define BSD predefs if the sys/param.h
+ * header is included. We can guard against that, but only if we
+ * detect OSX first. Hence we will force include OSX detection
+ * before doing any BSD detection.
+ */
+#include <msgpack/predef/os/macos.h>
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_OS_BSD`]
+
+[@http://en.wikipedia.org/wiki/Berkeley_Software_Distribution BSD] operating system.
+
+BSD has various branch operating systems possible and each detected
+individually. This detects the following variations and sets a specific
+version number macro to match:
+
+* `MSGPACK_OS_BSD_DRAGONFLY` [@http://en.wikipedia.org/wiki/DragonFly_BSD DragonFly BSD]
+* `MSGPACK_OS_BSD_FREE` [@http://en.wikipedia.org/wiki/Freebsd FreeBSD]
+* `MSGPACK_OS_BSD_BSDI` [@http://en.wikipedia.org/wiki/BSD/OS BSDi BSD/OS]
+* `MSGPACK_OS_BSD_NET` [@http://en.wikipedia.org/wiki/Netbsd NetBSD]
+* `MSGPACK_OS_BSD_OPEN` [@http://en.wikipedia.org/wiki/Openbsd OpenBSD]
+
+[note The general `MSGPACK_OS_BSD` is set in all cases to indicate some form
+of BSD. If the above variants is detected the corresponding macro is also set.]
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`BSD`] [__predef_detection__]]
+ [[`_SYSTYPE_BSD`] [__predef_detection__]]
+
+ [[`BSD4_2`] [4.2.0]]
+ [[`BSD4_3`] [4.3.0]]
+ [[`BSD4_4`] [4.4.0]]
+ [[`BSD`] [V.R.0]]
+ ]
+ */
+
+#include <msgpack/predef/os/bsd/bsdi.h>
+#include <msgpack/predef/os/bsd/dragonfly.h>
+#include <msgpack/predef/os/bsd/free.h>
+#include <msgpack/predef/os/bsd/open.h>
+#include <msgpack/predef/os/bsd/net.h>
+
+#ifndef MSGPACK_OS_BSD
+#define MSGPACK_OS_BSD MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+#endif
+
+#if !defined(MSGPACK_PREDEF_DETAIL_OS_DETECTED) && ( \
+ defined(BSD) || \
+ defined(_SYSTYPE_BSD) \
+ )
+# undef MSGPACK_OS_BSD
+# include <sys/param.h>
+# if !defined(MSGPACK_OS_BSD) && defined(BSD4_4)
+# define MSGPACK_OS_BSD MSGPACK_VERSION_NUMBER(4,4,0)
+# endif
+# if !defined(MSGPACK_OS_BSD) && defined(BSD4_3)
+# define MSGPACK_OS_BSD MSGPACK_VERSION_NUMBER(4,3,0)
+# endif
+# if !defined(MSGPACK_OS_BSD) && defined(BSD4_2)
+# define MSGPACK_OS_BSD MSGPACK_VERSION_NUMBER(4,2,0)
+# endif
+# if !defined(MSGPACK_OS_BSD) && defined(BSD)
+# define MSGPACK_OS_BSD MSGPACK_PREDEF_MAKE_10_VVRR(BSD)
+# endif
+# if !defined(MSGPACK_OS_BSD)
+# define MSGPACK_OS_BSD MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if MSGPACK_OS_BSD
+# define MSGPACK_OS_BSD_AVAILABLE
+# include <msgpack/predef/detail/os_detected.h>
+#endif
+
+#define MSGPACK_OS_BSD_NAME "BSD"
+
+#else
+
+#include <msgpack/predef/os/bsd/bsdi.h>
+#include <msgpack/predef/os/bsd/dragonfly.h>
+#include <msgpack/predef/os/bsd/free.h>
+#include <msgpack/predef/os/bsd/open.h>
+#include <msgpack/predef/os/bsd/net.h>
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_OS_BSD,MSGPACK_OS_BSD_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/os/bsd/bsdi.h b/third_party/msgpack/include/msgpack/predef/os/bsd/bsdi.h
new file mode 100644
index 0000000000..4718ee775a
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/os/bsd/bsdi.h
@@ -0,0 +1,48 @@
+/*
+Copyright Rene Rivera 2012-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_OS_BSD_BSDI_H
+#define MSGPACK_PREDEF_OS_BSD_BSDI_H
+
+#include <msgpack/predef/os/bsd.h>
+
+/*`
+[heading `MSGPACK_OS_BSD_BSDI`]
+
+[@http://en.wikipedia.org/wiki/BSD/OS BSDi BSD/OS] operating system.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__bsdi__`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_OS_BSD_BSDI MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if !defined(MSGPACK_PREDEF_DETAIL_OS_DETECTED) && ( \
+ defined(__bsdi__) \
+ )
+# ifndef MSGPACK_OS_BSD_AVAILABLE
+# define MSGPACK_OS_BSD MSGPACK_VERSION_NUMBER_AVAILABLE
+# define MSGPACK_OS_BSD_AVAILABLE
+# endif
+# undef MSGPACK_OS_BSD_BSDI
+# define MSGPACK_OS_BSD_BSDI MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if MSGPACK_OS_BSD_BSDI
+# define MSGPACK_OS_BSD_BSDI_AVAILABLE
+# include <msgpack/predef/detail/os_detected.h>
+#endif
+
+#define MSGPACK_OS_BSD_BSDI_NAME "BSDi BSD/OS"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_OS_BSD_BSDI,MSGPACK_OS_BSD_BSDI_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/os/bsd/dragonfly.h b/third_party/msgpack/include/msgpack/predef/os/bsd/dragonfly.h
new file mode 100644
index 0000000000..fde6f24ec6
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/os/bsd/dragonfly.h
@@ -0,0 +1,50 @@
+/*
+Copyright Rene Rivera 2012-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_OS_BSD_DRAGONFLY_H
+#define MSGPACK_PREDEF_OS_BSD_DRAGONFLY_H
+
+#include <msgpack/predef/os/bsd.h>
+
+/*`
+[heading `MSGPACK_OS_BSD_DRAGONFLY`]
+
+[@http://en.wikipedia.org/wiki/DragonFly_BSD DragonFly BSD] operating system.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__DragonFly__`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_OS_BSD_DRAGONFLY MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if !defined(MSGPACK_PREDEF_DETAIL_OS_DETECTED) && ( \
+ defined(__DragonFly__) \
+ )
+# ifndef MSGPACK_OS_BSD_AVAILABLE
+# define MSGPACK_OS_BSD MSGPACK_VERSION_NUMBER_AVAILABLE
+# define MSGPACK_OS_BSD_AVAILABLE
+# endif
+# undef MSGPACK_OS_BSD_DRAGONFLY
+# if defined(__DragonFly__)
+# define MSGPACK_OS_DRAGONFLY_BSD MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if MSGPACK_OS_BSD_DRAGONFLY
+# define MSGPACK_OS_BSD_DRAGONFLY_AVAILABLE
+# include <msgpack/predef/detail/os_detected.h>
+#endif
+
+#define MSGPACK_OS_BSD_DRAGONFLY_NAME "DragonFly BSD"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_OS_BSD_DRAGONFLY,MSGPACK_OS_BSD_DRAGONFLY_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/os/bsd/free.h b/third_party/msgpack/include/msgpack/predef/os/bsd/free.h
new file mode 100644
index 0000000000..29cc2db439
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/os/bsd/free.h
@@ -0,0 +1,60 @@
+/*
+Copyright Rene Rivera 2012-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_OS_BSD_FREE_H
+#define MSGPACK_PREDEF_OS_BSD_FREE_H
+
+#include <msgpack/predef/os/bsd.h>
+
+/*`
+[heading `MSGPACK_OS_BSD_FREE`]
+
+[@http://en.wikipedia.org/wiki/Freebsd FreeBSD] operating system.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__FreeBSD__`] [__predef_detection__]]
+
+ [[`__FreeBSD_version`] [V.R.P]]
+ ]
+ */
+
+#define MSGPACK_OS_BSD_FREE MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if !defined(MSGPACK_PREDEF_DETAIL_OS_DETECTED) && ( \
+ defined(__FreeBSD__) \
+ )
+# ifndef MSGPACK_OS_BSD_AVAILABLE
+# define MSGPACK_OS_BSD MSGPACK_VERSION_NUMBER_AVAILABLE
+# define MSGPACK_OS_BSD_AVAILABLE
+# endif
+# undef MSGPACK_OS_BSD_FREE
+# if defined(__FreeBSD_version)
+# if __FreeBSD_version < 500000
+# define MSGPACK_OS_BSD_FREE \
+ MSGPACK_PREDEF_MAKE_10_VRP000(__FreeBSD_version)
+# else
+# define MSGPACK_OS_BSD_FREE \
+ MSGPACK_PREDEF_MAKE_10_VRR000(__FreeBSD_version)
+# endif
+# else
+# define MSGPACK_OS_BSD_FREE MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if MSGPACK_OS_BSD_FREE
+# define MSGPACK_OS_BSD_FREE_AVAILABLE
+# include <msgpack/predef/detail/os_detected.h>
+#endif
+
+#define MSGPACK_OS_BSD_FREE_NAME "Free BSD"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_OS_BSD_FREE,MSGPACK_OS_BSD_FREE_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/os/bsd/net.h b/third_party/msgpack/include/msgpack/predef/os/bsd/net.h
new file mode 100644
index 0000000000..2b21b18e6f
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/os/bsd/net.h
@@ -0,0 +1,84 @@
+/*
+Copyright Rene Rivera 2012-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_OS_BSD_NET_H
+#define MSGPACK_PREDEF_OS_BSD_NET_H
+
+#include <msgpack/predef/os/bsd.h>
+
+/*`
+[heading `MSGPACK_OS_BSD_NET`]
+
+[@http://en.wikipedia.org/wiki/Netbsd NetBSD] operating system.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__NETBSD__`] [__predef_detection__]]
+ [[`__NetBSD__`] [__predef_detection__]]
+
+ [[`__NETBSD_version`] [V.R.P]]
+ [[`NetBSD0_8`] [0.8.0]]
+ [[`NetBSD0_9`] [0.9.0]]
+ [[`NetBSD1_0`] [1.0.0]]
+ [[`__NetBSD_Version`] [V.R.P]]
+ ]
+ */
+
+#define MSGPACK_OS_BSD_NET MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if !defined(MSGPACK_PREDEF_DETAIL_OS_DETECTED) && ( \
+ defined(__NETBSD__) || defined(__NetBSD__) \
+ )
+# ifndef MSGPACK_OS_BSD_AVAILABLE
+# define MSGPACK_OS_BSD MSGPACK_VERSION_NUMBER_AVAILABLE
+# define MSGPACK_OS_BSD_AVAILABLE
+# endif
+# undef MSGPACK_OS_BSD_NET
+# if defined(__NETBSD__)
+# if defined(__NETBSD_version)
+# if __NETBSD_version < 500000
+# define MSGPACK_OS_BSD_NET \
+ MSGPACK_PREDEF_MAKE_10_VRP000(__NETBSD_version)
+# else
+# define MSGPACK_OS_BSD_NET \
+ MSGPACK_PREDEF_MAKE_10_VRR000(__NETBSD_version)
+# endif
+# else
+# define MSGPACK_OS_BSD_NET MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+# elif defined(__NetBSD__)
+# if !defined(MSGPACK_OS_BSD_NET) && defined(NetBSD0_8)
+# define MSGPACK_OS_BSD_NET MSGPACK_VERSION_NUMBER(0,8,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_NET) && defined(NetBSD0_9)
+# define MSGPACK_OS_BSD_NET MSGPACK_VERSION_NUMBER(0,9,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_NET) && defined(NetBSD1_0)
+# define MSGPACK_OS_BSD_NET MSGPACK_VERSION_NUMBER(1,0,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_NET) && defined(__NetBSD_Version)
+# define MSGPACK_OS_BSD_NET \
+ MSGPACK_PREDEF_MAKE_10_VVRR00PP00(__NetBSD_Version)
+# endif
+# if !defined(MSGPACK_OS_BSD_NET)
+# define MSGPACK_OS_BSD_NET MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+# endif
+#endif
+
+#if MSGPACK_OS_BSD_NET
+# define MSGPACK_OS_BSD_NET_AVAILABLE
+# include <msgpack/predef/detail/os_detected.h>
+#endif
+
+#define MSGPACK_OS_BSD_NET_NAME "DragonFly BSD"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_OS_BSD_NET,MSGPACK_OS_BSD_NET_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/os/bsd/open.h b/third_party/msgpack/include/msgpack/predef/os/bsd/open.h
new file mode 100644
index 0000000000..3c14b01421
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/os/bsd/open.h
@@ -0,0 +1,171 @@
+/*
+Copyright Rene Rivera 2012-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_OS_BSD_OPEN_H
+#define MSGPACK_PREDEF_OS_BSD_OPEN_H
+
+#include <msgpack/predef/os/bsd.h>
+
+/*`
+[heading `MSGPACK_OS_BSD_OPEN`]
+
+[@http://en.wikipedia.org/wiki/Openbsd OpenBSD] operating system.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__OpenBSD__`] [__predef_detection__]]
+
+ [[`OpenBSD2_0`] [2.0.0]]
+ [[`OpenBSD2_1`] [2.1.0]]
+ [[`OpenBSD2_2`] [2.2.0]]
+ [[`OpenBSD2_3`] [2.3.0]]
+ [[`OpenBSD2_4`] [2.4.0]]
+ [[`OpenBSD2_5`] [2.5.0]]
+ [[`OpenBSD2_6`] [2.6.0]]
+ [[`OpenBSD2_7`] [2.7.0]]
+ [[`OpenBSD2_8`] [2.8.0]]
+ [[`OpenBSD2_9`] [2.9.0]]
+ [[`OpenBSD3_0`] [3.0.0]]
+ [[`OpenBSD3_1`] [3.1.0]]
+ [[`OpenBSD3_2`] [3.2.0]]
+ [[`OpenBSD3_3`] [3.3.0]]
+ [[`OpenBSD3_4`] [3.4.0]]
+ [[`OpenBSD3_5`] [3.5.0]]
+ [[`OpenBSD3_6`] [3.6.0]]
+ [[`OpenBSD3_7`] [3.7.0]]
+ [[`OpenBSD3_8`] [3.8.0]]
+ [[`OpenBSD3_9`] [3.9.0]]
+ [[`OpenBSD4_0`] [4.0.0]]
+ [[`OpenBSD4_1`] [4.1.0]]
+ [[`OpenBSD4_2`] [4.2.0]]
+ [[`OpenBSD4_3`] [4.3.0]]
+ [[`OpenBSD4_4`] [4.4.0]]
+ [[`OpenBSD4_5`] [4.5.0]]
+ [[`OpenBSD4_6`] [4.6.0]]
+ [[`OpenBSD4_7`] [4.7.0]]
+ [[`OpenBSD4_8`] [4.8.0]]
+ [[`OpenBSD4_9`] [4.9.0]]
+ ]
+ */
+
+#define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if !defined(MSGPACK_PREDEF_DETAIL_OS_DETECTED) && ( \
+ defined(__OpenBSD__) \
+ )
+# ifndef MSGPACK_OS_BSD_AVAILABLE
+# define MSGPACK_OS_BSD MSGPACK_VERSION_NUMBER_AVAILABLE
+# define MSGPACK_OS_BSD_AVAILABLE
+# endif
+# undef MSGPACK_OS_BSD_OPEN
+# if !defined(MSGPACK_OS_BSD_OPEN) && defined(OpenBSD2_0)
+# define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER(2,0,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_OPEN) && defined(OpenBSD2_1)
+# define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER(2,1,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_OPEN) && defined(OpenBSD2_2)
+# define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER(2,2,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_OPEN) && defined(OpenBSD2_3)
+# define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER(2,3,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_OPEN) && defined(OpenBSD2_4)
+# define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER(2,4,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_OPEN) && defined(OpenBSD2_5)
+# define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER(2,5,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_OPEN) && defined(OpenBSD2_6)
+# define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER(2,6,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_OPEN) && defined(OpenBSD2_7)
+# define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER(2,7,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_OPEN) && defined(OpenBSD2_8)
+# define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER(2,8,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_OPEN) && defined(OpenBSD2_9)
+# define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER(2,9,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_OPEN) && defined(OpenBSD3_0)
+# define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER(3,0,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_OPEN) && defined(OpenBSD3_1)
+# define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER(3,1,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_OPEN) && defined(OpenBSD3_2)
+# define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER(3,2,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_OPEN) && defined(OpenBSD3_3)
+# define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER(3,3,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_OPEN) && defined(OpenBSD3_4)
+# define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER(3,4,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_OPEN) && defined(OpenBSD3_5)
+# define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER(3,5,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_OPEN) && defined(OpenBSD3_6)
+# define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER(3,6,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_OPEN) && defined(OpenBSD3_7)
+# define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER(3,7,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_OPEN) && defined(OpenBSD3_8)
+# define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER(3,8,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_OPEN) && defined(OpenBSD3_9)
+# define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER(3,9,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_OPEN) && defined(OpenBSD4_0)
+# define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER(4,0,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_OPEN) && defined(OpenBSD4_1)
+# define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER(4,1,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_OPEN) && defined(OpenBSD4_2)
+# define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER(4,2,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_OPEN) && defined(OpenBSD4_3)
+# define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER(4,3,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_OPEN) && defined(OpenBSD4_4)
+# define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER(4,4,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_OPEN) && defined(OpenBSD4_5)
+# define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER(4,5,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_OPEN) && defined(OpenBSD4_6)
+# define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER(4,6,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_OPEN) && defined(OpenBSD4_7)
+# define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER(4,7,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_OPEN) && defined(OpenBSD4_8)
+# define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER(4,8,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_OPEN) && defined(OpenBSD4_9)
+# define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER(4,9,0)
+# endif
+# if !defined(MSGPACK_OS_BSD_OPEN)
+# define MSGPACK_OS_BSD_OPEN MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if MSGPACK_OS_BSD_OPEN
+# define MSGPACK_OS_BSD_OPEN_AVAILABLE
+# include <msgpack/predef/detail/os_detected.h>
+#endif
+
+#define MSGPACK_OS_BSD_OPEN_NAME "OpenBSD"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_OS_BSD_OPEN,MSGPACK_OS_BSD_OPEN_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/os/cygwin.h b/third_party/msgpack/include/msgpack/predef/os/cygwin.h
new file mode 100644
index 0000000000..20ec7618a5
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/os/cygwin.h
@@ -0,0 +1,45 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_OS_CYGWIN_H
+#define MSGPACK_PREDEF_OS_CYGWIN_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_OS_CYGWIN`]
+
+[@http://en.wikipedia.org/wiki/Cygwin Cygwin] evironment.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__CYGWIN__`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_OS_CYGWIN MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if !defined(MSGPACK_PREDEF_DETAIL_OS_DETECTED) && ( \
+ defined(__CYGWIN__) \
+ )
+# undef MSGPACK_OS_CYGWIN
+# define MSGPACK_OS_CYGWIN MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if MSGPACK_OS_CYGWIN
+# define MSGPACK_OS_CYGWIN_AVAILABLE
+# include <msgpack/predef/detail/os_detected.h>
+#endif
+
+#define MSGPACK_OS_CYGWIN_NAME "Cygwin"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_OS_CYGWIN,MSGPACK_OS_CYGWIN_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/os/haiku.h b/third_party/msgpack/include/msgpack/predef/os/haiku.h
new file mode 100644
index 0000000000..53e9b517cd
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/os/haiku.h
@@ -0,0 +1,46 @@
+/*
+Copyright Jessica Hamilton 2014
+Copyright Rene Rivera 2014-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_OS_HAIKU_H
+#define MSGPACK_PREDEF_OS_HAIKU_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_OS_HAIKU`]
+
+[@http://en.wikipedia.org/wiki/Haiku_(operating_system) Haiku] operating system.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__HAIKU__`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_OS_HAIKU MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if !defined(MSGPACK_PREDEF_DETAIL_OS_DETECTED) && ( \
+ defined(__HAIKU__) \
+ )
+# undef MSGPACK_OS_HAIKU
+# define MSGPACK_OS_HAIKU MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if MSGPACK_OS_HAIKU
+# define MSGPACK_OS_HAIKU_AVAILABLE
+# include <msgpack/predef/detail/os_detected.h>
+#endif
+
+#define MSGPACK_OS_HAIKU_NAME "Haiku"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_OS_HAIKU,MSGPACK_OS_HAIKU_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/os/hpux.h b/third_party/msgpack/include/msgpack/predef/os/hpux.h
new file mode 100644
index 0000000000..c3359e7717
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/os/hpux.h
@@ -0,0 +1,47 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_OS_HPUX_H
+#define MSGPACK_PREDEF_OS_HPUX_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_OS_HPUX`]
+
+[@http://en.wikipedia.org/wiki/HP-UX HP-UX] operating system.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`hpux`] [__predef_detection__]]
+ [[`_hpux`] [__predef_detection__]]
+ [[`__hpux`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_OS_HPUX MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if !defined(MSGPACK_PREDEF_DETAIL_OS_DETECTED) && ( \
+ defined(hpux) || defined(_hpux) || defined(__hpux) \
+ )
+# undef MSGPACK_OS_HPUX
+# define MSGPACK_OS_HPUX MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if MSGPACK_OS_HPUX
+# define MSGPACK_OS_HPUX_AVAILABLE
+# include <msgpack/predef/detail/os_detected.h>
+#endif
+
+#define MSGPACK_OS_HPUX_NAME "HP-UX"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_OS_HPUX,MSGPACK_OS_HPUX_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/os/ios.h b/third_party/msgpack/include/msgpack/predef/os/ios.h
new file mode 100644
index 0000000000..cd14de7491
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/os/ios.h
@@ -0,0 +1,51 @@
+/*
+Copyright Franz Detro 2014
+Copyright Rene Rivera 2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_OS_IOS_H
+#define MSGPACK_PREDEF_OS_IOS_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_OS_IOS`]
+
+[@http://en.wikipedia.org/wiki/iOS iOS] operating system.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__APPLE__`] [__predef_detection__]]
+ [[`__MACH__`] [__predef_detection__]]
+ [[`__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__`] [__predef_detection__]]
+
+ [[`__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__`] [__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__*1000]]
+ ]
+ */
+
+#define MSGPACK_OS_IOS MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if !defined(MSGPACK_PREDEF_DETAIL_OS_DETECTED) && ( \
+ defined(__APPLE__) && defined(__MACH__) && \
+ defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) \
+ )
+# undef MSGPACK_OS_IOS
+# define MSGPACK_OS_IOS (__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__*1000)
+#endif
+
+#if MSGPACK_OS_IOS
+# define MSGPACK_OS_IOS_AVAILABLE
+# include <msgpack/predef/detail/os_detected.h>
+#endif
+
+#define MSGPACK_OS_IOS_NAME "iOS"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_OS_IOS,MSGPACK_OS_IOS_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/os/irix.h b/third_party/msgpack/include/msgpack/predef/os/irix.h
new file mode 100644
index 0000000000..b36e2a506a
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/os/irix.h
@@ -0,0 +1,46 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_OS_IRIX_H
+#define MSGPACK_PREDEF_OS_IRIX_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_OS_IRIX`]
+
+[@http://en.wikipedia.org/wiki/Irix IRIX] operating system.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`sgi`] [__predef_detection__]]
+ [[`__sgi`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_OS_IRIX MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if !defined(MSGPACK_PREDEF_DETAIL_OS_DETECTED) && ( \
+ defined(sgi) || defined(__sgi) \
+ )
+# undef MSGPACK_OS_IRIX
+# define MSGPACK_OS_IRIX MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if MSGPACK_OS_IRIX
+# define MSGPACK_OS_IRIX_AVAILABLE
+# include <msgpack/predef/detail/os_detected.h>
+#endif
+
+#define MSGPACK_OS_IRIX_NAME "IRIX"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_OS_IRIX,MSGPACK_OS_IRIX_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/os/linux.h b/third_party/msgpack/include/msgpack/predef/os/linux.h
new file mode 100644
index 0000000000..6c517c9d60
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/os/linux.h
@@ -0,0 +1,46 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_OS_LINUX_H
+#define MSGPACK_PREDEF_OS_LINUX_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_OS_LINUX`]
+
+[@http://en.wikipedia.org/wiki/Linux Linux] operating system.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`linux`] [__predef_detection__]]
+ [[`__linux`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_OS_LINUX MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if !defined(MSGPACK_PREDEF_DETAIL_OS_DETECTED) && ( \
+ defined(linux) || defined(__linux) \
+ )
+# undef MSGPACK_OS_LINUX
+# define MSGPACK_OS_LINUX MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if MSGPACK_OS_LINUX
+# define MSGPACK_OS_LINUX_AVAILABLE
+# include <msgpack/predef/detail/os_detected.h>
+#endif
+
+#define MSGPACK_OS_LINUX_NAME "Linux"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_OS_LINUX,MSGPACK_OS_LINUX_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/os/macos.h b/third_party/msgpack/include/msgpack/predef/os/macos.h
new file mode 100644
index 0000000000..20dc60d749
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/os/macos.h
@@ -0,0 +1,65 @@
+/*
+Copyright Rene Rivera 2008-2015
+Copyright Franz Detro 2014
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_OS_MACOS_H
+#define MSGPACK_PREDEF_OS_MACOS_H
+
+/* Special case: iOS will define the same predefs as MacOS, and additionally
+ '__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__'. We can guard against that,
+ but only if we detect iOS first. Hence we will force include iOS detection
+ * before doing any MacOS detection.
+ */
+#include <msgpack/predef/os/ios.h>
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_OS_MACOS`]
+
+[@http://en.wikipedia.org/wiki/Mac_OS Mac OS] operating system.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`macintosh`] [__predef_detection__]]
+ [[`Macintosh`] [__predef_detection__]]
+ [[`__APPLE__`] [__predef_detection__]]
+ [[`__MACH__`] [__predef_detection__]]
+
+ [[`__APPLE__`, `__MACH__`] [10.0.0]]
+ [[ /otherwise/ ] [9.0.0]]
+ ]
+ */
+
+#define MSGPACK_OS_MACOS MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if !defined(MSGPACK_PREDEF_DETAIL_OS_DETECTED) && ( \
+ defined(macintosh) || defined(Macintosh) || \
+ (defined(__APPLE__) && defined(__MACH__)) \
+ )
+# undef MSGPACK_OS_MACOS
+# if !defined(MSGPACK_OS_MACOS) && defined(__APPLE__) && defined(__MACH__)
+# define MSGPACK_OS_MACOS MSGPACK_VERSION_NUMBER(10,0,0)
+# endif
+# if !defined(MSGPACK_OS_MACOS)
+# define MSGPACK_OS_MACOS MSGPACK_VERSION_NUMBER(9,0,0)
+# endif
+#endif
+
+#if MSGPACK_OS_MACOS
+# define MSGPACK_OS_MACOS_AVAILABLE
+# include <msgpack/predef/detail/os_detected.h>
+#endif
+
+#define MSGPACK_OS_MACOS_NAME "Mac OS"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_OS_MACOS,MSGPACK_OS_MACOS_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/os/os400.h b/third_party/msgpack/include/msgpack/predef/os/os400.h
new file mode 100644
index 0000000000..53ef52f8dc
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/os/os400.h
@@ -0,0 +1,45 @@
+/*
+Copyright Rene Rivera 2011-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_OS_OS400_H
+#define MSGPACK_PREDEF_OS_OS400_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_OS_OS400`]
+
+[@http://en.wikipedia.org/wiki/IBM_i IBM OS/400] operating system.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__OS400__`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_OS_OS400 MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if !defined(MSGPACK_PREDEF_DETAIL_OS_DETECTED) && ( \
+ defined(__OS400__) \
+ )
+# undef MSGPACK_OS_OS400
+# define MSGPACK_OS_OS400 MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if MSGPACK_OS_OS400
+# define MSGPACK_OS_OS400_AVAILABLE
+# include <msgpack/predef/detail/os_detected.h>
+#endif
+
+#define MSGPACK_OS_OS400_NAME "IBM OS/400"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_OS_OS400,MSGPACK_OS_OS400_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/os/qnxnto.h b/third_party/msgpack/include/msgpack/predef/os/qnxnto.h
new file mode 100644
index 0000000000..80adaa2f38
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/os/qnxnto.h
@@ -0,0 +1,59 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_OS_QNXNTO_H
+#define MSGPACK_PREDEF_OS_QNXNTO_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_OS_QNX`]
+
+[@http://en.wikipedia.org/wiki/QNX QNX] operating system.
+Version number available as major, and minor if possible. And
+version 4 is specifically detected.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__QNX__`] [__predef_detection__]]
+ [[`__QNXNTO__`] [__predef_detection__]]
+
+ [[`_NTO_VERSION`] [V.R.0]]
+ [[`__QNX__`] [4.0.0]]
+ ]
+ */
+
+#define MSGPACK_OS_QNX MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if !defined(MSGPACK_PREDEF_DETAIL_OS_DETECTED) && ( \
+ defined(__QNX__) || defined(__QNXNTO__) \
+ )
+# undef MSGPACK_OS_QNX
+# if !defined(MSGPACK_OS_QNX) && defined(_NTO_VERSION)
+# define MSGPACK_OS_QNX MSGPACK_PREDEF_MAKE_10_VVRR(_NTO_VERSION)
+# endif
+# if !defined(MSGPACK_OS_QNX) && defined(__QNX__)
+# define MSGPACK_OS_QNX MSGPACK_VERSION_NUMBER(4,0,0)
+# endif
+# if !defined(MSGPACK_OS_QNX)
+# define MSGPACK_OS_QNX MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if MSGPACK_OS_QNX
+# define MSGPACK_OS_QNX_AVAILABLE
+# include <msgpack/predef/detail/os_detected.h>
+#endif
+
+#define MSGPACK_OS_QNX_NAME "QNX"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_OS_QNX,MSGPACK_OS_QNX_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/os/solaris.h b/third_party/msgpack/include/msgpack/predef/os/solaris.h
new file mode 100644
index 0000000000..f7ccb9c732
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/os/solaris.h
@@ -0,0 +1,46 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_OS_SOLARIS_H
+#define MSGPACK_PREDEF_OS_SOLARIS_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_OS_SOLARIS`]
+
+[@http://en.wikipedia.org/wiki/Solaris_Operating_Environment Solaris] operating system.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`sun`] [__predef_detection__]]
+ [[`__sun`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_OS_SOLARIS MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if !defined(MSGPACK_PREDEF_DETAIL_OS_DETECTED) && ( \
+ defined(sun) || defined(__sun) \
+ )
+# undef MSGPACK_OS_SOLARIS
+# define MSGPACK_OS_SOLARIS MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if MSGPACK_OS_SOLARIS
+# define MSGPACK_OS_SOLARIS_AVAILABLE
+# include <msgpack/predef/detail/os_detected.h>
+#endif
+
+#define MSGPACK_OS_SOLARIS_NAME "Solaris"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_OS_SOLARIS,MSGPACK_OS_SOLARIS_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/os/unix.h b/third_party/msgpack/include/msgpack/predef/os/unix.h
new file mode 100644
index 0000000000..b55970d14e
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/os/unix.h
@@ -0,0 +1,76 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_OS_UNIX_H
+#define MSGPACK_PREDEF_OS_UNIX_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_OS_UNIX`]
+
+[@http://en.wikipedia.org/wiki/Unix Unix Environment] operating system.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`unix`] [__predef_detection__]]
+ [[`__unix`] [__predef_detection__]]
+ [[`_XOPEN_SOURCE`] [__predef_detection__]]
+ [[`_POSIX_SOURCE`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_OS_UNIX MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(unix) || defined(__unix) || \
+ defined(_XOPEN_SOURCE) || defined(_POSIX_SOURCE)
+# undef MSGPACK_OS_UNIX
+# define MSGPACK_OS_UNIX MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if MSGPACK_OS_UNIX
+# define MSGPACK_OS_UNIX_AVAILABLE
+#endif
+
+#define MSGPACK_OS_UNIX_NAME "Unix Environment"
+
+/*`
+[heading `MSGPACK_OS_SVR4`]
+
+[@http://en.wikipedia.org/wiki/UNIX_System_V SVR4 Environment] operating system.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__sysv__`] [__predef_detection__]]
+ [[`__SVR4`] [__predef_detection__]]
+ [[`__svr4__`] [__predef_detection__]]
+ [[`_SYSTYPE_SVR4`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_OS_SVR4 MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__sysv__) || defined(__SVR4) || \
+ defined(__svr4__) || defined(_SYSTYPE_SVR4)
+# undef MSGPACK_OS_SVR4
+# define MSGPACK_OS_SVR4 MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if MSGPACK_OS_SVR4
+# define MSGPACK_OS_SVR4_AVAILABLE
+#endif
+
+#define MSGPACK_OS_SVR4_NAME "SVR4 Environment"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_OS_UNIX,MSGPACK_OS_UNIX_NAME)
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_OS_SVR4,MSGPACK_OS_SVR4_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/os/vms.h b/third_party/msgpack/include/msgpack/predef/os/vms.h
new file mode 100644
index 0000000000..bf87684e9b
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/os/vms.h
@@ -0,0 +1,52 @@
+/*
+Copyright Rene Rivera 2011-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_OS_VMS_H
+#define MSGPACK_PREDEF_OS_VMS_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_OS_VMS`]
+
+[@http://en.wikipedia.org/wiki/Vms VMS] operating system.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`VMS`] [__predef_detection__]]
+ [[`__VMS`] [__predef_detection__]]
+
+ [[`__VMS_VER`] [V.R.P]]
+ ]
+ */
+
+#define MSGPACK_OS_VMS MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if !defined(MSGPACK_PREDEF_DETAIL_OS_DETECTED) && ( \
+ defined(VMS) || defined(__VMS) \
+ )
+# undef MSGPACK_OS_VMS
+# if defined(__VMS_VER)
+# define MSGPACK_OS_VMS MSGPACK_PREDEF_MAKE_10_VVRR00PP00(__VMS_VER)
+# else
+# define MSGPACK_OS_VMS MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if MSGPACK_OS_VMS
+# define MSGPACK_OS_VMS_AVAILABLE
+# include <msgpack/predef/detail/os_detected.h>
+#endif
+
+#define MSGPACK_OS_VMS_NAME "VMS"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_OS_VMS,MSGPACK_OS_VMS_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/os/windows.h b/third_party/msgpack/include/msgpack/predef/os/windows.h
new file mode 100644
index 0000000000..bf73943766
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/os/windows.h
@@ -0,0 +1,51 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_OS_WINDOWS_H
+#define MSGPACK_PREDEF_OS_WINDOWS_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_OS_WINDOWS`]
+
+[@http://en.wikipedia.org/wiki/Category:Microsoft_Windows Microsoft Windows] operating system.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`_WIN32`] [__predef_detection__]]
+ [[`_WIN64`] [__predef_detection__]]
+ [[`__WIN32__`] [__predef_detection__]]
+ [[`__TOS_WIN__`] [__predef_detection__]]
+ [[`__WINDOWS__`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_OS_WINDOWS MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if !defined(MSGPACK_PREDEF_DETAIL_OS_DETECTED) && ( \
+ defined(_WIN32) || defined(_WIN64) || \
+ defined(__WIN32__) || defined(__TOS_WIN__) || \
+ defined(__WINDOWS__) \
+ )
+# undef MSGPACK_OS_WINDOWS
+# define MSGPACK_OS_WINDOWS MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if MSGPACK_OS_WINDOWS
+# define MSGPACK_OS_WINDOWS_AVAILABLE
+# include <msgpack/predef/detail/os_detected.h>
+#endif
+
+#define MSGPACK_OS_WINDOWS_NAME "Microsoft Windows"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_OS_WINDOWS,MSGPACK_OS_WINDOWS_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/other.h b/third_party/msgpack/include/msgpack/predef/other.h
new file mode 100644
index 0000000000..5434c5b5f0
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/other.h
@@ -0,0 +1,16 @@
+/*
+Copyright Rene Rivera 2013-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#if !defined(MSGPACK_PREDEF_OTHER_H) || defined(MSGPACK_PREDEF_INTERNAL_GENERATE_TESTS)
+#ifndef MSGPACK_PREDEF_OTHER_H
+#define MSGPACK_PREDEF_OTHER_H
+#endif
+
+#include <msgpack/predef/other/endian.h>
+/*#include <msgpack/predef/other/.h>*/
+
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/other/endian.h b/third_party/msgpack/include/msgpack/predef/other/endian.h
new file mode 100644
index 0000000000..3c609fa411
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/other/endian.h
@@ -0,0 +1,204 @@
+/*
+Copyright Rene Rivera 2013-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_ENDIAN_H
+#define MSGPACK_PREDEF_ENDIAN_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+#include <msgpack/predef/library/c/gnu.h>
+#include <msgpack/predef/os/macos.h>
+#include <msgpack/predef/os/bsd.h>
+#include <msgpack/predef/os/android.h>
+
+/*`
+[heading `MSGPACK_ENDIAN_*`]
+
+Detection of endian memory ordering. There are four defined macros
+in this header that define the various generally possible endian
+memory orderings:
+
+* `MSGPACK_ENDIAN_BIG_BYTE`, byte-swapped big-endian.
+* `MSGPACK_ENDIAN_BIG_WORD`, word-swapped big-endian.
+* `MSGPACK_ENDIAN_LITTLE_BYTE`, byte-swapped little-endian.
+* `MSGPACK_ENDIAN_LITTLE_WORD`, word-swapped little-endian.
+
+The detection is conservative in that it only identifies endianness
+that it knows for certain. In particular bi-endianness is not
+indicated as is it not practically possible to determine the
+endianness from anything but an operating system provided
+header. And the currently known headers do not define that
+programatic bi-endianness is available.
+
+This implementation is a compilation of various publicly available
+information and acquired knowledge:
+
+# The indispensable documentation of "Pre-defined Compiler Macros"
+ [@http://sourceforge.net/p/predef/wiki/Endianness Endianness].
+# The various endian specifications available in the
+ [@http://wikipedia.org/ Wikipedia] computer architecture pages.
+# Generally available searches for headers that define endianness.
+ */
+
+#define MSGPACK_ENDIAN_BIG_BYTE MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+#define MSGPACK_ENDIAN_BIG_WORD MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+#define MSGPACK_ENDIAN_LITTLE_BYTE MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+#define MSGPACK_ENDIAN_LITTLE_WORD MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+/* GNU libc provides a header defining __BYTE_ORDER, or _BYTE_ORDER.
+ * And some OSs provide some for of endian header also.
+ */
+#if !MSGPACK_ENDIAN_BIG_BYTE && !MSGPACK_ENDIAN_BIG_WORD && \
+ !MSGPACK_ENDIAN_LITTLE_BYTE && !MSGPACK_ENDIAN_LITTLE_WORD
+# if MSGPACK_LIB_C_GNU || MSGPACK_OS_ANDROID
+# include <endian.h>
+# else
+# if MSGPACK_OS_MACOS
+# include <machine/endian.h>
+# else
+# if MSGPACK_OS_BSD
+# if MSGPACK_OS_BSD_OPEN
+# include <machine/endian.h>
+# else
+# include <sys/endian.h>
+# endif
+# endif
+# endif
+# endif
+# if defined(__BYTE_ORDER)
+# if defined(__BIG_ENDIAN) && (__BYTE_ORDER == __BIG_ENDIAN)
+# undef MSGPACK_ENDIAN_BIG_BYTE
+# define MSGPACK_ENDIAN_BIG_BYTE MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+# if defined(__LITTLE_ENDIAN) && (__BYTE_ORDER == __LITTLE_ENDIAN)
+# undef MSGPACK_ENDIAN_LITTLE_BYTE
+# define MSGPACK_ENDIAN_LITTLE_BYTE MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+# if defined(__PDP_ENDIAN) && (__BYTE_ORDER == __PDP_ENDIAN)
+# undef MSGPACK_ENDIAN_LITTLE_WORD
+# define MSGPACK_ENDIAN_LITTLE_WORD MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+# endif
+# if !defined(__BYTE_ORDER) && defined(_BYTE_ORDER)
+# if defined(_BIG_ENDIAN) && (_BYTE_ORDER == _BIG_ENDIAN)
+# undef MSGPACK_ENDIAN_BIG_BYTE
+# define MSGPACK_ENDIAN_BIG_BYTE MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+# if defined(_LITTLE_ENDIAN) && (_BYTE_ORDER == _LITTLE_ENDIAN)
+# undef MSGPACK_ENDIAN_LITTLE_BYTE
+# define MSGPACK_ENDIAN_LITTLE_BYTE MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+# if defined(_PDP_ENDIAN) && (_BYTE_ORDER == _PDP_ENDIAN)
+# undef MSGPACK_ENDIAN_LITTLE_WORD
+# define MSGPACK_ENDIAN_LITTLE_WORD MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+# endif
+#endif
+
+/* Built-in byte-swpped big-endian macros.
+ */
+#if !MSGPACK_ENDIAN_BIG_BYTE && !MSGPACK_ENDIAN_BIG_WORD && \
+ !MSGPACK_ENDIAN_LITTLE_BYTE && !MSGPACK_ENDIAN_LITTLE_WORD
+# if (defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)) || \
+ (defined(_BIG_ENDIAN) && !defined(_LITTLE_ENDIAN)) || \
+ defined(__ARMEB__) || \
+ defined(__THUMBEB__) || \
+ defined(__AARCH64EB__) || \
+ defined(_MIPSEB) || \
+ defined(__MIPSEB) || \
+ defined(__MIPSEB__)
+# undef MSGPACK_ENDIAN_BIG_BYTE
+# define MSGPACK_ENDIAN_BIG_BYTE MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+/* Built-in byte-swpped little-endian macros.
+ */
+#if !MSGPACK_ENDIAN_BIG_BYTE && !MSGPACK_ENDIAN_BIG_WORD && \
+ !MSGPACK_ENDIAN_LITTLE_BYTE && !MSGPACK_ENDIAN_LITTLE_WORD
+# if (defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)) || \
+ (defined(_LITTLE_ENDIAN) && !defined(_BIG_ENDIAN)) || \
+ defined(__ARMEL__) || \
+ defined(__THUMBEL__) || \
+ defined(__AARCH64EL__) || \
+ defined(_MIPSEL) || \
+ defined(__MIPSEL) || \
+ defined(__MIPSEL__)
+# undef MSGPACK_ENDIAN_LITTLE_BYTE
+# define MSGPACK_ENDIAN_LITTLE_BYTE MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+/* Some architectures are strictly one endianess (as opposed
+ * the current common bi-endianess).
+ */
+#if !MSGPACK_ENDIAN_BIG_BYTE && !MSGPACK_ENDIAN_BIG_WORD && \
+ !MSGPACK_ENDIAN_LITTLE_BYTE && !MSGPACK_ENDIAN_LITTLE_WORD
+# include <msgpack/predef/architecture.h>
+# if MSGPACK_ARCH_M68K || \
+ MSGPACK_ARCH_PARISC || \
+ MSGPACK_ARCH_SPARC || \
+ MSGPACK_ARCH_SYS370 || \
+ MSGPACK_ARCH_SYS390 || \
+ MSGPACK_ARCH_Z
+# undef MSGPACK_ENDIAN_BIG_BYTE
+# define MSGPACK_ENDIAN_BIG_BYTE MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+# if MSGPACK_ARCH_AMD64 || \
+ MSGPACK_ARCH_IA64 || \
+ MSGPACK_ARCH_X86 || \
+ MSGPACK_ARCH_BLACKFIN
+# undef MSGPACK_ENDIAN_LITTLE_BYTE
+# define MSGPACK_ENDIAN_LITTLE_BYTE MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+/* Windows on ARM, if not otherwise detected/specified, is always
+ * byte-swaped little-endian.
+ */
+#if !MSGPACK_ENDIAN_BIG_BYTE && !MSGPACK_ENDIAN_BIG_WORD && \
+ !MSGPACK_ENDIAN_LITTLE_BYTE && !MSGPACK_ENDIAN_LITTLE_WORD
+# if MSGPACK_ARCH_ARM
+# include <msgpack/predef/os/windows.h>
+# if MSGPACK_OS_WINDOWS
+# undef MSGPACK_ENDIAN_LITTLE_BYTE
+# define MSGPACK_ENDIAN_LITTLE_BYTE MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+# endif
+#endif
+
+#if MSGPACK_ENDIAN_BIG_BYTE
+# define MSGPACK_ENDIAN_BIG_BYTE_AVAILABLE
+#endif
+#if MSGPACK_ENDIAN_BIG_WORD
+# define MSGPACK_ENDIAN_BIG_WORD_BYTE_AVAILABLE
+#endif
+#if MSGPACK_ENDIAN_LITTLE_BYTE
+# define MSGPACK_ENDIAN_LITTLE_BYTE_AVAILABLE
+#endif
+#if MSGPACK_ENDIAN_LITTLE_WORD
+# define MSGPACK_ENDIAN_LITTLE_WORD_BYTE_AVAILABLE
+#endif
+
+#define MSGPACK_ENDIAN_BIG_BYTE_NAME "Byte-Swapped Big-Endian"
+#define MSGPACK_ENDIAN_BIG_WORD_NAME "Word-Swapped Big-Endian"
+#define MSGPACK_ENDIAN_LITTLE_BYTE_NAME "Byte-Swapped Little-Endian"
+#define MSGPACK_ENDIAN_LITTLE_WORD_NAME "Word-Swapped Little-Endian"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_ENDIAN_BIG_BYTE,MSGPACK_ENDIAN_BIG_BYTE_NAME)
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_ENDIAN_BIG_WORD,MSGPACK_ENDIAN_BIG_WORD_NAME)
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_ENDIAN_LITTLE_BYTE,MSGPACK_ENDIAN_LITTLE_BYTE_NAME)
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_ENDIAN_LITTLE_WORD,MSGPACK_ENDIAN_LITTLE_WORD_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/platform.h b/third_party/msgpack/include/msgpack/predef/platform.h
new file mode 100644
index 0000000000..34255c2bc6
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/platform.h
@@ -0,0 +1,21 @@
+/*
+Copyright Rene Rivera 2013-2015
+Copyright (c) Microsoft Corporation 2014
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#if !defined(MSGPACK_PREDEF_PLATFORM_H) || defined(MSGPACK_PREDEF_INTERNAL_GENERATE_TESTS)
+#ifndef MSGPACK_PREDEF_PLATFORM_H
+#define MSGPACK_PREDEF_PLATFORM_H
+#endif
+
+#include <msgpack/predef/platform/mingw.h>
+#include <msgpack/predef/platform/windows_desktop.h>
+#include <msgpack/predef/platform/windows_store.h>
+#include <msgpack/predef/platform/windows_phone.h>
+#include <msgpack/predef/platform/windows_runtime.h>
+/*#include <msgpack/predef/platform/.h>*/
+
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/platform/mingw.h b/third_party/msgpack/include/msgpack/predef/platform/mingw.h
new file mode 100644
index 0000000000..213f932cac
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/platform/mingw.h
@@ -0,0 +1,69 @@
+/*
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_COMPILER_MINGW_H
+#define MSGPACK_PREDEF_COMPILER_MINGW_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+
+/*`
+[heading `MSGPACK_PLAT_MINGW`]
+
+[@http://en.wikipedia.org/wiki/MinGW MinGW] platform.
+Version number available as major, minor, and patch.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__MINGW32__`] [__predef_detection__]]
+ [[`__MINGW64__`] [__predef_detection__]]
+
+ [[`__MINGW64_VERSION_MAJOR`, `__MINGW64_VERSION_MINOR`] [V.R.0]]
+ [[`__MINGW32_VERSION_MAJOR`, `__MINGW32_VERSION_MINOR`] [V.R.0]]
+ ]
+ */
+
+#define MSGPACK_PLAT_MINGW MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__MINGW32__) || defined(__MINGW64__)
+# include <_mingw.h>
+# if !defined(MSGPACK_PLAT_MINGW_DETECTION) && (defined(__MINGW64_VERSION_MAJOR) && defined(__MINGW64_VERSION_MINOR))
+# define MSGPACK_PLAT_MINGW_DETECTION \
+ MSGPACK_VERSION_NUMBER(__MINGW64_VERSION_MAJOR,__MINGW64_VERSION_MINOR,0)
+# endif
+# if !defined(MSGPACK_PLAT_MINGW_DETECTION) && (defined(__MINGW32_VERSION_MAJOR) && defined(__MINGW32_VERSION_MINOR))
+# define MSGPACK_PLAT_MINGW_DETECTION \
+ MSGPACK_VERSION_NUMBER(__MINGW32_MAJOR_VERSION,__MINGW32_MINOR_VERSION,0)
+# endif
+# if !defined(MSGPACK_PLAT_MINGW_DETECTION)
+# define MSGPACK_PLAT_MINGW_DETECTION MSGPACK_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#ifdef MSGPACK_PLAT_MINGW_DETECTION
+# define MSGPACK_PLAT_MINGW_AVAILABLE
+# if defined(MSGPACK_PREDEF_DETAIL_PLAT_DETECTED)
+# define MSGPACK_PLAT_MINGW_EMULATED MSGPACK_PLAT_MINGW_DETECTION
+# else
+# undef MSGPACK_PLAT_MINGW
+# define MSGPACK_PLAT_MINGW MSGPACK_PLAT_MINGW_DETECTION
+# endif
+# include <msgpack/predef/detail/platform_detected.h>
+#endif
+
+#define MSGPACK_PLAT_MINGW_NAME "MinGW"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_PLAT_MINGW,MSGPACK_PLAT_MINGW_NAME)
+
+#ifdef MSGPACK_PLAT_MINGW_EMULATED
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_PLAT_MINGW_EMULATED,MSGPACK_PLAT_MINGW_NAME)
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/platform/windows_desktop.h b/third_party/msgpack/include/msgpack/predef/platform/windows_desktop.h
new file mode 100644
index 0000000000..9f0c4f1fc2
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/platform/windows_desktop.h
@@ -0,0 +1,45 @@
+/*
+Copyright (c) Microsoft Corporation 2014
+Copyright Rene Rivera 2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_PLAT_WINDOWS_DESKTOP_H
+#define MSGPACK_PREDEF_PLAT_WINDOWS_DESKTOP_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+#include <msgpack/predef/os/windows.h>
+
+/*`
+[heading `MSGPACK_PLAT_WINDOWS_DESKTOP`]
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`!WINAPI_FAMILY`] [__predef_detection__]]
+ [[`WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_PLAT_WINDOWS_DESKTOP MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if MSGPACK_OS_WINDOWS && \
+ ( !defined(WINAPI_FAMILY) || (WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP) )
+# undef MSGPACK_PLAT_WINDOWS_DESKTOP
+# define MSGPACK_PLAT_WINDOWS_DESKTOP MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if MSGPACK_PLAT_WINDOWS_DESKTOP
+# define MSGPACK_PLAT_WINDOWS_DESKTOP_AVAILABLE
+# include <msgpack/predef/detail/platform_detected.h>
+#endif
+
+#define MSGPACK_PLAT_WINDOWS_DESKTOP_NAME "Windows Desktop"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_PLAT_WINDOWS_DESKTOP,MSGPACK_PLAT_WINDOWS_DESKTOP_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/platform/windows_phone.h b/third_party/msgpack/include/msgpack/predef/platform/windows_phone.h
new file mode 100644
index 0000000000..a224f69c9b
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/platform/windows_phone.h
@@ -0,0 +1,43 @@
+/*
+Copyright (c) Microsoft Corporation 2014
+Copyright Rene Rivera 2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_PLAT_WINDOWS_PHONE_H
+#define MSGPACK_PREDEF_PLAT_WINDOWS_PHONE_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+#include <msgpack/predef/os/windows.h>
+
+/*`
+[heading `MSGPACK_PLAT_WINDOWS_PHONE`]
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_PLAT_WINDOWS_PHONE MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if MSGPACK_OS_WINDOWS && defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
+# undef MSGPACK_PLAT_WINDOWS_PHONE
+# define MSGPACK_PLAT_WINDOWS_PHONE MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if MSGPACK_PLAT_WINDOWS_PHONE
+# define MSGPACK_PLAT_WINDOWS_PHONE_AVAILABLE
+# include <msgpack/predef/detail/platform_detected.h>
+#endif
+
+#define MSGPACK_PLAT_WINDOWS_PHONE_NAME "Windows Phone"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_PLAT_WINDOWS_PHONE,MSGPACK_PLAT_WINDOWS_PHONE_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/platform/windows_runtime.h b/third_party/msgpack/include/msgpack/predef/platform/windows_runtime.h
new file mode 100644
index 0000000000..759b2f8658
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/platform/windows_runtime.h
@@ -0,0 +1,45 @@
+/*
+Copyright (c) Microsoft Corporation 2014
+Copyright Rene Rivera 2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_PLAT_WINDOWS_RUNTIME_H
+#define MSGPACK_PREDEF_PLAT_WINDOWS_RUNTIME_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+#include <msgpack/predef/os/windows.h>
+
+/*`
+[heading `MSGPACK_PLAT_WINDOWS_RUNTIME`]
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`WINAPI_FAMILY == WINAPI_FAMILY_APP`] [__predef_detection__]]
+ [[`WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_PLAT_WINDOWS_RUNTIME MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if MSGPACK_OS_WINDOWS && defined(WINAPI_FAMILY) && \
+ ( WINAPI_FAMILY == WINAPI_FAMILY_APP || WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP )
+# undef MSGPACK_PLAT_WINDOWS_RUNTIME
+# define MSGPACK_PLAT_WINDOWS_RUNTIME MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if MSGPACK_PLAT_WINDOWS_RUNTIME
+# define MSGPACK_PLAT_WINDOWS_RUNTIME_AVAILABLE
+# include <msgpack/predef/detail/platform_detected.h>
+#endif
+
+#define MSGPACK_PLAT_WINDOWS_RUNTIME_NAME "Windows Runtime"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_PLAT_WINDOWS_RUNTIME,MSGPACK_PLAT_WINDOWS_RUNTIME_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/platform/windows_store.h b/third_party/msgpack/include/msgpack/predef/platform/windows_store.h
new file mode 100644
index 0000000000..c538c9b3e8
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/platform/windows_store.h
@@ -0,0 +1,43 @@
+/*
+Copyright (c) Microsoft Corporation 2014
+Copyright Rene Rivera 2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_PLAT_WINDOWS_STORE_H
+#define MSGPACK_PREDEF_PLAT_WINDOWS_STORE_H
+
+#include <msgpack/predef/version_number.h>
+#include <msgpack/predef/make.h>
+#include <msgpack/predef/os/windows.h>
+
+/*`
+[heading `MSGPACK_PLAT_WINDOWS_STORE`]
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`WINAPI_FAMILY == WINAPI_FAMILY_APP`] [__predef_detection__]]
+ ]
+ */
+
+#define MSGPACK_PLAT_WINDOWS_STORE MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
+
+#if MSGPACK_OS_WINDOWS && defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_APP
+# undef MSGPACK_PLAT_WINDOWS_STORE
+# define MSGPACK_PLAT_WINDOWS_STORE MSGPACK_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if MSGPACK_PLAT_WINDOWS_STORE
+# define MSGPACK_PLAT_WINDOWS_STORE_AVAILABLE
+# include <msgpack/predef/detail/platform_detected.h>
+#endif
+
+#define MSGPACK_PLAT_WINDOWS_STORE_NAME "Windows Store"
+
+#endif
+
+#include <msgpack/predef/detail/test.h>
+MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_PLAT_WINDOWS_STORE,MSGPACK_PLAT_WINDOWS_STORE_NAME)
diff --git a/third_party/msgpack/include/msgpack/predef/version.h b/third_party/msgpack/include/msgpack/predef/version.h
new file mode 100644
index 0000000000..12a3382244
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/version.h
@@ -0,0 +1,15 @@
+/*
+Copyright Rene Rivera 2015-2016
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_VERSION_H
+#define MSGPACK_PREDEF_VERSION_H
+
+#include <msgpack/predef/version_number.h>
+
+#define MSGPACK_PREDEF_VERSION MSGPACK_VERSION_NUMBER(1,4,1)
+
+#endif
diff --git a/third_party/msgpack/include/msgpack/predef/version_number.h b/third_party/msgpack/include/msgpack/predef/version_number.h
new file mode 100644
index 0000000000..be8ff5527b
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/predef/version_number.h
@@ -0,0 +1,53 @@
+/*
+Copyright Rene Rivera 2005, 2008-2013
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef MSGPACK_PREDEF_VERSION_NUMBER_H
+#define MSGPACK_PREDEF_VERSION_NUMBER_H
+
+/*`
+[heading `MSGPACK_VERSION_NUMBER`]
+
+``
+MSGPACK_VERSION_NUMBER(major,minor,patch)
+``
+
+Defines standard version numbers, with these properties:
+
+* Decimal base whole numbers in the range \[0,1000000000).
+ The number range is designed to allow for a (2,2,5) triplet.
+ Which fits within a 32 bit value.
+* The `major` number can be in the \[0,99\] range.
+* The `minor` number can be in the \[0,99\] range.
+* The `patch` number can be in the \[0,99999\] range.
+* Values can be specified in any base. As the defined value
+ is an constant expression.
+* Value can be directly used in both preprocessor and compiler
+ expressions for comparison to other similarly defined values.
+* The implementation enforces the individual ranges for the
+ major, minor, and patch numbers. And values over the ranges
+ are truncated (modulo).
+
+*/
+#define MSGPACK_VERSION_NUMBER(major,minor,patch) \
+ ( (((major)%100)*10000000) + (((minor)%100)*100000) + ((patch)%100000) )
+
+#define MSGPACK_VERSION_NUMBER_MAX \
+ MSGPACK_VERSION_NUMBER(99,99,99999)
+
+#define MSGPACK_VERSION_NUMBER_ZERO \
+ MSGPACK_VERSION_NUMBER(0,0,0)
+
+#define MSGPACK_VERSION_NUMBER_MIN \
+ MSGPACK_VERSION_NUMBER(0,0,1)
+
+#define MSGPACK_VERSION_NUMBER_AVAILABLE \
+ MSGPACK_VERSION_NUMBER_MIN
+
+#define MSGPACK_VERSION_NUMBER_NOT_AVAILABLE \
+ MSGPACK_VERSION_NUMBER_ZERO
+
+#endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor.hpp b/third_party/msgpack/include/msgpack/preprocessor.hpp
new file mode 100644
index 0000000000..d2ba938756
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor.hpp
@@ -0,0 +1,19 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org/libs/preprocessor for documentation. */
+#
+# ifndef MSGPACK_PREPROCESSOR_HPP
+# define MSGPACK_PREPROCESSOR_HPP
+#
+# include <msgpack/preprocessor/library.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/arithmetic.hpp b/third_party/msgpack/include/msgpack/preprocessor/arithmetic.hpp
new file mode 100644
index 0000000000..3d76484d5c
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/arithmetic.hpp
@@ -0,0 +1,25 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ARITHMETIC_HPP
+# define MSGPACK_PREPROCESSOR_ARITHMETIC_HPP
+#
+# include <msgpack/preprocessor/arithmetic/add.hpp>
+# include <msgpack/preprocessor/arithmetic/dec.hpp>
+# include <msgpack/preprocessor/arithmetic/div.hpp>
+# include <msgpack/preprocessor/arithmetic/inc.hpp>
+# include <msgpack/preprocessor/arithmetic/mod.hpp>
+# include <msgpack/preprocessor/arithmetic/mul.hpp>
+# include <msgpack/preprocessor/arithmetic/sub.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/arithmetic/add.hpp b/third_party/msgpack/include/msgpack/preprocessor/arithmetic/add.hpp
new file mode 100644
index 0000000000..d020c1e610
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/arithmetic/add.hpp
@@ -0,0 +1,51 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ARITHMETIC_ADD_HPP
+# define MSGPACK_PREPROCESSOR_ARITHMETIC_ADD_HPP
+#
+# include <msgpack/preprocessor/arithmetic/dec.hpp>
+# include <msgpack/preprocessor/arithmetic/inc.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/control/while.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+#
+# /* MSGPACK_PP_ADD */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_ADD(x, y) MSGPACK_PP_TUPLE_ELEM(2, 0, MSGPACK_PP_WHILE(MSGPACK_PP_ADD_P, MSGPACK_PP_ADD_O, (x, y)))
+# else
+# define MSGPACK_PP_ADD(x, y) MSGPACK_PP_ADD_I(x, y)
+# define MSGPACK_PP_ADD_I(x, y) MSGPACK_PP_TUPLE_ELEM(2, 0, MSGPACK_PP_WHILE(MSGPACK_PP_ADD_P, MSGPACK_PP_ADD_O, (x, y)))
+# endif
+#
+# define MSGPACK_PP_ADD_P(d, xy) MSGPACK_PP_TUPLE_ELEM(2, 1, xy)
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_ADD_O(d, xy) MSGPACK_PP_ADD_O_I xy
+# else
+# define MSGPACK_PP_ADD_O(d, xy) MSGPACK_PP_ADD_O_I(MSGPACK_PP_TUPLE_ELEM(2, 0, xy), MSGPACK_PP_TUPLE_ELEM(2, 1, xy))
+# endif
+#
+# define MSGPACK_PP_ADD_O_I(x, y) (MSGPACK_PP_INC(x), MSGPACK_PP_DEC(y))
+#
+# /* MSGPACK_PP_ADD_D */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_ADD_D(d, x, y) MSGPACK_PP_TUPLE_ELEM(2, 0, MSGPACK_PP_WHILE_ ## d(MSGPACK_PP_ADD_P, MSGPACK_PP_ADD_O, (x, y)))
+# else
+# define MSGPACK_PP_ADD_D(d, x, y) MSGPACK_PP_ADD_D_I(d, x, y)
+# define MSGPACK_PP_ADD_D_I(d, x, y) MSGPACK_PP_TUPLE_ELEM(2, 0, MSGPACK_PP_WHILE_ ## d(MSGPACK_PP_ADD_P, MSGPACK_PP_ADD_O, (x, y)))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/arithmetic/dec.hpp b/third_party/msgpack/include/msgpack/preprocessor/arithmetic/dec.hpp
new file mode 100644
index 0000000000..6ff506766c
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/arithmetic/dec.hpp
@@ -0,0 +1,289 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ARITHMETIC_DEC_HPP
+# define MSGPACK_PREPROCESSOR_ARITHMETIC_DEC_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# /* MSGPACK_PP_DEC */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_DEC(x) MSGPACK_PP_DEC_I(x)
+# else
+# define MSGPACK_PP_DEC(x) MSGPACK_PP_DEC_OO((x))
+# define MSGPACK_PP_DEC_OO(par) MSGPACK_PP_DEC_I ## par
+# endif
+#
+# define MSGPACK_PP_DEC_I(x) MSGPACK_PP_DEC_ ## x
+#
+# define MSGPACK_PP_DEC_0 0
+# define MSGPACK_PP_DEC_1 0
+# define MSGPACK_PP_DEC_2 1
+# define MSGPACK_PP_DEC_3 2
+# define MSGPACK_PP_DEC_4 3
+# define MSGPACK_PP_DEC_5 4
+# define MSGPACK_PP_DEC_6 5
+# define MSGPACK_PP_DEC_7 6
+# define MSGPACK_PP_DEC_8 7
+# define MSGPACK_PP_DEC_9 8
+# define MSGPACK_PP_DEC_10 9
+# define MSGPACK_PP_DEC_11 10
+# define MSGPACK_PP_DEC_12 11
+# define MSGPACK_PP_DEC_13 12
+# define MSGPACK_PP_DEC_14 13
+# define MSGPACK_PP_DEC_15 14
+# define MSGPACK_PP_DEC_16 15
+# define MSGPACK_PP_DEC_17 16
+# define MSGPACK_PP_DEC_18 17
+# define MSGPACK_PP_DEC_19 18
+# define MSGPACK_PP_DEC_20 19
+# define MSGPACK_PP_DEC_21 20
+# define MSGPACK_PP_DEC_22 21
+# define MSGPACK_PP_DEC_23 22
+# define MSGPACK_PP_DEC_24 23
+# define MSGPACK_PP_DEC_25 24
+# define MSGPACK_PP_DEC_26 25
+# define MSGPACK_PP_DEC_27 26
+# define MSGPACK_PP_DEC_28 27
+# define MSGPACK_PP_DEC_29 28
+# define MSGPACK_PP_DEC_30 29
+# define MSGPACK_PP_DEC_31 30
+# define MSGPACK_PP_DEC_32 31
+# define MSGPACK_PP_DEC_33 32
+# define MSGPACK_PP_DEC_34 33
+# define MSGPACK_PP_DEC_35 34
+# define MSGPACK_PP_DEC_36 35
+# define MSGPACK_PP_DEC_37 36
+# define MSGPACK_PP_DEC_38 37
+# define MSGPACK_PP_DEC_39 38
+# define MSGPACK_PP_DEC_40 39
+# define MSGPACK_PP_DEC_41 40
+# define MSGPACK_PP_DEC_42 41
+# define MSGPACK_PP_DEC_43 42
+# define MSGPACK_PP_DEC_44 43
+# define MSGPACK_PP_DEC_45 44
+# define MSGPACK_PP_DEC_46 45
+# define MSGPACK_PP_DEC_47 46
+# define MSGPACK_PP_DEC_48 47
+# define MSGPACK_PP_DEC_49 48
+# define MSGPACK_PP_DEC_50 49
+# define MSGPACK_PP_DEC_51 50
+# define MSGPACK_PP_DEC_52 51
+# define MSGPACK_PP_DEC_53 52
+# define MSGPACK_PP_DEC_54 53
+# define MSGPACK_PP_DEC_55 54
+# define MSGPACK_PP_DEC_56 55
+# define MSGPACK_PP_DEC_57 56
+# define MSGPACK_PP_DEC_58 57
+# define MSGPACK_PP_DEC_59 58
+# define MSGPACK_PP_DEC_60 59
+# define MSGPACK_PP_DEC_61 60
+# define MSGPACK_PP_DEC_62 61
+# define MSGPACK_PP_DEC_63 62
+# define MSGPACK_PP_DEC_64 63
+# define MSGPACK_PP_DEC_65 64
+# define MSGPACK_PP_DEC_66 65
+# define MSGPACK_PP_DEC_67 66
+# define MSGPACK_PP_DEC_68 67
+# define MSGPACK_PP_DEC_69 68
+# define MSGPACK_PP_DEC_70 69
+# define MSGPACK_PP_DEC_71 70
+# define MSGPACK_PP_DEC_72 71
+# define MSGPACK_PP_DEC_73 72
+# define MSGPACK_PP_DEC_74 73
+# define MSGPACK_PP_DEC_75 74
+# define MSGPACK_PP_DEC_76 75
+# define MSGPACK_PP_DEC_77 76
+# define MSGPACK_PP_DEC_78 77
+# define MSGPACK_PP_DEC_79 78
+# define MSGPACK_PP_DEC_80 79
+# define MSGPACK_PP_DEC_81 80
+# define MSGPACK_PP_DEC_82 81
+# define MSGPACK_PP_DEC_83 82
+# define MSGPACK_PP_DEC_84 83
+# define MSGPACK_PP_DEC_85 84
+# define MSGPACK_PP_DEC_86 85
+# define MSGPACK_PP_DEC_87 86
+# define MSGPACK_PP_DEC_88 87
+# define MSGPACK_PP_DEC_89 88
+# define MSGPACK_PP_DEC_90 89
+# define MSGPACK_PP_DEC_91 90
+# define MSGPACK_PP_DEC_92 91
+# define MSGPACK_PP_DEC_93 92
+# define MSGPACK_PP_DEC_94 93
+# define MSGPACK_PP_DEC_95 94
+# define MSGPACK_PP_DEC_96 95
+# define MSGPACK_PP_DEC_97 96
+# define MSGPACK_PP_DEC_98 97
+# define MSGPACK_PP_DEC_99 98
+# define MSGPACK_PP_DEC_100 99
+# define MSGPACK_PP_DEC_101 100
+# define MSGPACK_PP_DEC_102 101
+# define MSGPACK_PP_DEC_103 102
+# define MSGPACK_PP_DEC_104 103
+# define MSGPACK_PP_DEC_105 104
+# define MSGPACK_PP_DEC_106 105
+# define MSGPACK_PP_DEC_107 106
+# define MSGPACK_PP_DEC_108 107
+# define MSGPACK_PP_DEC_109 108
+# define MSGPACK_PP_DEC_110 109
+# define MSGPACK_PP_DEC_111 110
+# define MSGPACK_PP_DEC_112 111
+# define MSGPACK_PP_DEC_113 112
+# define MSGPACK_PP_DEC_114 113
+# define MSGPACK_PP_DEC_115 114
+# define MSGPACK_PP_DEC_116 115
+# define MSGPACK_PP_DEC_117 116
+# define MSGPACK_PP_DEC_118 117
+# define MSGPACK_PP_DEC_119 118
+# define MSGPACK_PP_DEC_120 119
+# define MSGPACK_PP_DEC_121 120
+# define MSGPACK_PP_DEC_122 121
+# define MSGPACK_PP_DEC_123 122
+# define MSGPACK_PP_DEC_124 123
+# define MSGPACK_PP_DEC_125 124
+# define MSGPACK_PP_DEC_126 125
+# define MSGPACK_PP_DEC_127 126
+# define MSGPACK_PP_DEC_128 127
+# define MSGPACK_PP_DEC_129 128
+# define MSGPACK_PP_DEC_130 129
+# define MSGPACK_PP_DEC_131 130
+# define MSGPACK_PP_DEC_132 131
+# define MSGPACK_PP_DEC_133 132
+# define MSGPACK_PP_DEC_134 133
+# define MSGPACK_PP_DEC_135 134
+# define MSGPACK_PP_DEC_136 135
+# define MSGPACK_PP_DEC_137 136
+# define MSGPACK_PP_DEC_138 137
+# define MSGPACK_PP_DEC_139 138
+# define MSGPACK_PP_DEC_140 139
+# define MSGPACK_PP_DEC_141 140
+# define MSGPACK_PP_DEC_142 141
+# define MSGPACK_PP_DEC_143 142
+# define MSGPACK_PP_DEC_144 143
+# define MSGPACK_PP_DEC_145 144
+# define MSGPACK_PP_DEC_146 145
+# define MSGPACK_PP_DEC_147 146
+# define MSGPACK_PP_DEC_148 147
+# define MSGPACK_PP_DEC_149 148
+# define MSGPACK_PP_DEC_150 149
+# define MSGPACK_PP_DEC_151 150
+# define MSGPACK_PP_DEC_152 151
+# define MSGPACK_PP_DEC_153 152
+# define MSGPACK_PP_DEC_154 153
+# define MSGPACK_PP_DEC_155 154
+# define MSGPACK_PP_DEC_156 155
+# define MSGPACK_PP_DEC_157 156
+# define MSGPACK_PP_DEC_158 157
+# define MSGPACK_PP_DEC_159 158
+# define MSGPACK_PP_DEC_160 159
+# define MSGPACK_PP_DEC_161 160
+# define MSGPACK_PP_DEC_162 161
+# define MSGPACK_PP_DEC_163 162
+# define MSGPACK_PP_DEC_164 163
+# define MSGPACK_PP_DEC_165 164
+# define MSGPACK_PP_DEC_166 165
+# define MSGPACK_PP_DEC_167 166
+# define MSGPACK_PP_DEC_168 167
+# define MSGPACK_PP_DEC_169 168
+# define MSGPACK_PP_DEC_170 169
+# define MSGPACK_PP_DEC_171 170
+# define MSGPACK_PP_DEC_172 171
+# define MSGPACK_PP_DEC_173 172
+# define MSGPACK_PP_DEC_174 173
+# define MSGPACK_PP_DEC_175 174
+# define MSGPACK_PP_DEC_176 175
+# define MSGPACK_PP_DEC_177 176
+# define MSGPACK_PP_DEC_178 177
+# define MSGPACK_PP_DEC_179 178
+# define MSGPACK_PP_DEC_180 179
+# define MSGPACK_PP_DEC_181 180
+# define MSGPACK_PP_DEC_182 181
+# define MSGPACK_PP_DEC_183 182
+# define MSGPACK_PP_DEC_184 183
+# define MSGPACK_PP_DEC_185 184
+# define MSGPACK_PP_DEC_186 185
+# define MSGPACK_PP_DEC_187 186
+# define MSGPACK_PP_DEC_188 187
+# define MSGPACK_PP_DEC_189 188
+# define MSGPACK_PP_DEC_190 189
+# define MSGPACK_PP_DEC_191 190
+# define MSGPACK_PP_DEC_192 191
+# define MSGPACK_PP_DEC_193 192
+# define MSGPACK_PP_DEC_194 193
+# define MSGPACK_PP_DEC_195 194
+# define MSGPACK_PP_DEC_196 195
+# define MSGPACK_PP_DEC_197 196
+# define MSGPACK_PP_DEC_198 197
+# define MSGPACK_PP_DEC_199 198
+# define MSGPACK_PP_DEC_200 199
+# define MSGPACK_PP_DEC_201 200
+# define MSGPACK_PP_DEC_202 201
+# define MSGPACK_PP_DEC_203 202
+# define MSGPACK_PP_DEC_204 203
+# define MSGPACK_PP_DEC_205 204
+# define MSGPACK_PP_DEC_206 205
+# define MSGPACK_PP_DEC_207 206
+# define MSGPACK_PP_DEC_208 207
+# define MSGPACK_PP_DEC_209 208
+# define MSGPACK_PP_DEC_210 209
+# define MSGPACK_PP_DEC_211 210
+# define MSGPACK_PP_DEC_212 211
+# define MSGPACK_PP_DEC_213 212
+# define MSGPACK_PP_DEC_214 213
+# define MSGPACK_PP_DEC_215 214
+# define MSGPACK_PP_DEC_216 215
+# define MSGPACK_PP_DEC_217 216
+# define MSGPACK_PP_DEC_218 217
+# define MSGPACK_PP_DEC_219 218
+# define MSGPACK_PP_DEC_220 219
+# define MSGPACK_PP_DEC_221 220
+# define MSGPACK_PP_DEC_222 221
+# define MSGPACK_PP_DEC_223 222
+# define MSGPACK_PP_DEC_224 223
+# define MSGPACK_PP_DEC_225 224
+# define MSGPACK_PP_DEC_226 225
+# define MSGPACK_PP_DEC_227 226
+# define MSGPACK_PP_DEC_228 227
+# define MSGPACK_PP_DEC_229 228
+# define MSGPACK_PP_DEC_230 229
+# define MSGPACK_PP_DEC_231 230
+# define MSGPACK_PP_DEC_232 231
+# define MSGPACK_PP_DEC_233 232
+# define MSGPACK_PP_DEC_234 233
+# define MSGPACK_PP_DEC_235 234
+# define MSGPACK_PP_DEC_236 235
+# define MSGPACK_PP_DEC_237 236
+# define MSGPACK_PP_DEC_238 237
+# define MSGPACK_PP_DEC_239 238
+# define MSGPACK_PP_DEC_240 239
+# define MSGPACK_PP_DEC_241 240
+# define MSGPACK_PP_DEC_242 241
+# define MSGPACK_PP_DEC_243 242
+# define MSGPACK_PP_DEC_244 243
+# define MSGPACK_PP_DEC_245 244
+# define MSGPACK_PP_DEC_246 245
+# define MSGPACK_PP_DEC_247 246
+# define MSGPACK_PP_DEC_248 247
+# define MSGPACK_PP_DEC_249 248
+# define MSGPACK_PP_DEC_250 249
+# define MSGPACK_PP_DEC_251 250
+# define MSGPACK_PP_DEC_252 251
+# define MSGPACK_PP_DEC_253 252
+# define MSGPACK_PP_DEC_254 253
+# define MSGPACK_PP_DEC_255 254
+# define MSGPACK_PP_DEC_256 255
+# define MSGPACK_PP_DEC_257 256
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/arithmetic/detail/div_base.hpp b/third_party/msgpack/include/msgpack/preprocessor/arithmetic/detail/div_base.hpp
new file mode 100644
index 0000000000..7c5e2fc776
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/arithmetic/detail/div_base.hpp
@@ -0,0 +1,61 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ARITHMETIC_DETAIL_DIV_BASE_HPP
+# define MSGPACK_PREPROCESSOR_ARITHMETIC_DETAIL_DIV_BASE_HPP
+#
+# include <msgpack/preprocessor/arithmetic/inc.hpp>
+# include <msgpack/preprocessor/arithmetic/sub.hpp>
+# include <msgpack/preprocessor/comparison/less_equal.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/control/while.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+# include <msgpack/preprocessor/tuple/rem.hpp>
+#
+# /* MSGPACK_PP_DIV_BASE */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_DIV_BASE(x, y) MSGPACK_PP_WHILE(MSGPACK_PP_DIV_BASE_P, MSGPACK_PP_DIV_BASE_O, (0, x, y))
+# else
+# define MSGPACK_PP_DIV_BASE(x, y) MSGPACK_PP_DIV_BASE_I(x, y)
+# define MSGPACK_PP_DIV_BASE_I(x, y) MSGPACK_PP_WHILE(MSGPACK_PP_DIV_BASE_P, MSGPACK_PP_DIV_BASE_O, (0, x, y))
+# endif
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_STRICT()
+# define MSGPACK_PP_DIV_BASE_P(d, rxy) MSGPACK_PP_DIV_BASE_P_IM(d, MSGPACK_PP_TUPLE_REM_3 rxy)
+# define MSGPACK_PP_DIV_BASE_P_IM(d, im) MSGPACK_PP_DIV_BASE_P_I(d, im)
+# else
+# define MSGPACK_PP_DIV_BASE_P(d, rxy) MSGPACK_PP_DIV_BASE_P_I(d, MSGPACK_PP_TUPLE_ELEM(3, 0, rxy), MSGPACK_PP_TUPLE_ELEM(3, 1, rxy), MSGPACK_PP_TUPLE_ELEM(3, 2, rxy))
+# endif
+#
+# define MSGPACK_PP_DIV_BASE_P_I(d, r, x, y) MSGPACK_PP_LESS_EQUAL_D(d, y, x)
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_STRICT()
+# define MSGPACK_PP_DIV_BASE_O(d, rxy) MSGPACK_PP_DIV_BASE_O_IM(d, MSGPACK_PP_TUPLE_REM_3 rxy)
+# define MSGPACK_PP_DIV_BASE_O_IM(d, im) MSGPACK_PP_DIV_BASE_O_I(d, im)
+# else
+# define MSGPACK_PP_DIV_BASE_O(d, rxy) MSGPACK_PP_DIV_BASE_O_I(d, MSGPACK_PP_TUPLE_ELEM(3, 0, rxy), MSGPACK_PP_TUPLE_ELEM(3, 1, rxy), MSGPACK_PP_TUPLE_ELEM(3, 2, rxy))
+# endif
+#
+# define MSGPACK_PP_DIV_BASE_O_I(d, r, x, y) (MSGPACK_PP_INC(r), MSGPACK_PP_SUB_D(d, x, y), y)
+#
+# /* MSGPACK_PP_DIV_BASE_D */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_DIV_BASE_D(d, x, y) MSGPACK_PP_WHILE_ ## d(MSGPACK_PP_DIV_BASE_P, MSGPACK_PP_DIV_BASE_O, (0, x, y))
+# else
+# define MSGPACK_PP_DIV_BASE_D(d, x, y) MSGPACK_PP_DIV_BASE_D_I(d, x, y)
+# define MSGPACK_PP_DIV_BASE_D_I(d, x, y) MSGPACK_PP_WHILE_ ## d(MSGPACK_PP_DIV_BASE_P, MSGPACK_PP_DIV_BASE_O, (0, x, y))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/arithmetic/div.hpp b/third_party/msgpack/include/msgpack/preprocessor/arithmetic/div.hpp
new file mode 100644
index 0000000000..1b993c2233
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/arithmetic/div.hpp
@@ -0,0 +1,39 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ARITHMETIC_DIV_HPP
+# define MSGPACK_PREPROCESSOR_ARITHMETIC_DIV_HPP
+#
+# include <msgpack/preprocessor/arithmetic/detail/div_base.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+#
+# /* MSGPACK_PP_DIV */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_DIV(x, y) MSGPACK_PP_TUPLE_ELEM(3, 0, MSGPACK_PP_DIV_BASE(x, y))
+# else
+# define MSGPACK_PP_DIV(x, y) MSGPACK_PP_DIV_I(x, y)
+# define MSGPACK_PP_DIV_I(x, y) MSGPACK_PP_TUPLE_ELEM(3, 0, MSGPACK_PP_DIV_BASE(x, y))
+# endif
+#
+# /* MSGPACK_PP_DIV_D */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_DIV_D(d, x, y) MSGPACK_PP_TUPLE_ELEM(3, 0, MSGPACK_PP_DIV_BASE_D(d, x, y))
+# else
+# define MSGPACK_PP_DIV_D(d, x, y) MSGPACK_PP_DIV_D_I(d, x, y)
+# define MSGPACK_PP_DIV_D_I(d, x, y) MSGPACK_PP_TUPLE_ELEM(3, 0, MSGPACK_PP_DIV_BASE_D(d, x, y))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/arithmetic/inc.hpp b/third_party/msgpack/include/msgpack/preprocessor/arithmetic/inc.hpp
new file mode 100644
index 0000000000..0eb6e17708
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/arithmetic/inc.hpp
@@ -0,0 +1,288 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ARITHMETIC_INC_HPP
+# define MSGPACK_PREPROCESSOR_ARITHMETIC_INC_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# /* MSGPACK_PP_INC */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_INC(x) MSGPACK_PP_INC_I(x)
+# else
+# define MSGPACK_PP_INC(x) MSGPACK_PP_INC_OO((x))
+# define MSGPACK_PP_INC_OO(par) MSGPACK_PP_INC_I ## par
+# endif
+#
+# define MSGPACK_PP_INC_I(x) MSGPACK_PP_INC_ ## x
+#
+# define MSGPACK_PP_INC_0 1
+# define MSGPACK_PP_INC_1 2
+# define MSGPACK_PP_INC_2 3
+# define MSGPACK_PP_INC_3 4
+# define MSGPACK_PP_INC_4 5
+# define MSGPACK_PP_INC_5 6
+# define MSGPACK_PP_INC_6 7
+# define MSGPACK_PP_INC_7 8
+# define MSGPACK_PP_INC_8 9
+# define MSGPACK_PP_INC_9 10
+# define MSGPACK_PP_INC_10 11
+# define MSGPACK_PP_INC_11 12
+# define MSGPACK_PP_INC_12 13
+# define MSGPACK_PP_INC_13 14
+# define MSGPACK_PP_INC_14 15
+# define MSGPACK_PP_INC_15 16
+# define MSGPACK_PP_INC_16 17
+# define MSGPACK_PP_INC_17 18
+# define MSGPACK_PP_INC_18 19
+# define MSGPACK_PP_INC_19 20
+# define MSGPACK_PP_INC_20 21
+# define MSGPACK_PP_INC_21 22
+# define MSGPACK_PP_INC_22 23
+# define MSGPACK_PP_INC_23 24
+# define MSGPACK_PP_INC_24 25
+# define MSGPACK_PP_INC_25 26
+# define MSGPACK_PP_INC_26 27
+# define MSGPACK_PP_INC_27 28
+# define MSGPACK_PP_INC_28 29
+# define MSGPACK_PP_INC_29 30
+# define MSGPACK_PP_INC_30 31
+# define MSGPACK_PP_INC_31 32
+# define MSGPACK_PP_INC_32 33
+# define MSGPACK_PP_INC_33 34
+# define MSGPACK_PP_INC_34 35
+# define MSGPACK_PP_INC_35 36
+# define MSGPACK_PP_INC_36 37
+# define MSGPACK_PP_INC_37 38
+# define MSGPACK_PP_INC_38 39
+# define MSGPACK_PP_INC_39 40
+# define MSGPACK_PP_INC_40 41
+# define MSGPACK_PP_INC_41 42
+# define MSGPACK_PP_INC_42 43
+# define MSGPACK_PP_INC_43 44
+# define MSGPACK_PP_INC_44 45
+# define MSGPACK_PP_INC_45 46
+# define MSGPACK_PP_INC_46 47
+# define MSGPACK_PP_INC_47 48
+# define MSGPACK_PP_INC_48 49
+# define MSGPACK_PP_INC_49 50
+# define MSGPACK_PP_INC_50 51
+# define MSGPACK_PP_INC_51 52
+# define MSGPACK_PP_INC_52 53
+# define MSGPACK_PP_INC_53 54
+# define MSGPACK_PP_INC_54 55
+# define MSGPACK_PP_INC_55 56
+# define MSGPACK_PP_INC_56 57
+# define MSGPACK_PP_INC_57 58
+# define MSGPACK_PP_INC_58 59
+# define MSGPACK_PP_INC_59 60
+# define MSGPACK_PP_INC_60 61
+# define MSGPACK_PP_INC_61 62
+# define MSGPACK_PP_INC_62 63
+# define MSGPACK_PP_INC_63 64
+# define MSGPACK_PP_INC_64 65
+# define MSGPACK_PP_INC_65 66
+# define MSGPACK_PP_INC_66 67
+# define MSGPACK_PP_INC_67 68
+# define MSGPACK_PP_INC_68 69
+# define MSGPACK_PP_INC_69 70
+# define MSGPACK_PP_INC_70 71
+# define MSGPACK_PP_INC_71 72
+# define MSGPACK_PP_INC_72 73
+# define MSGPACK_PP_INC_73 74
+# define MSGPACK_PP_INC_74 75
+# define MSGPACK_PP_INC_75 76
+# define MSGPACK_PP_INC_76 77
+# define MSGPACK_PP_INC_77 78
+# define MSGPACK_PP_INC_78 79
+# define MSGPACK_PP_INC_79 80
+# define MSGPACK_PP_INC_80 81
+# define MSGPACK_PP_INC_81 82
+# define MSGPACK_PP_INC_82 83
+# define MSGPACK_PP_INC_83 84
+# define MSGPACK_PP_INC_84 85
+# define MSGPACK_PP_INC_85 86
+# define MSGPACK_PP_INC_86 87
+# define MSGPACK_PP_INC_87 88
+# define MSGPACK_PP_INC_88 89
+# define MSGPACK_PP_INC_89 90
+# define MSGPACK_PP_INC_90 91
+# define MSGPACK_PP_INC_91 92
+# define MSGPACK_PP_INC_92 93
+# define MSGPACK_PP_INC_93 94
+# define MSGPACK_PP_INC_94 95
+# define MSGPACK_PP_INC_95 96
+# define MSGPACK_PP_INC_96 97
+# define MSGPACK_PP_INC_97 98
+# define MSGPACK_PP_INC_98 99
+# define MSGPACK_PP_INC_99 100
+# define MSGPACK_PP_INC_100 101
+# define MSGPACK_PP_INC_101 102
+# define MSGPACK_PP_INC_102 103
+# define MSGPACK_PP_INC_103 104
+# define MSGPACK_PP_INC_104 105
+# define MSGPACK_PP_INC_105 106
+# define MSGPACK_PP_INC_106 107
+# define MSGPACK_PP_INC_107 108
+# define MSGPACK_PP_INC_108 109
+# define MSGPACK_PP_INC_109 110
+# define MSGPACK_PP_INC_110 111
+# define MSGPACK_PP_INC_111 112
+# define MSGPACK_PP_INC_112 113
+# define MSGPACK_PP_INC_113 114
+# define MSGPACK_PP_INC_114 115
+# define MSGPACK_PP_INC_115 116
+# define MSGPACK_PP_INC_116 117
+# define MSGPACK_PP_INC_117 118
+# define MSGPACK_PP_INC_118 119
+# define MSGPACK_PP_INC_119 120
+# define MSGPACK_PP_INC_120 121
+# define MSGPACK_PP_INC_121 122
+# define MSGPACK_PP_INC_122 123
+# define MSGPACK_PP_INC_123 124
+# define MSGPACK_PP_INC_124 125
+# define MSGPACK_PP_INC_125 126
+# define MSGPACK_PP_INC_126 127
+# define MSGPACK_PP_INC_127 128
+# define MSGPACK_PP_INC_128 129
+# define MSGPACK_PP_INC_129 130
+# define MSGPACK_PP_INC_130 131
+# define MSGPACK_PP_INC_131 132
+# define MSGPACK_PP_INC_132 133
+# define MSGPACK_PP_INC_133 134
+# define MSGPACK_PP_INC_134 135
+# define MSGPACK_PP_INC_135 136
+# define MSGPACK_PP_INC_136 137
+# define MSGPACK_PP_INC_137 138
+# define MSGPACK_PP_INC_138 139
+# define MSGPACK_PP_INC_139 140
+# define MSGPACK_PP_INC_140 141
+# define MSGPACK_PP_INC_141 142
+# define MSGPACK_PP_INC_142 143
+# define MSGPACK_PP_INC_143 144
+# define MSGPACK_PP_INC_144 145
+# define MSGPACK_PP_INC_145 146
+# define MSGPACK_PP_INC_146 147
+# define MSGPACK_PP_INC_147 148
+# define MSGPACK_PP_INC_148 149
+# define MSGPACK_PP_INC_149 150
+# define MSGPACK_PP_INC_150 151
+# define MSGPACK_PP_INC_151 152
+# define MSGPACK_PP_INC_152 153
+# define MSGPACK_PP_INC_153 154
+# define MSGPACK_PP_INC_154 155
+# define MSGPACK_PP_INC_155 156
+# define MSGPACK_PP_INC_156 157
+# define MSGPACK_PP_INC_157 158
+# define MSGPACK_PP_INC_158 159
+# define MSGPACK_PP_INC_159 160
+# define MSGPACK_PP_INC_160 161
+# define MSGPACK_PP_INC_161 162
+# define MSGPACK_PP_INC_162 163
+# define MSGPACK_PP_INC_163 164
+# define MSGPACK_PP_INC_164 165
+# define MSGPACK_PP_INC_165 166
+# define MSGPACK_PP_INC_166 167
+# define MSGPACK_PP_INC_167 168
+# define MSGPACK_PP_INC_168 169
+# define MSGPACK_PP_INC_169 170
+# define MSGPACK_PP_INC_170 171
+# define MSGPACK_PP_INC_171 172
+# define MSGPACK_PP_INC_172 173
+# define MSGPACK_PP_INC_173 174
+# define MSGPACK_PP_INC_174 175
+# define MSGPACK_PP_INC_175 176
+# define MSGPACK_PP_INC_176 177
+# define MSGPACK_PP_INC_177 178
+# define MSGPACK_PP_INC_178 179
+# define MSGPACK_PP_INC_179 180
+# define MSGPACK_PP_INC_180 181
+# define MSGPACK_PP_INC_181 182
+# define MSGPACK_PP_INC_182 183
+# define MSGPACK_PP_INC_183 184
+# define MSGPACK_PP_INC_184 185
+# define MSGPACK_PP_INC_185 186
+# define MSGPACK_PP_INC_186 187
+# define MSGPACK_PP_INC_187 188
+# define MSGPACK_PP_INC_188 189
+# define MSGPACK_PP_INC_189 190
+# define MSGPACK_PP_INC_190 191
+# define MSGPACK_PP_INC_191 192
+# define MSGPACK_PP_INC_192 193
+# define MSGPACK_PP_INC_193 194
+# define MSGPACK_PP_INC_194 195
+# define MSGPACK_PP_INC_195 196
+# define MSGPACK_PP_INC_196 197
+# define MSGPACK_PP_INC_197 198
+# define MSGPACK_PP_INC_198 199
+# define MSGPACK_PP_INC_199 200
+# define MSGPACK_PP_INC_200 201
+# define MSGPACK_PP_INC_201 202
+# define MSGPACK_PP_INC_202 203
+# define MSGPACK_PP_INC_203 204
+# define MSGPACK_PP_INC_204 205
+# define MSGPACK_PP_INC_205 206
+# define MSGPACK_PP_INC_206 207
+# define MSGPACK_PP_INC_207 208
+# define MSGPACK_PP_INC_208 209
+# define MSGPACK_PP_INC_209 210
+# define MSGPACK_PP_INC_210 211
+# define MSGPACK_PP_INC_211 212
+# define MSGPACK_PP_INC_212 213
+# define MSGPACK_PP_INC_213 214
+# define MSGPACK_PP_INC_214 215
+# define MSGPACK_PP_INC_215 216
+# define MSGPACK_PP_INC_216 217
+# define MSGPACK_PP_INC_217 218
+# define MSGPACK_PP_INC_218 219
+# define MSGPACK_PP_INC_219 220
+# define MSGPACK_PP_INC_220 221
+# define MSGPACK_PP_INC_221 222
+# define MSGPACK_PP_INC_222 223
+# define MSGPACK_PP_INC_223 224
+# define MSGPACK_PP_INC_224 225
+# define MSGPACK_PP_INC_225 226
+# define MSGPACK_PP_INC_226 227
+# define MSGPACK_PP_INC_227 228
+# define MSGPACK_PP_INC_228 229
+# define MSGPACK_PP_INC_229 230
+# define MSGPACK_PP_INC_230 231
+# define MSGPACK_PP_INC_231 232
+# define MSGPACK_PP_INC_232 233
+# define MSGPACK_PP_INC_233 234
+# define MSGPACK_PP_INC_234 235
+# define MSGPACK_PP_INC_235 236
+# define MSGPACK_PP_INC_236 237
+# define MSGPACK_PP_INC_237 238
+# define MSGPACK_PP_INC_238 239
+# define MSGPACK_PP_INC_239 240
+# define MSGPACK_PP_INC_240 241
+# define MSGPACK_PP_INC_241 242
+# define MSGPACK_PP_INC_242 243
+# define MSGPACK_PP_INC_243 244
+# define MSGPACK_PP_INC_244 245
+# define MSGPACK_PP_INC_245 246
+# define MSGPACK_PP_INC_246 247
+# define MSGPACK_PP_INC_247 248
+# define MSGPACK_PP_INC_248 249
+# define MSGPACK_PP_INC_249 250
+# define MSGPACK_PP_INC_250 251
+# define MSGPACK_PP_INC_251 252
+# define MSGPACK_PP_INC_252 253
+# define MSGPACK_PP_INC_253 254
+# define MSGPACK_PP_INC_254 255
+# define MSGPACK_PP_INC_255 256
+# define MSGPACK_PP_INC_256 256
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/arithmetic/mod.hpp b/third_party/msgpack/include/msgpack/preprocessor/arithmetic/mod.hpp
new file mode 100644
index 0000000000..521c4032b5
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/arithmetic/mod.hpp
@@ -0,0 +1,39 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ARITHMETIC_MOD_HPP
+# define MSGPACK_PREPROCESSOR_ARITHMETIC_MOD_HPP
+#
+# include <msgpack/preprocessor/arithmetic/detail/div_base.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+#
+# /* MSGPACK_PP_MOD */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_MOD(x, y) MSGPACK_PP_TUPLE_ELEM(3, 1, MSGPACK_PP_DIV_BASE(x, y))
+# else
+# define MSGPACK_PP_MOD(x, y) MSGPACK_PP_MOD_I(x, y)
+# define MSGPACK_PP_MOD_I(x, y) MSGPACK_PP_TUPLE_ELEM(3, 1, MSGPACK_PP_DIV_BASE(x, y))
+# endif
+#
+# /* MSGPACK_PP_MOD_D */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_MOD_D(d, x, y) MSGPACK_PP_TUPLE_ELEM(3, 1, MSGPACK_PP_DIV_BASE_D(d, x, y))
+# else
+# define MSGPACK_PP_MOD_D(d, x, y) MSGPACK_PP_MOD_D_I(d, x, y)
+# define MSGPACK_PP_MOD_D_I(d, x, y) MSGPACK_PP_TUPLE_ELEM(3, 1, MSGPACK_PP_DIV_BASE_D(d, x, y))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/arithmetic/mul.hpp b/third_party/msgpack/include/msgpack/preprocessor/arithmetic/mul.hpp
new file mode 100644
index 0000000000..6e5ffabef9
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/arithmetic/mul.hpp
@@ -0,0 +1,53 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ARITHMETIC_MUL_HPP
+# define MSGPACK_PREPROCESSOR_ARITHMETIC_MUL_HPP
+#
+# include <msgpack/preprocessor/arithmetic/add.hpp>
+# include <msgpack/preprocessor/arithmetic/dec.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/control/while.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+# include <msgpack/preprocessor/tuple/rem.hpp>
+#
+# /* MSGPACK_PP_MUL */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_MUL(x, y) MSGPACK_PP_TUPLE_ELEM(3, 0, MSGPACK_PP_WHILE(MSGPACK_PP_MUL_P, MSGPACK_PP_MUL_O, (0, x, y)))
+# else
+# define MSGPACK_PP_MUL(x, y) MSGPACK_PP_MUL_I(x, y)
+# define MSGPACK_PP_MUL_I(x, y) MSGPACK_PP_TUPLE_ELEM(3, 0, MSGPACK_PP_WHILE(MSGPACK_PP_MUL_P, MSGPACK_PP_MUL_O, (0, x, y)))
+# endif
+#
+# define MSGPACK_PP_MUL_P(d, rxy) MSGPACK_PP_TUPLE_ELEM(3, 2, rxy)
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_STRICT()
+# define MSGPACK_PP_MUL_O(d, rxy) MSGPACK_PP_MUL_O_IM(d, MSGPACK_PP_TUPLE_REM_3 rxy)
+# define MSGPACK_PP_MUL_O_IM(d, im) MSGPACK_PP_MUL_O_I(d, im)
+# else
+# define MSGPACK_PP_MUL_O(d, rxy) MSGPACK_PP_MUL_O_I(d, MSGPACK_PP_TUPLE_ELEM(3, 0, rxy), MSGPACK_PP_TUPLE_ELEM(3, 1, rxy), MSGPACK_PP_TUPLE_ELEM(3, 2, rxy))
+# endif
+#
+# define MSGPACK_PP_MUL_O_I(d, r, x, y) (MSGPACK_PP_ADD_D(d, r, x), x, MSGPACK_PP_DEC(y))
+#
+# /* MSGPACK_PP_MUL_D */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_MUL_D(d, x, y) MSGPACK_PP_TUPLE_ELEM(3, 0, MSGPACK_PP_WHILE_ ## d(MSGPACK_PP_MUL_P, MSGPACK_PP_MUL_O, (0, x, y)))
+# else
+# define MSGPACK_PP_MUL_D(d, x, y) MSGPACK_PP_MUL_D_I(d, x, y)
+# define MSGPACK_PP_MUL_D_I(d, x, y) MSGPACK_PP_TUPLE_ELEM(3, 0, MSGPACK_PP_WHILE_ ## d(MSGPACK_PP_MUL_P, MSGPACK_PP_MUL_O, (0, x, y)))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/arithmetic/sub.hpp b/third_party/msgpack/include/msgpack/preprocessor/arithmetic/sub.hpp
new file mode 100644
index 0000000000..3cd283e009
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/arithmetic/sub.hpp
@@ -0,0 +1,50 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ARITHMETIC_SUB_HPP
+# define MSGPACK_PREPROCESSOR_ARITHMETIC_SUB_HPP
+#
+# include <msgpack/preprocessor/arithmetic/dec.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/control/while.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+#
+# /* MSGPACK_PP_SUB */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_SUB(x, y) MSGPACK_PP_TUPLE_ELEM(2, 0, MSGPACK_PP_WHILE(MSGPACK_PP_SUB_P, MSGPACK_PP_SUB_O, (x, y)))
+# else
+# define MSGPACK_PP_SUB(x, y) MSGPACK_PP_SUB_I(x, y)
+# define MSGPACK_PP_SUB_I(x, y) MSGPACK_PP_TUPLE_ELEM(2, 0, MSGPACK_PP_WHILE(MSGPACK_PP_SUB_P, MSGPACK_PP_SUB_O, (x, y)))
+# endif
+#
+# define MSGPACK_PP_SUB_P(d, xy) MSGPACK_PP_TUPLE_ELEM(2, 1, xy)
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_SUB_O(d, xy) MSGPACK_PP_SUB_O_I xy
+# else
+# define MSGPACK_PP_SUB_O(d, xy) MSGPACK_PP_SUB_O_I(MSGPACK_PP_TUPLE_ELEM(2, 0, xy), MSGPACK_PP_TUPLE_ELEM(2, 1, xy))
+# endif
+#
+# define MSGPACK_PP_SUB_O_I(x, y) (MSGPACK_PP_DEC(x), MSGPACK_PP_DEC(y))
+#
+# /* MSGPACK_PP_SUB_D */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_SUB_D(d, x, y) MSGPACK_PP_TUPLE_ELEM(2, 0, MSGPACK_PP_WHILE_ ## d(MSGPACK_PP_SUB_P, MSGPACK_PP_SUB_O, (x, y)))
+# else
+# define MSGPACK_PP_SUB_D(d, x, y) MSGPACK_PP_SUB_D_I(d, x, y)
+# define MSGPACK_PP_SUB_D_I(d, x, y) MSGPACK_PP_TUPLE_ELEM(2, 0, MSGPACK_PP_WHILE_ ## d(MSGPACK_PP_SUB_P, MSGPACK_PP_SUB_O, (x, y)))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/array.hpp b/third_party/msgpack/include/msgpack/preprocessor/array.hpp
new file mode 100644
index 0000000000..7ac42dcd50
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/array.hpp
@@ -0,0 +1,32 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002-2011. *
+# * (C) Copyright Edward Diener 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ARRAY_HPP
+# define MSGPACK_PREPROCESSOR_ARRAY_HPP
+#
+# include <msgpack/preprocessor/array/data.hpp>
+# include <msgpack/preprocessor/array/elem.hpp>
+# include <msgpack/preprocessor/array/enum.hpp>
+# include <msgpack/preprocessor/array/insert.hpp>
+# include <msgpack/preprocessor/array/pop_back.hpp>
+# include <msgpack/preprocessor/array/pop_front.hpp>
+# include <msgpack/preprocessor/array/push_back.hpp>
+# include <msgpack/preprocessor/array/push_front.hpp>
+# include <msgpack/preprocessor/array/remove.hpp>
+# include <msgpack/preprocessor/array/replace.hpp>
+# include <msgpack/preprocessor/array/reverse.hpp>
+# include <msgpack/preprocessor/array/size.hpp>
+# include <msgpack/preprocessor/array/to_list.hpp>
+# include <msgpack/preprocessor/array/to_seq.hpp>
+# include <msgpack/preprocessor/array/to_tuple.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/array/data.hpp b/third_party/msgpack/include/msgpack/preprocessor/array/data.hpp
new file mode 100644
index 0000000000..22a9264873
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/array/data.hpp
@@ -0,0 +1,28 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ARRAY_DATA_HPP
+# define MSGPACK_PREPROCESSOR_ARRAY_DATA_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+#
+# /* MSGPACK_PP_ARRAY_DATA */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_ARRAY_DATA(array) MSGPACK_PP_TUPLE_ELEM(2, 1, array)
+# else
+# define MSGPACK_PP_ARRAY_DATA(array) MSGPACK_PP_ARRAY_DATA_I(array)
+# define MSGPACK_PP_ARRAY_DATA_I(array) MSGPACK_PP_ARRAY_DATA_II array
+# define MSGPACK_PP_ARRAY_DATA_II(size, data) data
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/array/detail/get_data.hpp b/third_party/msgpack/include/msgpack/preprocessor/array/detail/get_data.hpp
new file mode 100644
index 0000000000..5dcce7544c
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/array/detail/get_data.hpp
@@ -0,0 +1,55 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2014. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ARRAY_DETAIL_GET_DATA_HPP
+# define MSGPACK_PREPROCESSOR_ARRAY_DETAIL_GET_DATA_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/tuple/rem.hpp>
+# include <msgpack/preprocessor/control/if.hpp>
+# include <msgpack/preprocessor/control/iif.hpp>
+# include <msgpack/preprocessor/facilities/is_1.hpp>
+#
+# /* MSGPACK_PP_ARRAY_DETAIL_GET_DATA */
+#
+# define MSGPACK_PP_ARRAY_DETAIL_GET_DATA_NONE(size, data)
+
+# if MSGPACK_PP_VARIADICS && !(MSGPACK_PP_VARIADICS_MSVC && _MSC_VER <= 1400)
+# if MSGPACK_PP_VARIADICS_MSVC
+# define MSGPACK_PP_ARRAY_DETAIL_GET_DATA_ANY_VC_DEFAULT(size, data) MSGPACK_PP_TUPLE_REM(size) data
+# define MSGPACK_PP_ARRAY_DETAIL_GET_DATA_ANY_VC_CAT(size, data) MSGPACK_PP_TUPLE_REM_CAT(size) data
+# define MSGPACK_PP_ARRAY_DETAIL_GET_DATA_ANY(size, data) \
+ MSGPACK_PP_IIF \
+ ( \
+ MSGPACK_PP_IS_1(size), \
+ MSGPACK_PP_ARRAY_DETAIL_GET_DATA_ANY_VC_CAT, \
+ MSGPACK_PP_ARRAY_DETAIL_GET_DATA_ANY_VC_DEFAULT \
+ ) \
+ (size,data) \
+/**/
+# else
+# define MSGPACK_PP_ARRAY_DETAIL_GET_DATA_ANY(size, data) MSGPACK_PP_TUPLE_REM(size) data
+# endif
+# else
+# define MSGPACK_PP_ARRAY_DETAIL_GET_DATA_ANY(size, data) MSGPACK_PP_TUPLE_REM(size) data
+# endif
+
+# define MSGPACK_PP_ARRAY_DETAIL_GET_DATA(size, data) \
+ MSGPACK_PP_IF \
+ ( \
+ size, \
+ MSGPACK_PP_ARRAY_DETAIL_GET_DATA_ANY, \
+ MSGPACK_PP_ARRAY_DETAIL_GET_DATA_NONE \
+ ) \
+ (size,data) \
+/**/
+#
+# endif /* MSGPACK_PREPROCESSOR_ARRAY_DETAIL_GET_DATA_HPP */
diff --git a/third_party/msgpack/include/msgpack/preprocessor/array/elem.hpp b/third_party/msgpack/include/msgpack/preprocessor/array/elem.hpp
new file mode 100644
index 0000000000..0a85d7ef3c
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/array/elem.hpp
@@ -0,0 +1,29 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ARRAY_ELEM_HPP
+# define MSGPACK_PREPROCESSOR_ARRAY_ELEM_HPP
+#
+# include <msgpack/preprocessor/array/data.hpp>
+# include <msgpack/preprocessor/array/size.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+#
+# /* MSGPACK_PP_ARRAY_ELEM */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_ARRAY_ELEM(i, array) MSGPACK_PP_TUPLE_ELEM(MSGPACK_PP_ARRAY_SIZE(array), i, MSGPACK_PP_ARRAY_DATA(array))
+# else
+# define MSGPACK_PP_ARRAY_ELEM(i, array) MSGPACK_PP_ARRAY_ELEM_I(i, array)
+# define MSGPACK_PP_ARRAY_ELEM_I(i, array) MSGPACK_PP_TUPLE_ELEM(MSGPACK_PP_ARRAY_SIZE(array), i, MSGPACK_PP_ARRAY_DATA(array))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/array/enum.hpp b/third_party/msgpack/include/msgpack/preprocessor/array/enum.hpp
new file mode 100644
index 0000000000..056f44441f
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/array/enum.hpp
@@ -0,0 +1,33 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011. *
+# * (C) Copyright Paul Mensonides 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ARRAY_ENUM_HPP
+# define MSGPACK_PREPROCESSOR_ARRAY_ENUM_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/tuple/rem.hpp>
+#
+# /* MSGPACK_PP_ARRAY_ENUM */
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MSVC()
+# define MSGPACK_PP_ARRAY_ENUM(array) MSGPACK_PP_ARRAY_ENUM_I(MSGPACK_PP_TUPLE_REM_CTOR, array)
+# define MSGPACK_PP_ARRAY_ENUM_I(m, args) MSGPACK_PP_ARRAY_ENUM_II(m, args)
+# define MSGPACK_PP_ARRAY_ENUM_II(m, args) MSGPACK_PP_CAT(m ## args,)
+# elif MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_ARRAY_ENUM(array) MSGPACK_PP_ARRAY_ENUM_I(array)
+# define MSGPACK_PP_ARRAY_ENUM_I(array) MSGPACK_PP_TUPLE_REM_CTOR ## array
+# else
+# define MSGPACK_PP_ARRAY_ENUM(array) MSGPACK_PP_TUPLE_REM_CTOR array
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/array/insert.hpp b/third_party/msgpack/include/msgpack/preprocessor/array/insert.hpp
new file mode 100644
index 0000000000..b60006f061
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/array/insert.hpp
@@ -0,0 +1,55 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ARRAY_INSERT_HPP
+# define MSGPACK_PREPROCESSOR_ARRAY_INSERT_HPP
+#
+# include <msgpack/preprocessor/arithmetic/inc.hpp>
+# include <msgpack/preprocessor/array/elem.hpp>
+# include <msgpack/preprocessor/array/push_back.hpp>
+# include <msgpack/preprocessor/array/size.hpp>
+# include <msgpack/preprocessor/comparison/not_equal.hpp>
+# include <msgpack/preprocessor/control/deduce_d.hpp>
+# include <msgpack/preprocessor/control/iif.hpp>
+# include <msgpack/preprocessor/control/while.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+#
+# /* MSGPACK_PP_ARRAY_INSERT */
+#
+# define MSGPACK_PP_ARRAY_INSERT(array, i, elem) MSGPACK_PP_ARRAY_INSERT_I(MSGPACK_PP_DEDUCE_D(), array, i, elem)
+# define MSGPACK_PP_ARRAY_INSERT_I(d, array, i, elem) MSGPACK_PP_ARRAY_INSERT_D(d, array, i, elem)
+#
+# /* MSGPACK_PP_ARRAY_INSERT_D */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_ARRAY_INSERT_D(d, array, i, elem) MSGPACK_PP_TUPLE_ELEM(5, 3, MSGPACK_PP_WHILE_ ## d(MSGPACK_PP_ARRAY_INSERT_P, MSGPACK_PP_ARRAY_INSERT_O, (0, i, elem, (0, ()), array)))
+# else
+# define MSGPACK_PP_ARRAY_INSERT_D(d, array, i, elem) MSGPACK_PP_ARRAY_INSERT_D_I(d, array, i, elem)
+# define MSGPACK_PP_ARRAY_INSERT_D_I(d, array, i, elem) MSGPACK_PP_TUPLE_ELEM(5, 3, MSGPACK_PP_WHILE_ ## d(MSGPACK_PP_ARRAY_INSERT_P, MSGPACK_PP_ARRAY_INSERT_O, (0, i, elem, (0, ()), array)))
+# endif
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_STRICT()
+# define MSGPACK_PP_ARRAY_INSERT_P(d, state) MSGPACK_PP_ARRAY_INSERT_P_I state
+# else
+# define MSGPACK_PP_ARRAY_INSERT_P(d, state) MSGPACK_PP_ARRAY_INSERT_P_I(nil, nil, nil, MSGPACK_PP_TUPLE_ELEM(5, 3, state), MSGPACK_PP_TUPLE_ELEM(5, 4, state))
+# endif
+#
+# define MSGPACK_PP_ARRAY_INSERT_P_I(_i, _ii, _iii, res, arr) MSGPACK_PP_NOT_EQUAL(MSGPACK_PP_ARRAY_SIZE(res), MSGPACK_PP_INC(MSGPACK_PP_ARRAY_SIZE(arr)))
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_STRICT()
+# define MSGPACK_PP_ARRAY_INSERT_O(d, state) MSGPACK_PP_ARRAY_INSERT_O_I state
+# else
+# define MSGPACK_PP_ARRAY_INSERT_O(d, state) MSGPACK_PP_ARRAY_INSERT_O_I(MSGPACK_PP_TUPLE_ELEM(5, 0, state), MSGPACK_PP_TUPLE_ELEM(5, 1, state), MSGPACK_PP_TUPLE_ELEM(5, 2, state), MSGPACK_PP_TUPLE_ELEM(5, 3, state), MSGPACK_PP_TUPLE_ELEM(5, 4, state))
+# endif
+#
+# define MSGPACK_PP_ARRAY_INSERT_O_I(n, i, elem, res, arr) (MSGPACK_PP_IIF(MSGPACK_PP_NOT_EQUAL(MSGPACK_PP_ARRAY_SIZE(res), i), MSGPACK_PP_INC(n), n), i, elem, MSGPACK_PP_ARRAY_PUSH_BACK(res, MSGPACK_PP_IIF(MSGPACK_PP_NOT_EQUAL(MSGPACK_PP_ARRAY_SIZE(res), i), MSGPACK_PP_ARRAY_ELEM(n, arr), elem)), arr)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/array/pop_back.hpp b/third_party/msgpack/include/msgpack/preprocessor/array/pop_back.hpp
new file mode 100644
index 0000000000..5d1392f140
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/array/pop_back.hpp
@@ -0,0 +1,37 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ARRAY_POP_BACK_HPP
+# define MSGPACK_PREPROCESSOR_ARRAY_POP_BACK_HPP
+#
+# include <msgpack/preprocessor/arithmetic/dec.hpp>
+# include <msgpack/preprocessor/array/elem.hpp>
+# include <msgpack/preprocessor/array/size.hpp>
+# include <msgpack/preprocessor/repetition/enum.hpp>
+# include <msgpack/preprocessor/repetition/deduce_z.hpp>
+#
+# /* MSGPACK_PP_ARRAY_POP_BACK */
+#
+# define MSGPACK_PP_ARRAY_POP_BACK(array) MSGPACK_PP_ARRAY_POP_BACK_Z(MSGPACK_PP_DEDUCE_Z(), array)
+#
+# /* MSGPACK_PP_ARRAY_POP_BACK_Z */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_ARRAY_POP_BACK_Z(z, array) MSGPACK_PP_ARRAY_POP_BACK_I(z, MSGPACK_PP_ARRAY_SIZE(array), array)
+# else
+# define MSGPACK_PP_ARRAY_POP_BACK_Z(z, array) MSGPACK_PP_ARRAY_POP_BACK_Z_D(z, array)
+# define MSGPACK_PP_ARRAY_POP_BACK_Z_D(z, array) MSGPACK_PP_ARRAY_POP_BACK_I(z, MSGPACK_PP_ARRAY_SIZE(array), array)
+# endif
+#
+# define MSGPACK_PP_ARRAY_POP_BACK_I(z, size, array) (MSGPACK_PP_DEC(size), (MSGPACK_PP_ENUM_ ## z(MSGPACK_PP_DEC(size), MSGPACK_PP_ARRAY_POP_BACK_M, array)))
+# define MSGPACK_PP_ARRAY_POP_BACK_M(z, n, data) MSGPACK_PP_ARRAY_ELEM(n, data)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/array/pop_front.hpp b/third_party/msgpack/include/msgpack/preprocessor/array/pop_front.hpp
new file mode 100644
index 0000000000..5001504186
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/array/pop_front.hpp
@@ -0,0 +1,38 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ARRAY_POP_FRONT_HPP
+# define MSGPACK_PREPROCESSOR_ARRAY_POP_FRONT_HPP
+#
+# include <msgpack/preprocessor/arithmetic/dec.hpp>
+# include <msgpack/preprocessor/arithmetic/inc.hpp>
+# include <msgpack/preprocessor/array/elem.hpp>
+# include <msgpack/preprocessor/array/size.hpp>
+# include <msgpack/preprocessor/repetition/enum.hpp>
+# include <msgpack/preprocessor/repetition/deduce_z.hpp>
+#
+# /* MSGPACK_PP_ARRAY_POP_FRONT */
+#
+# define MSGPACK_PP_ARRAY_POP_FRONT(array) MSGPACK_PP_ARRAY_POP_FRONT_Z(MSGPACK_PP_DEDUCE_Z(), array)
+#
+# /* MSGPACK_PP_ARRAY_POP_FRONT_Z */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_ARRAY_POP_FRONT_Z(z, array) MSGPACK_PP_ARRAY_POP_FRONT_I(z, MSGPACK_PP_ARRAY_SIZE(array), array)
+# else
+# define MSGPACK_PP_ARRAY_POP_FRONT_Z(z, array) MSGPACK_PP_ARRAY_POP_FRONT_Z_D(z, array)
+# define MSGPACK_PP_ARRAY_POP_FRONT_Z_D(z, array) MSGPACK_PP_ARRAY_POP_FRONT_I(z, MSGPACK_PP_ARRAY_SIZE(array), array)
+# endif
+#
+# define MSGPACK_PP_ARRAY_POP_FRONT_I(z, size, array) (MSGPACK_PP_DEC(size), (MSGPACK_PP_ENUM_ ## z(MSGPACK_PP_DEC(size), MSGPACK_PP_ARRAY_POP_FRONT_M, array)))
+# define MSGPACK_PP_ARRAY_POP_FRONT_M(z, n, data) MSGPACK_PP_ARRAY_ELEM(MSGPACK_PP_INC(n), data)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/array/push_back.hpp b/third_party/msgpack/include/msgpack/preprocessor/array/push_back.hpp
new file mode 100644
index 0000000000..6f18f3e958
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/array/push_back.hpp
@@ -0,0 +1,35 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * (C) Copyright Edward Diener 2014.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ARRAY_PUSH_BACK_HPP
+# define MSGPACK_PREPROCESSOR_ARRAY_PUSH_BACK_HPP
+#
+# include <msgpack/preprocessor/arithmetic/inc.hpp>
+# include <msgpack/preprocessor/array/data.hpp>
+# include <msgpack/preprocessor/array/size.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/punctuation/comma_if.hpp>
+# include <msgpack/preprocessor/tuple/rem.hpp>
+# include <msgpack/preprocessor/array/detail/get_data.hpp>
+#
+# /* MSGPACK_PP_ARRAY_PUSH_BACK */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_ARRAY_PUSH_BACK(array, elem) MSGPACK_PP_ARRAY_PUSH_BACK_I(MSGPACK_PP_ARRAY_SIZE(array), MSGPACK_PP_ARRAY_DATA(array), elem)
+# else
+# define MSGPACK_PP_ARRAY_PUSH_BACK(array, elem) MSGPACK_PP_ARRAY_PUSH_BACK_D(array, elem)
+# define MSGPACK_PP_ARRAY_PUSH_BACK_D(array, elem) MSGPACK_PP_ARRAY_PUSH_BACK_I(MSGPACK_PP_ARRAY_SIZE(array), MSGPACK_PP_ARRAY_DATA(array), elem)
+# endif
+#
+# define MSGPACK_PP_ARRAY_PUSH_BACK_I(size, data, elem) (MSGPACK_PP_INC(size), (MSGPACK_PP_ARRAY_DETAIL_GET_DATA(size,data) MSGPACK_PP_COMMA_IF(size) elem))
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/array/push_front.hpp b/third_party/msgpack/include/msgpack/preprocessor/array/push_front.hpp
new file mode 100644
index 0000000000..4b34e7b2dc
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/array/push_front.hpp
@@ -0,0 +1,35 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * (C) Copyright Edward Diener 2014.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ARRAY_PUSH_FRONT_HPP
+# define MSGPACK_PREPROCESSOR_ARRAY_PUSH_FRONT_HPP
+#
+# include <msgpack/preprocessor/arithmetic/inc.hpp>
+# include <msgpack/preprocessor/array/data.hpp>
+# include <msgpack/preprocessor/array/size.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/punctuation/comma_if.hpp>
+# include <msgpack/preprocessor/tuple/rem.hpp>
+# include <msgpack/preprocessor/array/detail/get_data.hpp>
+#
+# /* MSGPACK_PP_ARRAY_PUSH_FRONT */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_ARRAY_PUSH_FRONT(array, elem) MSGPACK_PP_ARRAY_PUSH_FRONT_I(MSGPACK_PP_ARRAY_SIZE(array), MSGPACK_PP_ARRAY_DATA(array), elem)
+# else
+# define MSGPACK_PP_ARRAY_PUSH_FRONT(array, elem) MSGPACK_PP_ARRAY_PUSH_FRONT_D(array, elem)
+# define MSGPACK_PP_ARRAY_PUSH_FRONT_D(array, elem) MSGPACK_PP_ARRAY_PUSH_FRONT_I(MSGPACK_PP_ARRAY_SIZE(array), MSGPACK_PP_ARRAY_DATA(array), elem)
+# endif
+#
+# define MSGPACK_PP_ARRAY_PUSH_FRONT_I(size, data, elem) (MSGPACK_PP_INC(size), (elem MSGPACK_PP_COMMA_IF(size) MSGPACK_PP_ARRAY_DETAIL_GET_DATA(size,data)))
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/array/remove.hpp b/third_party/msgpack/include/msgpack/preprocessor/array/remove.hpp
new file mode 100644
index 0000000000..eb011a87eb
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/array/remove.hpp
@@ -0,0 +1,54 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ARRAY_REMOVE_HPP
+# define MSGPACK_PREPROCESSOR_ARRAY_REMOVE_HPP
+#
+# include <msgpack/preprocessor/arithmetic/inc.hpp>
+# include <msgpack/preprocessor/array/elem.hpp>
+# include <msgpack/preprocessor/array/push_back.hpp>
+# include <msgpack/preprocessor/array/size.hpp>
+# include <msgpack/preprocessor/comparison/not_equal.hpp>
+# include <msgpack/preprocessor/control/deduce_d.hpp>
+# include <msgpack/preprocessor/control/iif.hpp>
+# include <msgpack/preprocessor/control/while.hpp>
+# include <msgpack/preprocessor/tuple/eat.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+#
+# /* MSGPACK_PP_ARRAY_REMOVE */
+#
+# define MSGPACK_PP_ARRAY_REMOVE(array, i) MSGPACK_PP_ARRAY_REMOVE_I(MSGPACK_PP_DEDUCE_D(), array, i)
+# define MSGPACK_PP_ARRAY_REMOVE_I(d, array, i) MSGPACK_PP_ARRAY_REMOVE_D(d, array, i)
+#
+# /* MSGPACK_PP_ARRAY_REMOVE_D */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_ARRAY_REMOVE_D(d, array, i) MSGPACK_PP_TUPLE_ELEM(4, 2, MSGPACK_PP_WHILE_ ## d(MSGPACK_PP_ARRAY_REMOVE_P, MSGPACK_PP_ARRAY_REMOVE_O, (0, i, (0, ()), array)))
+# else
+# define MSGPACK_PP_ARRAY_REMOVE_D(d, array, i) MSGPACK_PP_ARRAY_REMOVE_D_I(d, array, i)
+# define MSGPACK_PP_ARRAY_REMOVE_D_I(d, array, i) MSGPACK_PP_TUPLE_ELEM(4, 2, MSGPACK_PP_WHILE_ ## d(MSGPACK_PP_ARRAY_REMOVE_P, MSGPACK_PP_ARRAY_REMOVE_O, (0, i, (0, ()), array)))
+# endif
+#
+# define MSGPACK_PP_ARRAY_REMOVE_P(d, st) MSGPACK_PP_NOT_EQUAL(MSGPACK_PP_TUPLE_ELEM(4, 0, st), MSGPACK_PP_ARRAY_SIZE(MSGPACK_PP_TUPLE_ELEM(4, 3, st)))
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_STRICT()
+# define MSGPACK_PP_ARRAY_REMOVE_O(d, st) MSGPACK_PP_ARRAY_REMOVE_O_I st
+# else
+# define MSGPACK_PP_ARRAY_REMOVE_O(d, st) MSGPACK_PP_ARRAY_REMOVE_O_I(MSGPACK_PP_TUPLE_ELEM(4, 0, st), MSGPACK_PP_TUPLE_ELEM(4, 1, st), MSGPACK_PP_TUPLE_ELEM(4, 2, st), MSGPACK_PP_TUPLE_ELEM(4, 3, st))
+# endif
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_DMC()
+# define MSGPACK_PP_ARRAY_REMOVE_O_I(n, i, res, arr) (MSGPACK_PP_INC(n), i, MSGPACK_PP_IIF(MSGPACK_PP_NOT_EQUAL(n, i), MSGPACK_PP_ARRAY_PUSH_BACK, res MSGPACK_PP_TUPLE_EAT_2)(res, MSGPACK_PP_ARRAY_ELEM(n, arr)), arr)
+# else
+# define MSGPACK_PP_ARRAY_REMOVE_O_I(n, i, res, arr) (MSGPACK_PP_INC(n), i, MSGPACK_PP_IIF(MSGPACK_PP_NOT_EQUAL(n, i), MSGPACK_PP_ARRAY_PUSH_BACK, MSGPACK_PP_TUPLE_ELEM_2_0)(res, MSGPACK_PP_ARRAY_ELEM(n, arr)), arr)
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/array/replace.hpp b/third_party/msgpack/include/msgpack/preprocessor/array/replace.hpp
new file mode 100644
index 0000000000..bb1bb8f5a2
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/array/replace.hpp
@@ -0,0 +1,49 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ARRAY_REPLACE_HPP
+# define MSGPACK_PREPROCESSOR_ARRAY_REPLACE_HPP
+#
+# include <msgpack/preprocessor/arithmetic/inc.hpp>
+# include <msgpack/preprocessor/array/elem.hpp>
+# include <msgpack/preprocessor/array/push_back.hpp>
+# include <msgpack/preprocessor/comparison/not_equal.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/control/deduce_d.hpp>
+# include <msgpack/preprocessor/control/iif.hpp>
+# include <msgpack/preprocessor/control/while.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+#
+# /* MSGPACK_PP_ARRAY_REPLACE */
+#
+# define MSGPACK_PP_ARRAY_REPLACE(array, i, elem) MSGPACK_PP_ARRAY_REPLACE_I(MSGPACK_PP_DEDUCE_D(), array, i, elem)
+# define MSGPACK_PP_ARRAY_REPLACE_I(d, array, i, elem) MSGPACK_PP_ARRAY_REPLACE_D(d, array, i, elem)
+#
+# /* MSGPACK_PP_ARRAY_REPLACE_D */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_ARRAY_REPLACE_D(d, array, i, elem) MSGPACK_PP_TUPLE_ELEM(5, 3, MSGPACK_PP_WHILE_ ## d(MSGPACK_PP_ARRAY_REPLACE_P, MSGPACK_PP_ARRAY_REPLACE_O, (0, i, elem, (0, ()), array)))
+# else
+# define MSGPACK_PP_ARRAY_REPLACE_D(d, array, i, elem) MSGPACK_PP_ARRAY_REPLACE_D_I(d, array, i, elem)
+# define MSGPACK_PP_ARRAY_REPLACE_D_I(d, array, i, elem) MSGPACK_PP_TUPLE_ELEM(5, 3, MSGPACK_PP_WHILE_ ## d(MSGPACK_PP_ARRAY_REPLACE_P, MSGPACK_PP_ARRAY_REPLACE_O, (0, i, elem, (0, ()), array)))
+# endif
+#
+# define MSGPACK_PP_ARRAY_REPLACE_P(d, state) MSGPACK_PP_NOT_EQUAL(MSGPACK_PP_TUPLE_ELEM(5, 0, state), MSGPACK_PP_ARRAY_SIZE(MSGPACK_PP_TUPLE_ELEM(5, 4, state)))
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_STRICT()
+# define MSGPACK_PP_ARRAY_REPLACE_O(d, state) MSGPACK_PP_ARRAY_REPLACE_O_I state
+# else
+# define MSGPACK_PP_ARRAY_REPLACE_O(d, state) MSGPACK_PP_ARRAY_REPLACE_O_I(MSGPACK_PP_TUPLE_ELEM(5, 0, state), MSGPACK_PP_TUPLE_ELEM(5, 1, state), MSGPACK_PP_TUPLE_ELEM(5, 2, state), MSGPACK_PP_TUPLE_ELEM(5, 3, state), MSGPACK_PP_TUPLE_ELEM(5, 4, state))
+# endif
+#
+# define MSGPACK_PP_ARRAY_REPLACE_O_I(n, i, elem, res, arr) (MSGPACK_PP_INC(n), i, elem, MSGPACK_PP_ARRAY_PUSH_BACK(res, MSGPACK_PP_IIF(MSGPACK_PP_NOT_EQUAL(n, i), MSGPACK_PP_ARRAY_ELEM(n, arr), elem)), arr)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/array/reverse.hpp b/third_party/msgpack/include/msgpack/preprocessor/array/reverse.hpp
new file mode 100644
index 0000000000..710d95bb6f
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/array/reverse.hpp
@@ -0,0 +1,29 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ARRAY_REVERSE_HPP
+# define MSGPACK_PREPROCESSOR_ARRAY_REVERSE_HPP
+#
+# include <msgpack/preprocessor/array/data.hpp>
+# include <msgpack/preprocessor/array/size.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/tuple/reverse.hpp>
+#
+# /* MSGPACK_PP_ARRAY_REVERSE */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_ARRAY_REVERSE(array) (MSGPACK_PP_ARRAY_SIZE(array), MSGPACK_PP_TUPLE_REVERSE(MSGPACK_PP_ARRAY_SIZE(array), MSGPACK_PP_ARRAY_DATA(array)))
+# else
+# define MSGPACK_PP_ARRAY_REVERSE(array) MSGPACK_PP_ARRAY_REVERSE_I(array)
+# define MSGPACK_PP_ARRAY_REVERSE_I(array) (MSGPACK_PP_ARRAY_SIZE(array), MSGPACK_PP_TUPLE_REVERSE(MSGPACK_PP_ARRAY_SIZE(array), MSGPACK_PP_ARRAY_DATA(array)))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/array/size.hpp b/third_party/msgpack/include/msgpack/preprocessor/array/size.hpp
new file mode 100644
index 0000000000..6a3c2c5b1a
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/array/size.hpp
@@ -0,0 +1,28 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ARRAY_SIZE_HPP
+# define MSGPACK_PREPROCESSOR_ARRAY_SIZE_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+#
+# /* MSGPACK_PP_ARRAY_SIZE */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_ARRAY_SIZE(array) MSGPACK_PP_TUPLE_ELEM(2, 0, array)
+# else
+# define MSGPACK_PP_ARRAY_SIZE(array) MSGPACK_PP_ARRAY_SIZE_I(array)
+# define MSGPACK_PP_ARRAY_SIZE_I(array) MSGPACK_PP_ARRAY_SIZE_II array
+# define MSGPACK_PP_ARRAY_SIZE_II(size, data) size
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/array/to_list.hpp b/third_party/msgpack/include/msgpack/preprocessor/array/to_list.hpp
new file mode 100644
index 0000000000..0e0d77150d
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/array/to_list.hpp
@@ -0,0 +1,47 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011. *
+# * (C) Copyright Paul Mensonides 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ARRAY_TO_LIST_HPP
+# define MSGPACK_PREPROCESSOR_ARRAY_TO_LIST_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/array/size.hpp>
+# include <msgpack/preprocessor/control/if.hpp>
+# include <msgpack/preprocessor/tuple/to_list.hpp>
+#
+# /* MSGPACK_PP_ARRAY_TO_LIST */
+#
+# define MSGPACK_PP_ARRAY_TO_LIST(array) \
+ MSGPACK_PP_IF \
+ ( \
+ MSGPACK_PP_ARRAY_SIZE(array), \
+ MSGPACK_PP_ARRAY_TO_LIST_DO, \
+ MSGPACK_PP_ARRAY_TO_LIST_EMPTY \
+ ) \
+ (array) \
+/**/
+#
+# define MSGPACK_PP_ARRAY_TO_LIST_EMPTY(array) MSGPACK_PP_NIL
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MSVC()
+# define MSGPACK_PP_ARRAY_TO_LIST_DO(array) MSGPACK_PP_ARRAY_TO_LIST_I(MSGPACK_PP_TUPLE_TO_LIST, array)
+# define MSGPACK_PP_ARRAY_TO_LIST_I(m, args) MSGPACK_PP_ARRAY_TO_LIST_II(m, args)
+# define MSGPACK_PP_ARRAY_TO_LIST_II(m, args) MSGPACK_PP_CAT(m ## args,)
+# elif MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_ARRAY_TO_LIST_DO(array) MSGPACK_PP_ARRAY_TO_LIST_I(array)
+# define MSGPACK_PP_ARRAY_TO_LIST_I(array) MSGPACK_PP_TUPLE_TO_LIST ## array
+# else
+# define MSGPACK_PP_ARRAY_TO_LIST_DO(array) MSGPACK_PP_TUPLE_TO_LIST array
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/array/to_seq.hpp b/third_party/msgpack/include/msgpack/preprocessor/array/to_seq.hpp
new file mode 100644
index 0000000000..fdaff6e74c
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/array/to_seq.hpp
@@ -0,0 +1,46 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011. *
+# * (C) Copyright Paul Mensonides 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ARRAY_TO_SEQ_HPP
+# define MSGPACK_PREPROCESSOR_ARRAY_TO_SEQ_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/array/size.hpp>
+# include <msgpack/preprocessor/control/if.hpp>
+# include <msgpack/preprocessor/tuple/to_seq.hpp>
+#
+# /* MSGPACK_PP_ARRAY_TO_SEQ */
+#
+# define MSGPACK_PP_ARRAY_TO_SEQ(array) \
+ MSGPACK_PP_IF \
+ ( \
+ MSGPACK_PP_ARRAY_SIZE(array), \
+ MSGPACK_PP_ARRAY_TO_SEQ_DO, \
+ MSGPACK_PP_ARRAY_TO_SEQ_EMPTY \
+ ) \
+ (array) \
+/**/
+# define MSGPACK_PP_ARRAY_TO_SEQ_EMPTY(array)
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MSVC()
+# define MSGPACK_PP_ARRAY_TO_SEQ_DO(array) MSGPACK_PP_ARRAY_TO_SEQ_I(MSGPACK_PP_TUPLE_TO_SEQ, array)
+# define MSGPACK_PP_ARRAY_TO_SEQ_I(m, args) MSGPACK_PP_ARRAY_TO_SEQ_II(m, args)
+# define MSGPACK_PP_ARRAY_TO_SEQ_II(m, args) MSGPACK_PP_CAT(m ## args,)
+# elif MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_ARRAY_TO_SEQ_DO(array) MSGPACK_PP_ARRAY_TO_SEQ_I(array)
+# define MSGPACK_PP_ARRAY_TO_SEQ_I(array) MSGPACK_PP_TUPLE_TO_SEQ ## array
+# else
+# define MSGPACK_PP_ARRAY_TO_SEQ_DO(array) MSGPACK_PP_TUPLE_TO_SEQ array
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/array/to_tuple.hpp b/third_party/msgpack/include/msgpack/preprocessor/array/to_tuple.hpp
new file mode 100644
index 0000000000..4422d09441
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/array/to_tuple.hpp
@@ -0,0 +1,33 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011. *
+# * (C) Copyright Paul Mensonides 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ARRAY_TO_TUPLE_HPP
+# define MSGPACK_PREPROCESSOR_ARRAY_TO_TUPLE_HPP
+#
+# include <msgpack/preprocessor/array/data.hpp>
+# include <msgpack/preprocessor/array/size.hpp>
+# include <msgpack/preprocessor/control/if.hpp>
+#
+# /* MSGPACK_PP_ARRAY_TO_TUPLE */
+#
+# define MSGPACK_PP_ARRAY_TO_TUPLE(array) \
+ MSGPACK_PP_IF \
+ ( \
+ MSGPACK_PP_ARRAY_SIZE(array), \
+ MSGPACK_PP_ARRAY_DATA, \
+ MSGPACK_PP_ARRAY_TO_TUPLE_EMPTY \
+ ) \
+ (array) \
+/**/
+# define MSGPACK_PP_ARRAY_TO_TUPLE_EMPTY(array)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/assert_msg.hpp b/third_party/msgpack/include/msgpack/preprocessor/assert_msg.hpp
new file mode 100644
index 0000000000..4b10d9e1c5
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/assert_msg.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ASSERT_MSG_HPP
+# define MSGPACK_PREPROCESSOR_ASSERT_MSG_HPP
+#
+# include <msgpack/preprocessor/debug/assert.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/cat.hpp b/third_party/msgpack/include/msgpack/preprocessor/cat.hpp
new file mode 100644
index 0000000000..a7b2926237
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/cat.hpp
@@ -0,0 +1,35 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_CAT_HPP
+# define MSGPACK_PREPROCESSOR_CAT_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# /* MSGPACK_PP_CAT */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_CAT(a, b) MSGPACK_PP_CAT_I(a, b)
+# else
+# define MSGPACK_PP_CAT(a, b) MSGPACK_PP_CAT_OO((a, b))
+# define MSGPACK_PP_CAT_OO(par) MSGPACK_PP_CAT_I ## par
+# endif
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MSVC()
+# define MSGPACK_PP_CAT_I(a, b) a ## b
+# else
+# define MSGPACK_PP_CAT_I(a, b) MSGPACK_PP_CAT_II(~, a ## b)
+# define MSGPACK_PP_CAT_II(p, res) res
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/comma.hpp b/third_party/msgpack/include/msgpack/preprocessor/comma.hpp
new file mode 100644
index 0000000000..00962c5e18
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/comma.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_COMMA_HPP
+# define MSGPACK_PREPROCESSOR_COMMA_HPP
+#
+# include <msgpack/preprocessor/punctuation/comma.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/comma_if.hpp b/third_party/msgpack/include/msgpack/preprocessor/comma_if.hpp
new file mode 100644
index 0000000000..a7df82396e
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/comma_if.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_COMMA_IF_HPP
+# define MSGPACK_PREPROCESSOR_COMMA_IF_HPP
+#
+# include <msgpack/preprocessor/punctuation/comma_if.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/comparison.hpp b/third_party/msgpack/include/msgpack/preprocessor/comparison.hpp
new file mode 100644
index 0000000000..da6f62237b
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/comparison.hpp
@@ -0,0 +1,24 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_COMPARISON_HPP
+# define MSGPACK_PREPROCESSOR_COMPARISON_HPP
+#
+# include <msgpack/preprocessor/comparison/equal.hpp>
+# include <msgpack/preprocessor/comparison/greater.hpp>
+# include <msgpack/preprocessor/comparison/greater_equal.hpp>
+# include <msgpack/preprocessor/comparison/less.hpp>
+# include <msgpack/preprocessor/comparison/less_equal.hpp>
+# include <msgpack/preprocessor/comparison/not_equal.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/comparison/equal.hpp b/third_party/msgpack/include/msgpack/preprocessor/comparison/equal.hpp
new file mode 100644
index 0000000000..0196ec1692
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/comparison/equal.hpp
@@ -0,0 +1,34 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_COMPARISON_EQUAL_HPP
+# define MSGPACK_PREPROCESSOR_COMPARISON_EQUAL_HPP
+#
+# include <msgpack/preprocessor/comparison/not_equal.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/logical/compl.hpp>
+#
+# /* MSGPACK_PP_EQUAL */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_EQUAL(x, y) MSGPACK_PP_COMPL(MSGPACK_PP_NOT_EQUAL(x, y))
+# else
+# define MSGPACK_PP_EQUAL(x, y) MSGPACK_PP_EQUAL_I(x, y)
+# define MSGPACK_PP_EQUAL_I(x, y) MSGPACK_PP_COMPL(MSGPACK_PP_NOT_EQUAL(x, y))
+# endif
+#
+# /* MSGPACK_PP_EQUAL_D */
+#
+# define MSGPACK_PP_EQUAL_D(d, x, y) MSGPACK_PP_EQUAL(x, y)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/comparison/greater.hpp b/third_party/msgpack/include/msgpack/preprocessor/comparison/greater.hpp
new file mode 100644
index 0000000000..a0fa968190
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/comparison/greater.hpp
@@ -0,0 +1,38 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_COMPARISON_GREATER_HPP
+# define MSGPACK_PREPROCESSOR_COMPARISON_GREATER_HPP
+#
+# include <msgpack/preprocessor/comparison/less.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# /* MSGPACK_PP_GREATER */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_GREATER(x, y) MSGPACK_PP_LESS(y, x)
+# else
+# define MSGPACK_PP_GREATER(x, y) MSGPACK_PP_GREATER_I(x, y)
+# define MSGPACK_PP_GREATER_I(x, y) MSGPACK_PP_LESS(y, x)
+# endif
+#
+# /* MSGPACK_PP_GREATER_D */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_GREATER_D(d, x, y) MSGPACK_PP_LESS_D(d, y, x)
+# else
+# define MSGPACK_PP_GREATER_D(d, x, y) MSGPACK_PP_GREATER_D_I(d, x, y)
+# define MSGPACK_PP_GREATER_D_I(d, x, y) MSGPACK_PP_LESS_D(d, y, x)
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/comparison/greater_equal.hpp b/third_party/msgpack/include/msgpack/preprocessor/comparison/greater_equal.hpp
new file mode 100644
index 0000000000..fbca6b0a43
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/comparison/greater_equal.hpp
@@ -0,0 +1,38 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_COMPARISON_GREATER_EQUAL_HPP
+# define MSGPACK_PREPROCESSOR_COMPARISON_GREATER_EQUAL_HPP
+#
+# include <msgpack/preprocessor/comparison/less_equal.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# /* MSGPACK_PP_GREATER_EQUAL */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_GREATER_EQUAL(x, y) MSGPACK_PP_LESS_EQUAL(y, x)
+# else
+# define MSGPACK_PP_GREATER_EQUAL(x, y) MSGPACK_PP_GREATER_EQUAL_I(x, y)
+# define MSGPACK_PP_GREATER_EQUAL_I(x, y) MSGPACK_PP_LESS_EQUAL(y, x)
+# endif
+#
+# /* MSGPACK_PP_GREATER_EQUAL_D */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_GREATER_EQUAL_D(d, x, y) MSGPACK_PP_LESS_EQUAL_D(d, y, x)
+# else
+# define MSGPACK_PP_GREATER_EQUAL_D(d, x, y) MSGPACK_PP_GREATER_EQUAL_D_I(d, x, y)
+# define MSGPACK_PP_GREATER_EQUAL_D_I(d, x, y) MSGPACK_PP_LESS_EQUAL_D(d, y, x)
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/comparison/less.hpp b/third_party/msgpack/include/msgpack/preprocessor/comparison/less.hpp
new file mode 100644
index 0000000000..7351fc08ed
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/comparison/less.hpp
@@ -0,0 +1,46 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_COMPARISON_LESS_HPP
+# define MSGPACK_PREPROCESSOR_COMPARISON_LESS_HPP
+#
+# include <msgpack/preprocessor/comparison/less_equal.hpp>
+# include <msgpack/preprocessor/comparison/not_equal.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/control/iif.hpp>
+# include <msgpack/preprocessor/logical/bitand.hpp>
+# include <msgpack/preprocessor/tuple/eat.hpp>
+#
+# /* MSGPACK_PP_LESS */
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & (MSGPACK_PP_CONFIG_MWCC() | MSGPACK_PP_CONFIG_DMC())
+# define MSGPACK_PP_LESS(x, y) MSGPACK_PP_BITAND(MSGPACK_PP_NOT_EQUAL(x, y), MSGPACK_PP_LESS_EQUAL(x, y))
+# elif ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LESS(x, y) MSGPACK_PP_IIF(MSGPACK_PP_NOT_EQUAL(x, y), MSGPACK_PP_LESS_EQUAL, 0 MSGPACK_PP_TUPLE_EAT_2)(x, y)
+# else
+# define MSGPACK_PP_LESS(x, y) MSGPACK_PP_LESS_I(x, y)
+# define MSGPACK_PP_LESS_I(x, y) MSGPACK_PP_IIF(MSGPACK_PP_NOT_EQUAL(x, y), MSGPACK_PP_LESS_EQUAL, 0 MSGPACK_PP_TUPLE_EAT_2)(x, y)
+# endif
+#
+# /* MSGPACK_PP_LESS_D */
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & (MSGPACK_PP_CONFIG_MWCC() | MSGPACK_PP_CONFIG_DMC())
+# define MSGPACK_PP_LESS_D(d, x, y) MSGPACK_PP_BITAND(MSGPACK_PP_NOT_EQUAL(x, y), MSGPACK_PP_LESS_EQUAL_D(d, x, y))
+# elif ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LESS_D(d, x, y) MSGPACK_PP_IIF(MSGPACK_PP_NOT_EQUAL(x, y), MSGPACK_PP_LESS_EQUAL_D, 0 MSGPACK_PP_TUPLE_EAT_3)(d, x, y)
+# else
+# define MSGPACK_PP_LESS_D(d, x, y) MSGPACK_PP_LESS_D_I(d, x, y)
+# define MSGPACK_PP_LESS_D_I(d, x, y) MSGPACK_PP_IIF(MSGPACK_PP_NOT_EQUAL(x, y), MSGPACK_PP_LESS_EQUAL_D, 0 MSGPACK_PP_TUPLE_EAT_3)(d, x, y)
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/comparison/less_equal.hpp b/third_party/msgpack/include/msgpack/preprocessor/comparison/less_equal.hpp
new file mode 100644
index 0000000000..db8d608c40
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/comparison/less_equal.hpp
@@ -0,0 +1,39 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_COMPARISON_LESS_EQUAL_HPP
+# define MSGPACK_PREPROCESSOR_COMPARISON_LESS_EQUAL_HPP
+#
+# include <msgpack/preprocessor/arithmetic/sub.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/logical/not.hpp>
+#
+# /* MSGPACK_PP_LESS_EQUAL */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LESS_EQUAL(x, y) MSGPACK_PP_NOT(MSGPACK_PP_SUB(x, y))
+# else
+# define MSGPACK_PP_LESS_EQUAL(x, y) MSGPACK_PP_LESS_EQUAL_I(x, y)
+# define MSGPACK_PP_LESS_EQUAL_I(x, y) MSGPACK_PP_NOT(MSGPACK_PP_SUB(x, y))
+# endif
+#
+# /* MSGPACK_PP_LESS_EQUAL_D */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LESS_EQUAL_D(d, x, y) MSGPACK_PP_NOT(MSGPACK_PP_SUB_D(d, x, y))
+# else
+# define MSGPACK_PP_LESS_EQUAL_D(d, x, y) MSGPACK_PP_LESS_EQUAL_D_I(d, x, y)
+# define MSGPACK_PP_LESS_EQUAL_D_I(d, x, y) MSGPACK_PP_NOT(MSGPACK_PP_SUB_D(d, x, y))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/comparison/not_equal.hpp b/third_party/msgpack/include/msgpack/preprocessor/comparison/not_equal.hpp
new file mode 100644
index 0000000000..e480961134
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/comparison/not_equal.hpp
@@ -0,0 +1,814 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_COMPARISON_NOT_EQUAL_HPP
+# define MSGPACK_PREPROCESSOR_COMPARISON_NOT_EQUAL_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/control/iif.hpp>
+#
+# /* MSGPACK_PP_NOT_EQUAL */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_NOT_EQUAL(x, y) MSGPACK_PP_NOT_EQUAL_I(x, y)
+# else
+# define MSGPACK_PP_NOT_EQUAL(x, y) MSGPACK_PP_NOT_EQUAL_OO((x, y))
+# define MSGPACK_PP_NOT_EQUAL_OO(par) MSGPACK_PP_NOT_EQUAL_I ## par
+# endif
+#
+# define MSGPACK_PP_NOT_EQUAL_I(x, y) MSGPACK_PP_CAT(MSGPACK_PP_NOT_EQUAL_CHECK_, MSGPACK_PP_NOT_EQUAL_ ## x(0, MSGPACK_PP_NOT_EQUAL_ ## y))
+#
+# /* MSGPACK_PP_NOT_EQUAL_D */
+#
+# define MSGPACK_PP_NOT_EQUAL_D(d, x, y) MSGPACK_PP_NOT_EQUAL(x, y)
+#
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NIL 1
+#
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_0(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_1(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_2(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_3(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_4(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_5(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_6(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_7(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_8(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_9(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_10(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_11(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_12(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_13(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_14(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_15(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_16(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_17(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_18(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_19(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_20(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_21(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_22(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_23(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_24(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_25(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_26(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_27(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_28(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_29(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_30(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_31(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_32(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_33(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_34(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_35(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_36(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_37(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_38(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_39(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_40(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_41(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_42(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_43(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_44(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_45(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_46(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_47(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_48(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_49(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_50(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_51(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_52(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_53(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_54(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_55(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_56(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_57(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_58(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_59(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_60(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_61(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_62(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_63(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_64(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_65(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_66(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_67(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_68(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_69(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_70(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_71(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_72(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_73(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_74(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_75(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_76(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_77(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_78(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_79(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_80(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_81(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_82(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_83(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_84(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_85(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_86(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_87(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_88(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_89(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_90(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_91(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_92(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_93(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_94(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_95(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_96(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_97(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_98(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_99(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_100(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_101(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_102(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_103(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_104(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_105(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_106(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_107(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_108(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_109(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_110(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_111(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_112(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_113(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_114(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_115(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_116(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_117(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_118(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_119(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_120(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_121(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_122(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_123(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_124(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_125(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_126(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_127(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_128(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_129(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_130(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_131(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_132(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_133(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_134(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_135(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_136(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_137(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_138(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_139(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_140(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_141(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_142(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_143(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_144(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_145(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_146(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_147(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_148(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_149(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_150(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_151(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_152(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_153(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_154(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_155(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_156(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_157(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_158(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_159(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_160(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_161(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_162(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_163(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_164(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_165(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_166(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_167(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_168(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_169(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_170(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_171(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_172(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_173(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_174(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_175(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_176(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_177(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_178(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_179(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_180(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_181(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_182(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_183(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_184(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_185(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_186(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_187(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_188(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_189(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_190(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_191(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_192(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_193(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_194(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_195(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_196(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_197(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_198(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_199(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_200(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_201(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_202(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_203(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_204(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_205(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_206(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_207(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_208(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_209(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_210(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_211(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_212(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_213(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_214(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_215(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_216(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_217(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_218(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_219(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_220(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_221(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_222(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_223(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_224(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_225(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_226(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_227(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_228(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_229(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_230(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_231(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_232(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_233(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_234(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_235(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_236(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_237(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_238(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_239(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_240(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_241(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_242(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_243(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_244(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_245(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_246(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_247(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_248(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_249(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_250(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_251(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_252(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_253(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_254(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_255(c, y) 0
+# define MSGPACK_PP_NOT_EQUAL_CHECK_MSGPACK_PP_NOT_EQUAL_256(c, y) 0
+#
+#if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_DMC()
+# define MSGPACK_PP_NOT_EQUAL_0(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_1(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_2(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_3(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_4(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_5(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_6(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_7(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_8(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_9(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_10(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_11(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_12(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_13(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_14(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_15(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_16(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_17(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_18(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_19(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_20(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_21(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_22(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_23(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_24(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_25(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_26(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_27(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_28(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_29(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_30(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_31(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_32(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_33(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_34(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_35(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_36(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_37(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_38(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_39(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_40(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_41(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_42(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_43(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_44(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_45(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_46(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_47(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_48(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_49(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_50(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_51(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_52(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_53(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_54(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_55(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_56(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_57(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_58(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_59(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_60(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_61(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_62(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_63(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_64(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_65(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_66(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_67(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_68(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_69(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_70(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_71(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_72(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_73(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_74(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_75(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_76(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_77(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_78(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_79(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_80(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_81(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_82(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_83(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_84(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_85(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_86(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_87(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_88(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_89(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_90(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_91(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_92(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_93(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_94(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_95(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_96(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_97(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_98(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_99(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_100(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_101(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_102(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_103(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_104(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_105(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_106(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_107(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_108(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_109(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_110(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_111(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_112(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_113(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_114(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_115(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_116(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_117(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_118(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_119(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_120(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_121(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_122(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_123(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_124(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_125(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_126(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_127(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_128(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_129(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_130(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_131(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_132(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_133(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_134(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_135(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_136(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_137(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_138(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_139(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_140(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_141(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_142(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_143(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_144(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_145(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_146(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_147(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_148(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_149(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_150(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_151(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_152(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_153(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_154(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_155(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_156(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_157(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_158(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_159(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_160(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_161(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_162(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_163(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_164(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_165(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_166(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_167(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_168(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_169(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_170(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_171(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_172(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_173(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_174(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_175(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_176(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_177(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_178(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_179(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_180(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_181(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_182(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_183(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_184(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_185(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_186(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_187(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_188(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_189(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_190(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_191(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_192(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_193(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_194(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_195(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_196(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_197(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_198(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_199(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_200(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_201(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_202(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_203(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_204(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_205(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_206(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_207(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_208(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_209(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_210(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_211(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_212(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_213(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_214(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_215(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_216(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_217(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_218(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_219(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_220(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_221(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_222(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_223(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_224(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_225(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_226(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_227(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_228(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_229(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_230(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_231(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_232(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_233(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_234(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_235(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_236(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_237(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_238(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_239(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_240(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_241(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_242(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_243(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_244(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_245(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_246(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_247(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_248(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_249(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_250(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_251(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_252(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_253(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_254(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_255(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_256(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y(1, MSGPACK_PP_NIL))
+# else
+# define MSGPACK_PP_NOT_EQUAL_0(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_1(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_2(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_3(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_4(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_5(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_6(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_7(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_8(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_9(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_10(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_11(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_12(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_13(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_14(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_15(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_16(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_17(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_18(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_19(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_20(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_21(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_22(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_23(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_24(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_25(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_26(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_27(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_28(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_29(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_30(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_31(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_32(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_33(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_34(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_35(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_36(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_37(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_38(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_39(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_40(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_41(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_42(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_43(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_44(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_45(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_46(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_47(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_48(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_49(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_50(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_51(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_52(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_53(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_54(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_55(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_56(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_57(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_58(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_59(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_60(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_61(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_62(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_63(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_64(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_65(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_66(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_67(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_68(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_69(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_70(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_71(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_72(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_73(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_74(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_75(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_76(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_77(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_78(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_79(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_80(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_81(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_82(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_83(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_84(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_85(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_86(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_87(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_88(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_89(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_90(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_91(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_92(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_93(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_94(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_95(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_96(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_97(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_98(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_99(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_100(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_101(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_102(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_103(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_104(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_105(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_106(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_107(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_108(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_109(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_110(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_111(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_112(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_113(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_114(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_115(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_116(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_117(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_118(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_119(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_120(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_121(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_122(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_123(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_124(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_125(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_126(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_127(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_128(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_129(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_130(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_131(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_132(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_133(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_134(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_135(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_136(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_137(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_138(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_139(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_140(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_141(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_142(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_143(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_144(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_145(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_146(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_147(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_148(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_149(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_150(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_151(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_152(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_153(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_154(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_155(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_156(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_157(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_158(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_159(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_160(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_161(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_162(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_163(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_164(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_165(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_166(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_167(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_168(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_169(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_170(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_171(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_172(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_173(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_174(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_175(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_176(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_177(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_178(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_179(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_180(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_181(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_182(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_183(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_184(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_185(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_186(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_187(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_188(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_189(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_190(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_191(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_192(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_193(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_194(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_195(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_196(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_197(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_198(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_199(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_200(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_201(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_202(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_203(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_204(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_205(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_206(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_207(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_208(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_209(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_210(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_211(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_212(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_213(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_214(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_215(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_216(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_217(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_218(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_219(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_220(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_221(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_222(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_223(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_224(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_225(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_226(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_227(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_228(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_229(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_230(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_231(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_232(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_233(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_234(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_235(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_236(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_237(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_238(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_239(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_240(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_241(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_242(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_243(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_244(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_245(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_246(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_247(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_248(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_249(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_250(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_251(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_252(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_253(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_254(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_255(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_NOT_EQUAL_256(c, y) MSGPACK_PP_IIF(c, MSGPACK_PP_NIL, y##(1, MSGPACK_PP_NIL))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/config/config.hpp b/third_party/msgpack/include/msgpack/preprocessor/config/config.hpp
new file mode 100644
index 0000000000..7ae4b15b4f
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/config/config.hpp
@@ -0,0 +1,104 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002-2011. *
+# * (C) Copyright Edward Diener 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_CONFIG_CONFIG_HPP
+# define MSGPACK_PREPROCESSOR_CONFIG_CONFIG_HPP
+#
+# /* MSGPACK_PP_CONFIG_FLAGS */
+#
+# define MSGPACK_PP_CONFIG_STRICT() 0x0001
+# define MSGPACK_PP_CONFIG_IDEAL() 0x0002
+#
+# define MSGPACK_PP_CONFIG_MSVC() 0x0004
+# define MSGPACK_PP_CONFIG_MWCC() 0x0008
+# define MSGPACK_PP_CONFIG_BCC() 0x0010
+# define MSGPACK_PP_CONFIG_EDG() 0x0020
+# define MSGPACK_PP_CONFIG_DMC() 0x0040
+#
+# ifndef MSGPACK_PP_CONFIG_FLAGS
+# if defined(__GCCXML__)
+# define MSGPACK_PP_CONFIG_FLAGS() (MSGPACK_PP_CONFIG_STRICT())
+# elif defined(__WAVE__)
+# define MSGPACK_PP_CONFIG_FLAGS() (MSGPACK_PP_CONFIG_STRICT())
+# elif defined(__MWERKS__) && __MWERKS__ >= 0x3200
+# define MSGPACK_PP_CONFIG_FLAGS() (MSGPACK_PP_CONFIG_STRICT())
+# elif defined(__EDG__) || defined(__EDG_VERSION__)
+# if defined(_MSC_VER) && (defined(__INTELLISENSE__) || __EDG_VERSION__ >= 308)
+# define MSGPACK_PP_CONFIG_FLAGS() (MSGPACK_PP_CONFIG_MSVC())
+# else
+# define MSGPACK_PP_CONFIG_FLAGS() (MSGPACK_PP_CONFIG_EDG() | MSGPACK_PP_CONFIG_STRICT())
+# endif
+# elif defined(__MWERKS__)
+# define MSGPACK_PP_CONFIG_FLAGS() (MSGPACK_PP_CONFIG_MWCC())
+# elif defined(__DMC__)
+# define MSGPACK_PP_CONFIG_FLAGS() (MSGPACK_PP_CONFIG_DMC())
+# elif defined(__BORLANDC__) && __BORLANDC__ >= 0x581
+# define MSGPACK_PP_CONFIG_FLAGS() (MSGPACK_PP_CONFIG_STRICT())
+# elif defined(__BORLANDC__) || defined(__IBMC__) || defined(__IBMCPP__) || defined(__SUNPRO_CC)
+# define MSGPACK_PP_CONFIG_FLAGS() (MSGPACK_PP_CONFIG_BCC())
+# elif defined(_MSC_VER) && !defined(__clang__)
+# define MSGPACK_PP_CONFIG_FLAGS() (MSGPACK_PP_CONFIG_MSVC())
+# else
+# define MSGPACK_PP_CONFIG_FLAGS() (MSGPACK_PP_CONFIG_STRICT())
+# endif
+# endif
+#
+# /* MSGPACK_PP_CONFIG_EXTENDED_LINE_INFO */
+#
+# ifndef MSGPACK_PP_CONFIG_EXTENDED_LINE_INFO
+# define MSGPACK_PP_CONFIG_EXTENDED_LINE_INFO 0
+# endif
+#
+# /* MSGPACK_PP_CONFIG_ERRORS */
+#
+# ifndef MSGPACK_PP_CONFIG_ERRORS
+# ifdef NDEBUG
+# define MSGPACK_PP_CONFIG_ERRORS 0
+# else
+# define MSGPACK_PP_CONFIG_ERRORS 1
+# endif
+# endif
+#
+# /* MSGPACK_PP_VARIADICS */
+#
+# define MSGPACK_PP_VARIADICS_MSVC 0
+# if !defined MSGPACK_PP_VARIADICS
+# /* variadic support explicitly disabled for all untested compilers */
+# if defined __GCCXML__ || defined __CUDACC__ || defined __PATHSCALE__ || defined __DMC__ || defined __CODEGEARC__ || defined __BORLANDC__ || defined __MWERKS__ || ( defined __SUNPRO_CC && __SUNPRO_CC < 0x5120 ) || defined __HP_aCC && !defined __EDG__ || defined __MRC__ || defined __SC__ || defined __IBMCPP__ || defined __PGI
+# define MSGPACK_PP_VARIADICS 0
+# /* VC++ (C/C++) */
+# elif defined _MSC_VER && _MSC_VER >= 1400 && (!defined __EDG__ || defined(__INTELLISENSE__)) && !defined __clang__
+# define MSGPACK_PP_VARIADICS 1
+# undef MSGPACK_PP_VARIADICS_MSVC
+# define MSGPACK_PP_VARIADICS_MSVC 1
+# /* Wave (C/C++), GCC (C++) */
+# elif defined __WAVE__ && __WAVE_HAS_VARIADICS__ || defined __GNUC__ && defined __GXX_EXPERIMENTAL_CXX0X__ && __GXX_EXPERIMENTAL_CXX0X__
+# define MSGPACK_PP_VARIADICS 1
+# /* EDG-based (C/C++), GCC (C), and unknown (C/C++) */
+# elif !defined __cplusplus && __STDC_VERSION__ >= 199901L || __cplusplus >= 201103L
+# define MSGPACK_PP_VARIADICS 1
+# else
+# define MSGPACK_PP_VARIADICS 0
+# endif
+# elif !MSGPACK_PP_VARIADICS + 1 < 2
+# undef MSGPACK_PP_VARIADICS
+# define MSGPACK_PP_VARIADICS 1
+# if defined _MSC_VER && _MSC_VER >= 1400 && (defined(__INTELLISENSE__) || !(defined __EDG__ || defined __GCCXML__ || defined __CUDACC__ || defined __PATHSCALE__ || defined __clang__ || defined __DMC__ || defined __CODEGEARC__ || defined __BORLANDC__ || defined __MWERKS__ || defined __SUNPRO_CC || defined __HP_aCC || defined __MRC__ || defined __SC__ || defined __IBMCPP__ || defined __PGI))
+# undef MSGPACK_PP_VARIADICS_MSVC
+# define MSGPACK_PP_VARIADICS_MSVC 1
+# endif
+# else
+# undef MSGPACK_PP_VARIADICS
+# define MSGPACK_PP_VARIADICS 0
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/config/limits.hpp b/third_party/msgpack/include/msgpack/preprocessor/config/limits.hpp
new file mode 100644
index 0000000000..918bacf7c4
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/config/limits.hpp
@@ -0,0 +1,30 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+# /* Revised by Edward Diener (2011) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_CONFIG_LIMITS_HPP
+# define MSGPACK_PREPROCESSOR_CONFIG_LIMITS_HPP
+#
+# define MSGPACK_PP_LIMIT_MAG 256
+# define MSGPACK_PP_LIMIT_TUPLE 64
+# define MSGPACK_PP_LIMIT_DIM 3
+# define MSGPACK_PP_LIMIT_REPEAT 256
+# define MSGPACK_PP_LIMIT_WHILE 256
+# define MSGPACK_PP_LIMIT_FOR 256
+# define MSGPACK_PP_LIMIT_ITERATION 256
+# define MSGPACK_PP_LIMIT_ITERATION_DIM 3
+# define MSGPACK_PP_LIMIT_SEQ 256
+# define MSGPACK_PP_LIMIT_SLOT_SIG 10
+# define MSGPACK_PP_LIMIT_SLOT_COUNT 5
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/control.hpp b/third_party/msgpack/include/msgpack/preprocessor/control.hpp
new file mode 100644
index 0000000000..06c4949f91
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/control.hpp
@@ -0,0 +1,22 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_CONTROL_HPP
+# define MSGPACK_PREPROCESSOR_CONTROL_HPP
+#
+# include <msgpack/preprocessor/control/deduce_d.hpp>
+# include <msgpack/preprocessor/control/expr_if.hpp>
+# include <msgpack/preprocessor/control/expr_iif.hpp>
+# include <msgpack/preprocessor/control/if.hpp>
+# include <msgpack/preprocessor/control/iif.hpp>
+# include <msgpack/preprocessor/control/while.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/control/deduce_d.hpp b/third_party/msgpack/include/msgpack/preprocessor/control/deduce_d.hpp
new file mode 100644
index 0000000000..fbb980b8c8
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/control/deduce_d.hpp
@@ -0,0 +1,22 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_CONTROL_DEDUCE_D_HPP
+# define MSGPACK_PREPROCESSOR_CONTROL_DEDUCE_D_HPP
+#
+# include <msgpack/preprocessor/control/while.hpp>
+# include <msgpack/preprocessor/detail/auto_rec.hpp>
+#
+# /* MSGPACK_PP_DEDUCE_D */
+#
+# define MSGPACK_PP_DEDUCE_D() MSGPACK_PP_AUTO_REC(MSGPACK_PP_WHILE_P, 256)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/control/detail/dmc/while.hpp b/third_party/msgpack/include/msgpack/preprocessor/control/detail/dmc/while.hpp
new file mode 100644
index 0000000000..b5733c9e82
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/control/detail/dmc/while.hpp
@@ -0,0 +1,536 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_CONTROL_DETAIL_WHILE_HPP
+# define MSGPACK_PREPROCESSOR_CONTROL_DETAIL_WHILE_HPP
+#
+# include <msgpack/preprocessor/control/iif.hpp>
+# include <msgpack/preprocessor/logical/bool.hpp>
+# include <msgpack/preprocessor/tuple/eat.hpp>
+#
+# define MSGPACK_PP_WHILE_1(p, o, s) MSGPACK_PP_WHILE_1_C(MSGPACK_PP_BOOL(p##(2, s)), p, o, s)
+# define MSGPACK_PP_WHILE_2(p, o, s) MSGPACK_PP_WHILE_2_C(MSGPACK_PP_BOOL(p##(3, s)), p, o, s)
+# define MSGPACK_PP_WHILE_3(p, o, s) MSGPACK_PP_WHILE_3_C(MSGPACK_PP_BOOL(p##(4, s)), p, o, s)
+# define MSGPACK_PP_WHILE_4(p, o, s) MSGPACK_PP_WHILE_4_C(MSGPACK_PP_BOOL(p##(5, s)), p, o, s)
+# define MSGPACK_PP_WHILE_5(p, o, s) MSGPACK_PP_WHILE_5_C(MSGPACK_PP_BOOL(p##(6, s)), p, o, s)
+# define MSGPACK_PP_WHILE_6(p, o, s) MSGPACK_PP_WHILE_6_C(MSGPACK_PP_BOOL(p##(7, s)), p, o, s)
+# define MSGPACK_PP_WHILE_7(p, o, s) MSGPACK_PP_WHILE_7_C(MSGPACK_PP_BOOL(p##(8, s)), p, o, s)
+# define MSGPACK_PP_WHILE_8(p, o, s) MSGPACK_PP_WHILE_8_C(MSGPACK_PP_BOOL(p##(9, s)), p, o, s)
+# define MSGPACK_PP_WHILE_9(p, o, s) MSGPACK_PP_WHILE_9_C(MSGPACK_PP_BOOL(p##(10, s)), p, o, s)
+# define MSGPACK_PP_WHILE_10(p, o, s) MSGPACK_PP_WHILE_10_C(MSGPACK_PP_BOOL(p##(11, s)), p, o, s)
+# define MSGPACK_PP_WHILE_11(p, o, s) MSGPACK_PP_WHILE_11_C(MSGPACK_PP_BOOL(p##(12, s)), p, o, s)
+# define MSGPACK_PP_WHILE_12(p, o, s) MSGPACK_PP_WHILE_12_C(MSGPACK_PP_BOOL(p##(13, s)), p, o, s)
+# define MSGPACK_PP_WHILE_13(p, o, s) MSGPACK_PP_WHILE_13_C(MSGPACK_PP_BOOL(p##(14, s)), p, o, s)
+# define MSGPACK_PP_WHILE_14(p, o, s) MSGPACK_PP_WHILE_14_C(MSGPACK_PP_BOOL(p##(15, s)), p, o, s)
+# define MSGPACK_PP_WHILE_15(p, o, s) MSGPACK_PP_WHILE_15_C(MSGPACK_PP_BOOL(p##(16, s)), p, o, s)
+# define MSGPACK_PP_WHILE_16(p, o, s) MSGPACK_PP_WHILE_16_C(MSGPACK_PP_BOOL(p##(17, s)), p, o, s)
+# define MSGPACK_PP_WHILE_17(p, o, s) MSGPACK_PP_WHILE_17_C(MSGPACK_PP_BOOL(p##(18, s)), p, o, s)
+# define MSGPACK_PP_WHILE_18(p, o, s) MSGPACK_PP_WHILE_18_C(MSGPACK_PP_BOOL(p##(19, s)), p, o, s)
+# define MSGPACK_PP_WHILE_19(p, o, s) MSGPACK_PP_WHILE_19_C(MSGPACK_PP_BOOL(p##(20, s)), p, o, s)
+# define MSGPACK_PP_WHILE_20(p, o, s) MSGPACK_PP_WHILE_20_C(MSGPACK_PP_BOOL(p##(21, s)), p, o, s)
+# define MSGPACK_PP_WHILE_21(p, o, s) MSGPACK_PP_WHILE_21_C(MSGPACK_PP_BOOL(p##(22, s)), p, o, s)
+# define MSGPACK_PP_WHILE_22(p, o, s) MSGPACK_PP_WHILE_22_C(MSGPACK_PP_BOOL(p##(23, s)), p, o, s)
+# define MSGPACK_PP_WHILE_23(p, o, s) MSGPACK_PP_WHILE_23_C(MSGPACK_PP_BOOL(p##(24, s)), p, o, s)
+# define MSGPACK_PP_WHILE_24(p, o, s) MSGPACK_PP_WHILE_24_C(MSGPACK_PP_BOOL(p##(25, s)), p, o, s)
+# define MSGPACK_PP_WHILE_25(p, o, s) MSGPACK_PP_WHILE_25_C(MSGPACK_PP_BOOL(p##(26, s)), p, o, s)
+# define MSGPACK_PP_WHILE_26(p, o, s) MSGPACK_PP_WHILE_26_C(MSGPACK_PP_BOOL(p##(27, s)), p, o, s)
+# define MSGPACK_PP_WHILE_27(p, o, s) MSGPACK_PP_WHILE_27_C(MSGPACK_PP_BOOL(p##(28, s)), p, o, s)
+# define MSGPACK_PP_WHILE_28(p, o, s) MSGPACK_PP_WHILE_28_C(MSGPACK_PP_BOOL(p##(29, s)), p, o, s)
+# define MSGPACK_PP_WHILE_29(p, o, s) MSGPACK_PP_WHILE_29_C(MSGPACK_PP_BOOL(p##(30, s)), p, o, s)
+# define MSGPACK_PP_WHILE_30(p, o, s) MSGPACK_PP_WHILE_30_C(MSGPACK_PP_BOOL(p##(31, s)), p, o, s)
+# define MSGPACK_PP_WHILE_31(p, o, s) MSGPACK_PP_WHILE_31_C(MSGPACK_PP_BOOL(p##(32, s)), p, o, s)
+# define MSGPACK_PP_WHILE_32(p, o, s) MSGPACK_PP_WHILE_32_C(MSGPACK_PP_BOOL(p##(33, s)), p, o, s)
+# define MSGPACK_PP_WHILE_33(p, o, s) MSGPACK_PP_WHILE_33_C(MSGPACK_PP_BOOL(p##(34, s)), p, o, s)
+# define MSGPACK_PP_WHILE_34(p, o, s) MSGPACK_PP_WHILE_34_C(MSGPACK_PP_BOOL(p##(35, s)), p, o, s)
+# define MSGPACK_PP_WHILE_35(p, o, s) MSGPACK_PP_WHILE_35_C(MSGPACK_PP_BOOL(p##(36, s)), p, o, s)
+# define MSGPACK_PP_WHILE_36(p, o, s) MSGPACK_PP_WHILE_36_C(MSGPACK_PP_BOOL(p##(37, s)), p, o, s)
+# define MSGPACK_PP_WHILE_37(p, o, s) MSGPACK_PP_WHILE_37_C(MSGPACK_PP_BOOL(p##(38, s)), p, o, s)
+# define MSGPACK_PP_WHILE_38(p, o, s) MSGPACK_PP_WHILE_38_C(MSGPACK_PP_BOOL(p##(39, s)), p, o, s)
+# define MSGPACK_PP_WHILE_39(p, o, s) MSGPACK_PP_WHILE_39_C(MSGPACK_PP_BOOL(p##(40, s)), p, o, s)
+# define MSGPACK_PP_WHILE_40(p, o, s) MSGPACK_PP_WHILE_40_C(MSGPACK_PP_BOOL(p##(41, s)), p, o, s)
+# define MSGPACK_PP_WHILE_41(p, o, s) MSGPACK_PP_WHILE_41_C(MSGPACK_PP_BOOL(p##(42, s)), p, o, s)
+# define MSGPACK_PP_WHILE_42(p, o, s) MSGPACK_PP_WHILE_42_C(MSGPACK_PP_BOOL(p##(43, s)), p, o, s)
+# define MSGPACK_PP_WHILE_43(p, o, s) MSGPACK_PP_WHILE_43_C(MSGPACK_PP_BOOL(p##(44, s)), p, o, s)
+# define MSGPACK_PP_WHILE_44(p, o, s) MSGPACK_PP_WHILE_44_C(MSGPACK_PP_BOOL(p##(45, s)), p, o, s)
+# define MSGPACK_PP_WHILE_45(p, o, s) MSGPACK_PP_WHILE_45_C(MSGPACK_PP_BOOL(p##(46, s)), p, o, s)
+# define MSGPACK_PP_WHILE_46(p, o, s) MSGPACK_PP_WHILE_46_C(MSGPACK_PP_BOOL(p##(47, s)), p, o, s)
+# define MSGPACK_PP_WHILE_47(p, o, s) MSGPACK_PP_WHILE_47_C(MSGPACK_PP_BOOL(p##(48, s)), p, o, s)
+# define MSGPACK_PP_WHILE_48(p, o, s) MSGPACK_PP_WHILE_48_C(MSGPACK_PP_BOOL(p##(49, s)), p, o, s)
+# define MSGPACK_PP_WHILE_49(p, o, s) MSGPACK_PP_WHILE_49_C(MSGPACK_PP_BOOL(p##(50, s)), p, o, s)
+# define MSGPACK_PP_WHILE_50(p, o, s) MSGPACK_PP_WHILE_50_C(MSGPACK_PP_BOOL(p##(51, s)), p, o, s)
+# define MSGPACK_PP_WHILE_51(p, o, s) MSGPACK_PP_WHILE_51_C(MSGPACK_PP_BOOL(p##(52, s)), p, o, s)
+# define MSGPACK_PP_WHILE_52(p, o, s) MSGPACK_PP_WHILE_52_C(MSGPACK_PP_BOOL(p##(53, s)), p, o, s)
+# define MSGPACK_PP_WHILE_53(p, o, s) MSGPACK_PP_WHILE_53_C(MSGPACK_PP_BOOL(p##(54, s)), p, o, s)
+# define MSGPACK_PP_WHILE_54(p, o, s) MSGPACK_PP_WHILE_54_C(MSGPACK_PP_BOOL(p##(55, s)), p, o, s)
+# define MSGPACK_PP_WHILE_55(p, o, s) MSGPACK_PP_WHILE_55_C(MSGPACK_PP_BOOL(p##(56, s)), p, o, s)
+# define MSGPACK_PP_WHILE_56(p, o, s) MSGPACK_PP_WHILE_56_C(MSGPACK_PP_BOOL(p##(57, s)), p, o, s)
+# define MSGPACK_PP_WHILE_57(p, o, s) MSGPACK_PP_WHILE_57_C(MSGPACK_PP_BOOL(p##(58, s)), p, o, s)
+# define MSGPACK_PP_WHILE_58(p, o, s) MSGPACK_PP_WHILE_58_C(MSGPACK_PP_BOOL(p##(59, s)), p, o, s)
+# define MSGPACK_PP_WHILE_59(p, o, s) MSGPACK_PP_WHILE_59_C(MSGPACK_PP_BOOL(p##(60, s)), p, o, s)
+# define MSGPACK_PP_WHILE_60(p, o, s) MSGPACK_PP_WHILE_60_C(MSGPACK_PP_BOOL(p##(61, s)), p, o, s)
+# define MSGPACK_PP_WHILE_61(p, o, s) MSGPACK_PP_WHILE_61_C(MSGPACK_PP_BOOL(p##(62, s)), p, o, s)
+# define MSGPACK_PP_WHILE_62(p, o, s) MSGPACK_PP_WHILE_62_C(MSGPACK_PP_BOOL(p##(63, s)), p, o, s)
+# define MSGPACK_PP_WHILE_63(p, o, s) MSGPACK_PP_WHILE_63_C(MSGPACK_PP_BOOL(p##(64, s)), p, o, s)
+# define MSGPACK_PP_WHILE_64(p, o, s) MSGPACK_PP_WHILE_64_C(MSGPACK_PP_BOOL(p##(65, s)), p, o, s)
+# define MSGPACK_PP_WHILE_65(p, o, s) MSGPACK_PP_WHILE_65_C(MSGPACK_PP_BOOL(p##(66, s)), p, o, s)
+# define MSGPACK_PP_WHILE_66(p, o, s) MSGPACK_PP_WHILE_66_C(MSGPACK_PP_BOOL(p##(67, s)), p, o, s)
+# define MSGPACK_PP_WHILE_67(p, o, s) MSGPACK_PP_WHILE_67_C(MSGPACK_PP_BOOL(p##(68, s)), p, o, s)
+# define MSGPACK_PP_WHILE_68(p, o, s) MSGPACK_PP_WHILE_68_C(MSGPACK_PP_BOOL(p##(69, s)), p, o, s)
+# define MSGPACK_PP_WHILE_69(p, o, s) MSGPACK_PP_WHILE_69_C(MSGPACK_PP_BOOL(p##(70, s)), p, o, s)
+# define MSGPACK_PP_WHILE_70(p, o, s) MSGPACK_PP_WHILE_70_C(MSGPACK_PP_BOOL(p##(71, s)), p, o, s)
+# define MSGPACK_PP_WHILE_71(p, o, s) MSGPACK_PP_WHILE_71_C(MSGPACK_PP_BOOL(p##(72, s)), p, o, s)
+# define MSGPACK_PP_WHILE_72(p, o, s) MSGPACK_PP_WHILE_72_C(MSGPACK_PP_BOOL(p##(73, s)), p, o, s)
+# define MSGPACK_PP_WHILE_73(p, o, s) MSGPACK_PP_WHILE_73_C(MSGPACK_PP_BOOL(p##(74, s)), p, o, s)
+# define MSGPACK_PP_WHILE_74(p, o, s) MSGPACK_PP_WHILE_74_C(MSGPACK_PP_BOOL(p##(75, s)), p, o, s)
+# define MSGPACK_PP_WHILE_75(p, o, s) MSGPACK_PP_WHILE_75_C(MSGPACK_PP_BOOL(p##(76, s)), p, o, s)
+# define MSGPACK_PP_WHILE_76(p, o, s) MSGPACK_PP_WHILE_76_C(MSGPACK_PP_BOOL(p##(77, s)), p, o, s)
+# define MSGPACK_PP_WHILE_77(p, o, s) MSGPACK_PP_WHILE_77_C(MSGPACK_PP_BOOL(p##(78, s)), p, o, s)
+# define MSGPACK_PP_WHILE_78(p, o, s) MSGPACK_PP_WHILE_78_C(MSGPACK_PP_BOOL(p##(79, s)), p, o, s)
+# define MSGPACK_PP_WHILE_79(p, o, s) MSGPACK_PP_WHILE_79_C(MSGPACK_PP_BOOL(p##(80, s)), p, o, s)
+# define MSGPACK_PP_WHILE_80(p, o, s) MSGPACK_PP_WHILE_80_C(MSGPACK_PP_BOOL(p##(81, s)), p, o, s)
+# define MSGPACK_PP_WHILE_81(p, o, s) MSGPACK_PP_WHILE_81_C(MSGPACK_PP_BOOL(p##(82, s)), p, o, s)
+# define MSGPACK_PP_WHILE_82(p, o, s) MSGPACK_PP_WHILE_82_C(MSGPACK_PP_BOOL(p##(83, s)), p, o, s)
+# define MSGPACK_PP_WHILE_83(p, o, s) MSGPACK_PP_WHILE_83_C(MSGPACK_PP_BOOL(p##(84, s)), p, o, s)
+# define MSGPACK_PP_WHILE_84(p, o, s) MSGPACK_PP_WHILE_84_C(MSGPACK_PP_BOOL(p##(85, s)), p, o, s)
+# define MSGPACK_PP_WHILE_85(p, o, s) MSGPACK_PP_WHILE_85_C(MSGPACK_PP_BOOL(p##(86, s)), p, o, s)
+# define MSGPACK_PP_WHILE_86(p, o, s) MSGPACK_PP_WHILE_86_C(MSGPACK_PP_BOOL(p##(87, s)), p, o, s)
+# define MSGPACK_PP_WHILE_87(p, o, s) MSGPACK_PP_WHILE_87_C(MSGPACK_PP_BOOL(p##(88, s)), p, o, s)
+# define MSGPACK_PP_WHILE_88(p, o, s) MSGPACK_PP_WHILE_88_C(MSGPACK_PP_BOOL(p##(89, s)), p, o, s)
+# define MSGPACK_PP_WHILE_89(p, o, s) MSGPACK_PP_WHILE_89_C(MSGPACK_PP_BOOL(p##(90, s)), p, o, s)
+# define MSGPACK_PP_WHILE_90(p, o, s) MSGPACK_PP_WHILE_90_C(MSGPACK_PP_BOOL(p##(91, s)), p, o, s)
+# define MSGPACK_PP_WHILE_91(p, o, s) MSGPACK_PP_WHILE_91_C(MSGPACK_PP_BOOL(p##(92, s)), p, o, s)
+# define MSGPACK_PP_WHILE_92(p, o, s) MSGPACK_PP_WHILE_92_C(MSGPACK_PP_BOOL(p##(93, s)), p, o, s)
+# define MSGPACK_PP_WHILE_93(p, o, s) MSGPACK_PP_WHILE_93_C(MSGPACK_PP_BOOL(p##(94, s)), p, o, s)
+# define MSGPACK_PP_WHILE_94(p, o, s) MSGPACK_PP_WHILE_94_C(MSGPACK_PP_BOOL(p##(95, s)), p, o, s)
+# define MSGPACK_PP_WHILE_95(p, o, s) MSGPACK_PP_WHILE_95_C(MSGPACK_PP_BOOL(p##(96, s)), p, o, s)
+# define MSGPACK_PP_WHILE_96(p, o, s) MSGPACK_PP_WHILE_96_C(MSGPACK_PP_BOOL(p##(97, s)), p, o, s)
+# define MSGPACK_PP_WHILE_97(p, o, s) MSGPACK_PP_WHILE_97_C(MSGPACK_PP_BOOL(p##(98, s)), p, o, s)
+# define MSGPACK_PP_WHILE_98(p, o, s) MSGPACK_PP_WHILE_98_C(MSGPACK_PP_BOOL(p##(99, s)), p, o, s)
+# define MSGPACK_PP_WHILE_99(p, o, s) MSGPACK_PP_WHILE_99_C(MSGPACK_PP_BOOL(p##(100, s)), p, o, s)
+# define MSGPACK_PP_WHILE_100(p, o, s) MSGPACK_PP_WHILE_100_C(MSGPACK_PP_BOOL(p##(101, s)), p, o, s)
+# define MSGPACK_PP_WHILE_101(p, o, s) MSGPACK_PP_WHILE_101_C(MSGPACK_PP_BOOL(p##(102, s)), p, o, s)
+# define MSGPACK_PP_WHILE_102(p, o, s) MSGPACK_PP_WHILE_102_C(MSGPACK_PP_BOOL(p##(103, s)), p, o, s)
+# define MSGPACK_PP_WHILE_103(p, o, s) MSGPACK_PP_WHILE_103_C(MSGPACK_PP_BOOL(p##(104, s)), p, o, s)
+# define MSGPACK_PP_WHILE_104(p, o, s) MSGPACK_PP_WHILE_104_C(MSGPACK_PP_BOOL(p##(105, s)), p, o, s)
+# define MSGPACK_PP_WHILE_105(p, o, s) MSGPACK_PP_WHILE_105_C(MSGPACK_PP_BOOL(p##(106, s)), p, o, s)
+# define MSGPACK_PP_WHILE_106(p, o, s) MSGPACK_PP_WHILE_106_C(MSGPACK_PP_BOOL(p##(107, s)), p, o, s)
+# define MSGPACK_PP_WHILE_107(p, o, s) MSGPACK_PP_WHILE_107_C(MSGPACK_PP_BOOL(p##(108, s)), p, o, s)
+# define MSGPACK_PP_WHILE_108(p, o, s) MSGPACK_PP_WHILE_108_C(MSGPACK_PP_BOOL(p##(109, s)), p, o, s)
+# define MSGPACK_PP_WHILE_109(p, o, s) MSGPACK_PP_WHILE_109_C(MSGPACK_PP_BOOL(p##(110, s)), p, o, s)
+# define MSGPACK_PP_WHILE_110(p, o, s) MSGPACK_PP_WHILE_110_C(MSGPACK_PP_BOOL(p##(111, s)), p, o, s)
+# define MSGPACK_PP_WHILE_111(p, o, s) MSGPACK_PP_WHILE_111_C(MSGPACK_PP_BOOL(p##(112, s)), p, o, s)
+# define MSGPACK_PP_WHILE_112(p, o, s) MSGPACK_PP_WHILE_112_C(MSGPACK_PP_BOOL(p##(113, s)), p, o, s)
+# define MSGPACK_PP_WHILE_113(p, o, s) MSGPACK_PP_WHILE_113_C(MSGPACK_PP_BOOL(p##(114, s)), p, o, s)
+# define MSGPACK_PP_WHILE_114(p, o, s) MSGPACK_PP_WHILE_114_C(MSGPACK_PP_BOOL(p##(115, s)), p, o, s)
+# define MSGPACK_PP_WHILE_115(p, o, s) MSGPACK_PP_WHILE_115_C(MSGPACK_PP_BOOL(p##(116, s)), p, o, s)
+# define MSGPACK_PP_WHILE_116(p, o, s) MSGPACK_PP_WHILE_116_C(MSGPACK_PP_BOOL(p##(117, s)), p, o, s)
+# define MSGPACK_PP_WHILE_117(p, o, s) MSGPACK_PP_WHILE_117_C(MSGPACK_PP_BOOL(p##(118, s)), p, o, s)
+# define MSGPACK_PP_WHILE_118(p, o, s) MSGPACK_PP_WHILE_118_C(MSGPACK_PP_BOOL(p##(119, s)), p, o, s)
+# define MSGPACK_PP_WHILE_119(p, o, s) MSGPACK_PP_WHILE_119_C(MSGPACK_PP_BOOL(p##(120, s)), p, o, s)
+# define MSGPACK_PP_WHILE_120(p, o, s) MSGPACK_PP_WHILE_120_C(MSGPACK_PP_BOOL(p##(121, s)), p, o, s)
+# define MSGPACK_PP_WHILE_121(p, o, s) MSGPACK_PP_WHILE_121_C(MSGPACK_PP_BOOL(p##(122, s)), p, o, s)
+# define MSGPACK_PP_WHILE_122(p, o, s) MSGPACK_PP_WHILE_122_C(MSGPACK_PP_BOOL(p##(123, s)), p, o, s)
+# define MSGPACK_PP_WHILE_123(p, o, s) MSGPACK_PP_WHILE_123_C(MSGPACK_PP_BOOL(p##(124, s)), p, o, s)
+# define MSGPACK_PP_WHILE_124(p, o, s) MSGPACK_PP_WHILE_124_C(MSGPACK_PP_BOOL(p##(125, s)), p, o, s)
+# define MSGPACK_PP_WHILE_125(p, o, s) MSGPACK_PP_WHILE_125_C(MSGPACK_PP_BOOL(p##(126, s)), p, o, s)
+# define MSGPACK_PP_WHILE_126(p, o, s) MSGPACK_PP_WHILE_126_C(MSGPACK_PP_BOOL(p##(127, s)), p, o, s)
+# define MSGPACK_PP_WHILE_127(p, o, s) MSGPACK_PP_WHILE_127_C(MSGPACK_PP_BOOL(p##(128, s)), p, o, s)
+# define MSGPACK_PP_WHILE_128(p, o, s) MSGPACK_PP_WHILE_128_C(MSGPACK_PP_BOOL(p##(129, s)), p, o, s)
+# define MSGPACK_PP_WHILE_129(p, o, s) MSGPACK_PP_WHILE_129_C(MSGPACK_PP_BOOL(p##(130, s)), p, o, s)
+# define MSGPACK_PP_WHILE_130(p, o, s) MSGPACK_PP_WHILE_130_C(MSGPACK_PP_BOOL(p##(131, s)), p, o, s)
+# define MSGPACK_PP_WHILE_131(p, o, s) MSGPACK_PP_WHILE_131_C(MSGPACK_PP_BOOL(p##(132, s)), p, o, s)
+# define MSGPACK_PP_WHILE_132(p, o, s) MSGPACK_PP_WHILE_132_C(MSGPACK_PP_BOOL(p##(133, s)), p, o, s)
+# define MSGPACK_PP_WHILE_133(p, o, s) MSGPACK_PP_WHILE_133_C(MSGPACK_PP_BOOL(p##(134, s)), p, o, s)
+# define MSGPACK_PP_WHILE_134(p, o, s) MSGPACK_PP_WHILE_134_C(MSGPACK_PP_BOOL(p##(135, s)), p, o, s)
+# define MSGPACK_PP_WHILE_135(p, o, s) MSGPACK_PP_WHILE_135_C(MSGPACK_PP_BOOL(p##(136, s)), p, o, s)
+# define MSGPACK_PP_WHILE_136(p, o, s) MSGPACK_PP_WHILE_136_C(MSGPACK_PP_BOOL(p##(137, s)), p, o, s)
+# define MSGPACK_PP_WHILE_137(p, o, s) MSGPACK_PP_WHILE_137_C(MSGPACK_PP_BOOL(p##(138, s)), p, o, s)
+# define MSGPACK_PP_WHILE_138(p, o, s) MSGPACK_PP_WHILE_138_C(MSGPACK_PP_BOOL(p##(139, s)), p, o, s)
+# define MSGPACK_PP_WHILE_139(p, o, s) MSGPACK_PP_WHILE_139_C(MSGPACK_PP_BOOL(p##(140, s)), p, o, s)
+# define MSGPACK_PP_WHILE_140(p, o, s) MSGPACK_PP_WHILE_140_C(MSGPACK_PP_BOOL(p##(141, s)), p, o, s)
+# define MSGPACK_PP_WHILE_141(p, o, s) MSGPACK_PP_WHILE_141_C(MSGPACK_PP_BOOL(p##(142, s)), p, o, s)
+# define MSGPACK_PP_WHILE_142(p, o, s) MSGPACK_PP_WHILE_142_C(MSGPACK_PP_BOOL(p##(143, s)), p, o, s)
+# define MSGPACK_PP_WHILE_143(p, o, s) MSGPACK_PP_WHILE_143_C(MSGPACK_PP_BOOL(p##(144, s)), p, o, s)
+# define MSGPACK_PP_WHILE_144(p, o, s) MSGPACK_PP_WHILE_144_C(MSGPACK_PP_BOOL(p##(145, s)), p, o, s)
+# define MSGPACK_PP_WHILE_145(p, o, s) MSGPACK_PP_WHILE_145_C(MSGPACK_PP_BOOL(p##(146, s)), p, o, s)
+# define MSGPACK_PP_WHILE_146(p, o, s) MSGPACK_PP_WHILE_146_C(MSGPACK_PP_BOOL(p##(147, s)), p, o, s)
+# define MSGPACK_PP_WHILE_147(p, o, s) MSGPACK_PP_WHILE_147_C(MSGPACK_PP_BOOL(p##(148, s)), p, o, s)
+# define MSGPACK_PP_WHILE_148(p, o, s) MSGPACK_PP_WHILE_148_C(MSGPACK_PP_BOOL(p##(149, s)), p, o, s)
+# define MSGPACK_PP_WHILE_149(p, o, s) MSGPACK_PP_WHILE_149_C(MSGPACK_PP_BOOL(p##(150, s)), p, o, s)
+# define MSGPACK_PP_WHILE_150(p, o, s) MSGPACK_PP_WHILE_150_C(MSGPACK_PP_BOOL(p##(151, s)), p, o, s)
+# define MSGPACK_PP_WHILE_151(p, o, s) MSGPACK_PP_WHILE_151_C(MSGPACK_PP_BOOL(p##(152, s)), p, o, s)
+# define MSGPACK_PP_WHILE_152(p, o, s) MSGPACK_PP_WHILE_152_C(MSGPACK_PP_BOOL(p##(153, s)), p, o, s)
+# define MSGPACK_PP_WHILE_153(p, o, s) MSGPACK_PP_WHILE_153_C(MSGPACK_PP_BOOL(p##(154, s)), p, o, s)
+# define MSGPACK_PP_WHILE_154(p, o, s) MSGPACK_PP_WHILE_154_C(MSGPACK_PP_BOOL(p##(155, s)), p, o, s)
+# define MSGPACK_PP_WHILE_155(p, o, s) MSGPACK_PP_WHILE_155_C(MSGPACK_PP_BOOL(p##(156, s)), p, o, s)
+# define MSGPACK_PP_WHILE_156(p, o, s) MSGPACK_PP_WHILE_156_C(MSGPACK_PP_BOOL(p##(157, s)), p, o, s)
+# define MSGPACK_PP_WHILE_157(p, o, s) MSGPACK_PP_WHILE_157_C(MSGPACK_PP_BOOL(p##(158, s)), p, o, s)
+# define MSGPACK_PP_WHILE_158(p, o, s) MSGPACK_PP_WHILE_158_C(MSGPACK_PP_BOOL(p##(159, s)), p, o, s)
+# define MSGPACK_PP_WHILE_159(p, o, s) MSGPACK_PP_WHILE_159_C(MSGPACK_PP_BOOL(p##(160, s)), p, o, s)
+# define MSGPACK_PP_WHILE_160(p, o, s) MSGPACK_PP_WHILE_160_C(MSGPACK_PP_BOOL(p##(161, s)), p, o, s)
+# define MSGPACK_PP_WHILE_161(p, o, s) MSGPACK_PP_WHILE_161_C(MSGPACK_PP_BOOL(p##(162, s)), p, o, s)
+# define MSGPACK_PP_WHILE_162(p, o, s) MSGPACK_PP_WHILE_162_C(MSGPACK_PP_BOOL(p##(163, s)), p, o, s)
+# define MSGPACK_PP_WHILE_163(p, o, s) MSGPACK_PP_WHILE_163_C(MSGPACK_PP_BOOL(p##(164, s)), p, o, s)
+# define MSGPACK_PP_WHILE_164(p, o, s) MSGPACK_PP_WHILE_164_C(MSGPACK_PP_BOOL(p##(165, s)), p, o, s)
+# define MSGPACK_PP_WHILE_165(p, o, s) MSGPACK_PP_WHILE_165_C(MSGPACK_PP_BOOL(p##(166, s)), p, o, s)
+# define MSGPACK_PP_WHILE_166(p, o, s) MSGPACK_PP_WHILE_166_C(MSGPACK_PP_BOOL(p##(167, s)), p, o, s)
+# define MSGPACK_PP_WHILE_167(p, o, s) MSGPACK_PP_WHILE_167_C(MSGPACK_PP_BOOL(p##(168, s)), p, o, s)
+# define MSGPACK_PP_WHILE_168(p, o, s) MSGPACK_PP_WHILE_168_C(MSGPACK_PP_BOOL(p##(169, s)), p, o, s)
+# define MSGPACK_PP_WHILE_169(p, o, s) MSGPACK_PP_WHILE_169_C(MSGPACK_PP_BOOL(p##(170, s)), p, o, s)
+# define MSGPACK_PP_WHILE_170(p, o, s) MSGPACK_PP_WHILE_170_C(MSGPACK_PP_BOOL(p##(171, s)), p, o, s)
+# define MSGPACK_PP_WHILE_171(p, o, s) MSGPACK_PP_WHILE_171_C(MSGPACK_PP_BOOL(p##(172, s)), p, o, s)
+# define MSGPACK_PP_WHILE_172(p, o, s) MSGPACK_PP_WHILE_172_C(MSGPACK_PP_BOOL(p##(173, s)), p, o, s)
+# define MSGPACK_PP_WHILE_173(p, o, s) MSGPACK_PP_WHILE_173_C(MSGPACK_PP_BOOL(p##(174, s)), p, o, s)
+# define MSGPACK_PP_WHILE_174(p, o, s) MSGPACK_PP_WHILE_174_C(MSGPACK_PP_BOOL(p##(175, s)), p, o, s)
+# define MSGPACK_PP_WHILE_175(p, o, s) MSGPACK_PP_WHILE_175_C(MSGPACK_PP_BOOL(p##(176, s)), p, o, s)
+# define MSGPACK_PP_WHILE_176(p, o, s) MSGPACK_PP_WHILE_176_C(MSGPACK_PP_BOOL(p##(177, s)), p, o, s)
+# define MSGPACK_PP_WHILE_177(p, o, s) MSGPACK_PP_WHILE_177_C(MSGPACK_PP_BOOL(p##(178, s)), p, o, s)
+# define MSGPACK_PP_WHILE_178(p, o, s) MSGPACK_PP_WHILE_178_C(MSGPACK_PP_BOOL(p##(179, s)), p, o, s)
+# define MSGPACK_PP_WHILE_179(p, o, s) MSGPACK_PP_WHILE_179_C(MSGPACK_PP_BOOL(p##(180, s)), p, o, s)
+# define MSGPACK_PP_WHILE_180(p, o, s) MSGPACK_PP_WHILE_180_C(MSGPACK_PP_BOOL(p##(181, s)), p, o, s)
+# define MSGPACK_PP_WHILE_181(p, o, s) MSGPACK_PP_WHILE_181_C(MSGPACK_PP_BOOL(p##(182, s)), p, o, s)
+# define MSGPACK_PP_WHILE_182(p, o, s) MSGPACK_PP_WHILE_182_C(MSGPACK_PP_BOOL(p##(183, s)), p, o, s)
+# define MSGPACK_PP_WHILE_183(p, o, s) MSGPACK_PP_WHILE_183_C(MSGPACK_PP_BOOL(p##(184, s)), p, o, s)
+# define MSGPACK_PP_WHILE_184(p, o, s) MSGPACK_PP_WHILE_184_C(MSGPACK_PP_BOOL(p##(185, s)), p, o, s)
+# define MSGPACK_PP_WHILE_185(p, o, s) MSGPACK_PP_WHILE_185_C(MSGPACK_PP_BOOL(p##(186, s)), p, o, s)
+# define MSGPACK_PP_WHILE_186(p, o, s) MSGPACK_PP_WHILE_186_C(MSGPACK_PP_BOOL(p##(187, s)), p, o, s)
+# define MSGPACK_PP_WHILE_187(p, o, s) MSGPACK_PP_WHILE_187_C(MSGPACK_PP_BOOL(p##(188, s)), p, o, s)
+# define MSGPACK_PP_WHILE_188(p, o, s) MSGPACK_PP_WHILE_188_C(MSGPACK_PP_BOOL(p##(189, s)), p, o, s)
+# define MSGPACK_PP_WHILE_189(p, o, s) MSGPACK_PP_WHILE_189_C(MSGPACK_PP_BOOL(p##(190, s)), p, o, s)
+# define MSGPACK_PP_WHILE_190(p, o, s) MSGPACK_PP_WHILE_190_C(MSGPACK_PP_BOOL(p##(191, s)), p, o, s)
+# define MSGPACK_PP_WHILE_191(p, o, s) MSGPACK_PP_WHILE_191_C(MSGPACK_PP_BOOL(p##(192, s)), p, o, s)
+# define MSGPACK_PP_WHILE_192(p, o, s) MSGPACK_PP_WHILE_192_C(MSGPACK_PP_BOOL(p##(193, s)), p, o, s)
+# define MSGPACK_PP_WHILE_193(p, o, s) MSGPACK_PP_WHILE_193_C(MSGPACK_PP_BOOL(p##(194, s)), p, o, s)
+# define MSGPACK_PP_WHILE_194(p, o, s) MSGPACK_PP_WHILE_194_C(MSGPACK_PP_BOOL(p##(195, s)), p, o, s)
+# define MSGPACK_PP_WHILE_195(p, o, s) MSGPACK_PP_WHILE_195_C(MSGPACK_PP_BOOL(p##(196, s)), p, o, s)
+# define MSGPACK_PP_WHILE_196(p, o, s) MSGPACK_PP_WHILE_196_C(MSGPACK_PP_BOOL(p##(197, s)), p, o, s)
+# define MSGPACK_PP_WHILE_197(p, o, s) MSGPACK_PP_WHILE_197_C(MSGPACK_PP_BOOL(p##(198, s)), p, o, s)
+# define MSGPACK_PP_WHILE_198(p, o, s) MSGPACK_PP_WHILE_198_C(MSGPACK_PP_BOOL(p##(199, s)), p, o, s)
+# define MSGPACK_PP_WHILE_199(p, o, s) MSGPACK_PP_WHILE_199_C(MSGPACK_PP_BOOL(p##(200, s)), p, o, s)
+# define MSGPACK_PP_WHILE_200(p, o, s) MSGPACK_PP_WHILE_200_C(MSGPACK_PP_BOOL(p##(201, s)), p, o, s)
+# define MSGPACK_PP_WHILE_201(p, o, s) MSGPACK_PP_WHILE_201_C(MSGPACK_PP_BOOL(p##(202, s)), p, o, s)
+# define MSGPACK_PP_WHILE_202(p, o, s) MSGPACK_PP_WHILE_202_C(MSGPACK_PP_BOOL(p##(203, s)), p, o, s)
+# define MSGPACK_PP_WHILE_203(p, o, s) MSGPACK_PP_WHILE_203_C(MSGPACK_PP_BOOL(p##(204, s)), p, o, s)
+# define MSGPACK_PP_WHILE_204(p, o, s) MSGPACK_PP_WHILE_204_C(MSGPACK_PP_BOOL(p##(205, s)), p, o, s)
+# define MSGPACK_PP_WHILE_205(p, o, s) MSGPACK_PP_WHILE_205_C(MSGPACK_PP_BOOL(p##(206, s)), p, o, s)
+# define MSGPACK_PP_WHILE_206(p, o, s) MSGPACK_PP_WHILE_206_C(MSGPACK_PP_BOOL(p##(207, s)), p, o, s)
+# define MSGPACK_PP_WHILE_207(p, o, s) MSGPACK_PP_WHILE_207_C(MSGPACK_PP_BOOL(p##(208, s)), p, o, s)
+# define MSGPACK_PP_WHILE_208(p, o, s) MSGPACK_PP_WHILE_208_C(MSGPACK_PP_BOOL(p##(209, s)), p, o, s)
+# define MSGPACK_PP_WHILE_209(p, o, s) MSGPACK_PP_WHILE_209_C(MSGPACK_PP_BOOL(p##(210, s)), p, o, s)
+# define MSGPACK_PP_WHILE_210(p, o, s) MSGPACK_PP_WHILE_210_C(MSGPACK_PP_BOOL(p##(211, s)), p, o, s)
+# define MSGPACK_PP_WHILE_211(p, o, s) MSGPACK_PP_WHILE_211_C(MSGPACK_PP_BOOL(p##(212, s)), p, o, s)
+# define MSGPACK_PP_WHILE_212(p, o, s) MSGPACK_PP_WHILE_212_C(MSGPACK_PP_BOOL(p##(213, s)), p, o, s)
+# define MSGPACK_PP_WHILE_213(p, o, s) MSGPACK_PP_WHILE_213_C(MSGPACK_PP_BOOL(p##(214, s)), p, o, s)
+# define MSGPACK_PP_WHILE_214(p, o, s) MSGPACK_PP_WHILE_214_C(MSGPACK_PP_BOOL(p##(215, s)), p, o, s)
+# define MSGPACK_PP_WHILE_215(p, o, s) MSGPACK_PP_WHILE_215_C(MSGPACK_PP_BOOL(p##(216, s)), p, o, s)
+# define MSGPACK_PP_WHILE_216(p, o, s) MSGPACK_PP_WHILE_216_C(MSGPACK_PP_BOOL(p##(217, s)), p, o, s)
+# define MSGPACK_PP_WHILE_217(p, o, s) MSGPACK_PP_WHILE_217_C(MSGPACK_PP_BOOL(p##(218, s)), p, o, s)
+# define MSGPACK_PP_WHILE_218(p, o, s) MSGPACK_PP_WHILE_218_C(MSGPACK_PP_BOOL(p##(219, s)), p, o, s)
+# define MSGPACK_PP_WHILE_219(p, o, s) MSGPACK_PP_WHILE_219_C(MSGPACK_PP_BOOL(p##(220, s)), p, o, s)
+# define MSGPACK_PP_WHILE_220(p, o, s) MSGPACK_PP_WHILE_220_C(MSGPACK_PP_BOOL(p##(221, s)), p, o, s)
+# define MSGPACK_PP_WHILE_221(p, o, s) MSGPACK_PP_WHILE_221_C(MSGPACK_PP_BOOL(p##(222, s)), p, o, s)
+# define MSGPACK_PP_WHILE_222(p, o, s) MSGPACK_PP_WHILE_222_C(MSGPACK_PP_BOOL(p##(223, s)), p, o, s)
+# define MSGPACK_PP_WHILE_223(p, o, s) MSGPACK_PP_WHILE_223_C(MSGPACK_PP_BOOL(p##(224, s)), p, o, s)
+# define MSGPACK_PP_WHILE_224(p, o, s) MSGPACK_PP_WHILE_224_C(MSGPACK_PP_BOOL(p##(225, s)), p, o, s)
+# define MSGPACK_PP_WHILE_225(p, o, s) MSGPACK_PP_WHILE_225_C(MSGPACK_PP_BOOL(p##(226, s)), p, o, s)
+# define MSGPACK_PP_WHILE_226(p, o, s) MSGPACK_PP_WHILE_226_C(MSGPACK_PP_BOOL(p##(227, s)), p, o, s)
+# define MSGPACK_PP_WHILE_227(p, o, s) MSGPACK_PP_WHILE_227_C(MSGPACK_PP_BOOL(p##(228, s)), p, o, s)
+# define MSGPACK_PP_WHILE_228(p, o, s) MSGPACK_PP_WHILE_228_C(MSGPACK_PP_BOOL(p##(229, s)), p, o, s)
+# define MSGPACK_PP_WHILE_229(p, o, s) MSGPACK_PP_WHILE_229_C(MSGPACK_PP_BOOL(p##(230, s)), p, o, s)
+# define MSGPACK_PP_WHILE_230(p, o, s) MSGPACK_PP_WHILE_230_C(MSGPACK_PP_BOOL(p##(231, s)), p, o, s)
+# define MSGPACK_PP_WHILE_231(p, o, s) MSGPACK_PP_WHILE_231_C(MSGPACK_PP_BOOL(p##(232, s)), p, o, s)
+# define MSGPACK_PP_WHILE_232(p, o, s) MSGPACK_PP_WHILE_232_C(MSGPACK_PP_BOOL(p##(233, s)), p, o, s)
+# define MSGPACK_PP_WHILE_233(p, o, s) MSGPACK_PP_WHILE_233_C(MSGPACK_PP_BOOL(p##(234, s)), p, o, s)
+# define MSGPACK_PP_WHILE_234(p, o, s) MSGPACK_PP_WHILE_234_C(MSGPACK_PP_BOOL(p##(235, s)), p, o, s)
+# define MSGPACK_PP_WHILE_235(p, o, s) MSGPACK_PP_WHILE_235_C(MSGPACK_PP_BOOL(p##(236, s)), p, o, s)
+# define MSGPACK_PP_WHILE_236(p, o, s) MSGPACK_PP_WHILE_236_C(MSGPACK_PP_BOOL(p##(237, s)), p, o, s)
+# define MSGPACK_PP_WHILE_237(p, o, s) MSGPACK_PP_WHILE_237_C(MSGPACK_PP_BOOL(p##(238, s)), p, o, s)
+# define MSGPACK_PP_WHILE_238(p, o, s) MSGPACK_PP_WHILE_238_C(MSGPACK_PP_BOOL(p##(239, s)), p, o, s)
+# define MSGPACK_PP_WHILE_239(p, o, s) MSGPACK_PP_WHILE_239_C(MSGPACK_PP_BOOL(p##(240, s)), p, o, s)
+# define MSGPACK_PP_WHILE_240(p, o, s) MSGPACK_PP_WHILE_240_C(MSGPACK_PP_BOOL(p##(241, s)), p, o, s)
+# define MSGPACK_PP_WHILE_241(p, o, s) MSGPACK_PP_WHILE_241_C(MSGPACK_PP_BOOL(p##(242, s)), p, o, s)
+# define MSGPACK_PP_WHILE_242(p, o, s) MSGPACK_PP_WHILE_242_C(MSGPACK_PP_BOOL(p##(243, s)), p, o, s)
+# define MSGPACK_PP_WHILE_243(p, o, s) MSGPACK_PP_WHILE_243_C(MSGPACK_PP_BOOL(p##(244, s)), p, o, s)
+# define MSGPACK_PP_WHILE_244(p, o, s) MSGPACK_PP_WHILE_244_C(MSGPACK_PP_BOOL(p##(245, s)), p, o, s)
+# define MSGPACK_PP_WHILE_245(p, o, s) MSGPACK_PP_WHILE_245_C(MSGPACK_PP_BOOL(p##(246, s)), p, o, s)
+# define MSGPACK_PP_WHILE_246(p, o, s) MSGPACK_PP_WHILE_246_C(MSGPACK_PP_BOOL(p##(247, s)), p, o, s)
+# define MSGPACK_PP_WHILE_247(p, o, s) MSGPACK_PP_WHILE_247_C(MSGPACK_PP_BOOL(p##(248, s)), p, o, s)
+# define MSGPACK_PP_WHILE_248(p, o, s) MSGPACK_PP_WHILE_248_C(MSGPACK_PP_BOOL(p##(249, s)), p, o, s)
+# define MSGPACK_PP_WHILE_249(p, o, s) MSGPACK_PP_WHILE_249_C(MSGPACK_PP_BOOL(p##(250, s)), p, o, s)
+# define MSGPACK_PP_WHILE_250(p, o, s) MSGPACK_PP_WHILE_250_C(MSGPACK_PP_BOOL(p##(251, s)), p, o, s)
+# define MSGPACK_PP_WHILE_251(p, o, s) MSGPACK_PP_WHILE_251_C(MSGPACK_PP_BOOL(p##(252, s)), p, o, s)
+# define MSGPACK_PP_WHILE_252(p, o, s) MSGPACK_PP_WHILE_252_C(MSGPACK_PP_BOOL(p##(253, s)), p, o, s)
+# define MSGPACK_PP_WHILE_253(p, o, s) MSGPACK_PP_WHILE_253_C(MSGPACK_PP_BOOL(p##(254, s)), p, o, s)
+# define MSGPACK_PP_WHILE_254(p, o, s) MSGPACK_PP_WHILE_254_C(MSGPACK_PP_BOOL(p##(255, s)), p, o, s)
+# define MSGPACK_PP_WHILE_255(p, o, s) MSGPACK_PP_WHILE_255_C(MSGPACK_PP_BOOL(p##(256, s)), p, o, s)
+# define MSGPACK_PP_WHILE_256(p, o, s) MSGPACK_PP_WHILE_256_C(MSGPACK_PP_BOOL(p##(257, s)), p, o, s)
+#
+# define MSGPACK_PP_WHILE_1_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_2, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(2, s))
+# define MSGPACK_PP_WHILE_2_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_3, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(3, s))
+# define MSGPACK_PP_WHILE_3_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_4, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(4, s))
+# define MSGPACK_PP_WHILE_4_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_5, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(5, s))
+# define MSGPACK_PP_WHILE_5_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_6, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(6, s))
+# define MSGPACK_PP_WHILE_6_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_7, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(7, s))
+# define MSGPACK_PP_WHILE_7_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_8, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(8, s))
+# define MSGPACK_PP_WHILE_8_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_9, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(9, s))
+# define MSGPACK_PP_WHILE_9_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_10, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(10, s))
+# define MSGPACK_PP_WHILE_10_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_11, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(11, s))
+# define MSGPACK_PP_WHILE_11_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_12, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(12, s))
+# define MSGPACK_PP_WHILE_12_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_13, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(13, s))
+# define MSGPACK_PP_WHILE_13_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_14, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(14, s))
+# define MSGPACK_PP_WHILE_14_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_15, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(15, s))
+# define MSGPACK_PP_WHILE_15_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_16, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(16, s))
+# define MSGPACK_PP_WHILE_16_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_17, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(17, s))
+# define MSGPACK_PP_WHILE_17_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_18, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(18, s))
+# define MSGPACK_PP_WHILE_18_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_19, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(19, s))
+# define MSGPACK_PP_WHILE_19_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_20, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(20, s))
+# define MSGPACK_PP_WHILE_20_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_21, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(21, s))
+# define MSGPACK_PP_WHILE_21_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_22, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(22, s))
+# define MSGPACK_PP_WHILE_22_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_23, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(23, s))
+# define MSGPACK_PP_WHILE_23_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_24, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(24, s))
+# define MSGPACK_PP_WHILE_24_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_25, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(25, s))
+# define MSGPACK_PP_WHILE_25_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_26, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(26, s))
+# define MSGPACK_PP_WHILE_26_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_27, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(27, s))
+# define MSGPACK_PP_WHILE_27_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_28, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(28, s))
+# define MSGPACK_PP_WHILE_28_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_29, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(29, s))
+# define MSGPACK_PP_WHILE_29_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_30, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(30, s))
+# define MSGPACK_PP_WHILE_30_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_31, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(31, s))
+# define MSGPACK_PP_WHILE_31_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_32, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(32, s))
+# define MSGPACK_PP_WHILE_32_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_33, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(33, s))
+# define MSGPACK_PP_WHILE_33_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_34, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(34, s))
+# define MSGPACK_PP_WHILE_34_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_35, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(35, s))
+# define MSGPACK_PP_WHILE_35_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_36, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(36, s))
+# define MSGPACK_PP_WHILE_36_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_37, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(37, s))
+# define MSGPACK_PP_WHILE_37_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_38, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(38, s))
+# define MSGPACK_PP_WHILE_38_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_39, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(39, s))
+# define MSGPACK_PP_WHILE_39_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_40, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(40, s))
+# define MSGPACK_PP_WHILE_40_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_41, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(41, s))
+# define MSGPACK_PP_WHILE_41_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_42, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(42, s))
+# define MSGPACK_PP_WHILE_42_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_43, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(43, s))
+# define MSGPACK_PP_WHILE_43_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_44, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(44, s))
+# define MSGPACK_PP_WHILE_44_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_45, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(45, s))
+# define MSGPACK_PP_WHILE_45_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_46, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(46, s))
+# define MSGPACK_PP_WHILE_46_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_47, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(47, s))
+# define MSGPACK_PP_WHILE_47_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_48, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(48, s))
+# define MSGPACK_PP_WHILE_48_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_49, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(49, s))
+# define MSGPACK_PP_WHILE_49_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_50, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(50, s))
+# define MSGPACK_PP_WHILE_50_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_51, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(51, s))
+# define MSGPACK_PP_WHILE_51_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_52, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(52, s))
+# define MSGPACK_PP_WHILE_52_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_53, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(53, s))
+# define MSGPACK_PP_WHILE_53_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_54, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(54, s))
+# define MSGPACK_PP_WHILE_54_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_55, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(55, s))
+# define MSGPACK_PP_WHILE_55_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_56, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(56, s))
+# define MSGPACK_PP_WHILE_56_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_57, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(57, s))
+# define MSGPACK_PP_WHILE_57_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_58, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(58, s))
+# define MSGPACK_PP_WHILE_58_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_59, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(59, s))
+# define MSGPACK_PP_WHILE_59_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_60, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(60, s))
+# define MSGPACK_PP_WHILE_60_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_61, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(61, s))
+# define MSGPACK_PP_WHILE_61_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_62, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(62, s))
+# define MSGPACK_PP_WHILE_62_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_63, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(63, s))
+# define MSGPACK_PP_WHILE_63_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_64, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(64, s))
+# define MSGPACK_PP_WHILE_64_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_65, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(65, s))
+# define MSGPACK_PP_WHILE_65_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_66, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(66, s))
+# define MSGPACK_PP_WHILE_66_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_67, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(67, s))
+# define MSGPACK_PP_WHILE_67_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_68, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(68, s))
+# define MSGPACK_PP_WHILE_68_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_69, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(69, s))
+# define MSGPACK_PP_WHILE_69_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_70, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(70, s))
+# define MSGPACK_PP_WHILE_70_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_71, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(71, s))
+# define MSGPACK_PP_WHILE_71_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_72, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(72, s))
+# define MSGPACK_PP_WHILE_72_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_73, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(73, s))
+# define MSGPACK_PP_WHILE_73_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_74, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(74, s))
+# define MSGPACK_PP_WHILE_74_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_75, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(75, s))
+# define MSGPACK_PP_WHILE_75_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_76, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(76, s))
+# define MSGPACK_PP_WHILE_76_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_77, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(77, s))
+# define MSGPACK_PP_WHILE_77_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_78, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(78, s))
+# define MSGPACK_PP_WHILE_78_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_79, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(79, s))
+# define MSGPACK_PP_WHILE_79_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_80, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(80, s))
+# define MSGPACK_PP_WHILE_80_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_81, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(81, s))
+# define MSGPACK_PP_WHILE_81_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_82, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(82, s))
+# define MSGPACK_PP_WHILE_82_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_83, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(83, s))
+# define MSGPACK_PP_WHILE_83_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_84, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(84, s))
+# define MSGPACK_PP_WHILE_84_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_85, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(85, s))
+# define MSGPACK_PP_WHILE_85_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_86, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(86, s))
+# define MSGPACK_PP_WHILE_86_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_87, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(87, s))
+# define MSGPACK_PP_WHILE_87_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_88, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(88, s))
+# define MSGPACK_PP_WHILE_88_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_89, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(89, s))
+# define MSGPACK_PP_WHILE_89_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_90, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(90, s))
+# define MSGPACK_PP_WHILE_90_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_91, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(91, s))
+# define MSGPACK_PP_WHILE_91_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_92, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(92, s))
+# define MSGPACK_PP_WHILE_92_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_93, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(93, s))
+# define MSGPACK_PP_WHILE_93_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_94, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(94, s))
+# define MSGPACK_PP_WHILE_94_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_95, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(95, s))
+# define MSGPACK_PP_WHILE_95_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_96, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(96, s))
+# define MSGPACK_PP_WHILE_96_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_97, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(97, s))
+# define MSGPACK_PP_WHILE_97_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_98, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(98, s))
+# define MSGPACK_PP_WHILE_98_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_99, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(99, s))
+# define MSGPACK_PP_WHILE_99_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_100, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(100, s))
+# define MSGPACK_PP_WHILE_100_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_101, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(101, s))
+# define MSGPACK_PP_WHILE_101_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_102, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(102, s))
+# define MSGPACK_PP_WHILE_102_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_103, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(103, s))
+# define MSGPACK_PP_WHILE_103_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_104, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(104, s))
+# define MSGPACK_PP_WHILE_104_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_105, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(105, s))
+# define MSGPACK_PP_WHILE_105_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_106, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(106, s))
+# define MSGPACK_PP_WHILE_106_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_107, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(107, s))
+# define MSGPACK_PP_WHILE_107_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_108, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(108, s))
+# define MSGPACK_PP_WHILE_108_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_109, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(109, s))
+# define MSGPACK_PP_WHILE_109_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_110, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(110, s))
+# define MSGPACK_PP_WHILE_110_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_111, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(111, s))
+# define MSGPACK_PP_WHILE_111_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_112, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(112, s))
+# define MSGPACK_PP_WHILE_112_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_113, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(113, s))
+# define MSGPACK_PP_WHILE_113_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_114, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(114, s))
+# define MSGPACK_PP_WHILE_114_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_115, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(115, s))
+# define MSGPACK_PP_WHILE_115_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_116, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(116, s))
+# define MSGPACK_PP_WHILE_116_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_117, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(117, s))
+# define MSGPACK_PP_WHILE_117_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_118, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(118, s))
+# define MSGPACK_PP_WHILE_118_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_119, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(119, s))
+# define MSGPACK_PP_WHILE_119_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_120, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(120, s))
+# define MSGPACK_PP_WHILE_120_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_121, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(121, s))
+# define MSGPACK_PP_WHILE_121_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_122, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(122, s))
+# define MSGPACK_PP_WHILE_122_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_123, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(123, s))
+# define MSGPACK_PP_WHILE_123_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_124, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(124, s))
+# define MSGPACK_PP_WHILE_124_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_125, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(125, s))
+# define MSGPACK_PP_WHILE_125_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_126, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(126, s))
+# define MSGPACK_PP_WHILE_126_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_127, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(127, s))
+# define MSGPACK_PP_WHILE_127_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_128, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(128, s))
+# define MSGPACK_PP_WHILE_128_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_129, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(129, s))
+# define MSGPACK_PP_WHILE_129_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_130, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(130, s))
+# define MSGPACK_PP_WHILE_130_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_131, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(131, s))
+# define MSGPACK_PP_WHILE_131_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_132, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(132, s))
+# define MSGPACK_PP_WHILE_132_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_133, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(133, s))
+# define MSGPACK_PP_WHILE_133_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_134, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(134, s))
+# define MSGPACK_PP_WHILE_134_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_135, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(135, s))
+# define MSGPACK_PP_WHILE_135_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_136, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(136, s))
+# define MSGPACK_PP_WHILE_136_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_137, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(137, s))
+# define MSGPACK_PP_WHILE_137_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_138, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(138, s))
+# define MSGPACK_PP_WHILE_138_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_139, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(139, s))
+# define MSGPACK_PP_WHILE_139_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_140, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(140, s))
+# define MSGPACK_PP_WHILE_140_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_141, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(141, s))
+# define MSGPACK_PP_WHILE_141_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_142, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(142, s))
+# define MSGPACK_PP_WHILE_142_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_143, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(143, s))
+# define MSGPACK_PP_WHILE_143_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_144, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(144, s))
+# define MSGPACK_PP_WHILE_144_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_145, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(145, s))
+# define MSGPACK_PP_WHILE_145_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_146, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(146, s))
+# define MSGPACK_PP_WHILE_146_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_147, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(147, s))
+# define MSGPACK_PP_WHILE_147_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_148, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(148, s))
+# define MSGPACK_PP_WHILE_148_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_149, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(149, s))
+# define MSGPACK_PP_WHILE_149_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_150, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(150, s))
+# define MSGPACK_PP_WHILE_150_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_151, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(151, s))
+# define MSGPACK_PP_WHILE_151_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_152, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(152, s))
+# define MSGPACK_PP_WHILE_152_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_153, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(153, s))
+# define MSGPACK_PP_WHILE_153_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_154, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(154, s))
+# define MSGPACK_PP_WHILE_154_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_155, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(155, s))
+# define MSGPACK_PP_WHILE_155_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_156, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(156, s))
+# define MSGPACK_PP_WHILE_156_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_157, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(157, s))
+# define MSGPACK_PP_WHILE_157_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_158, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(158, s))
+# define MSGPACK_PP_WHILE_158_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_159, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(159, s))
+# define MSGPACK_PP_WHILE_159_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_160, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(160, s))
+# define MSGPACK_PP_WHILE_160_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_161, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(161, s))
+# define MSGPACK_PP_WHILE_161_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_162, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(162, s))
+# define MSGPACK_PP_WHILE_162_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_163, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(163, s))
+# define MSGPACK_PP_WHILE_163_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_164, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(164, s))
+# define MSGPACK_PP_WHILE_164_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_165, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(165, s))
+# define MSGPACK_PP_WHILE_165_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_166, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(166, s))
+# define MSGPACK_PP_WHILE_166_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_167, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(167, s))
+# define MSGPACK_PP_WHILE_167_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_168, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(168, s))
+# define MSGPACK_PP_WHILE_168_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_169, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(169, s))
+# define MSGPACK_PP_WHILE_169_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_170, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(170, s))
+# define MSGPACK_PP_WHILE_170_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_171, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(171, s))
+# define MSGPACK_PP_WHILE_171_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_172, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(172, s))
+# define MSGPACK_PP_WHILE_172_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_173, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(173, s))
+# define MSGPACK_PP_WHILE_173_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_174, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(174, s))
+# define MSGPACK_PP_WHILE_174_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_175, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(175, s))
+# define MSGPACK_PP_WHILE_175_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_176, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(176, s))
+# define MSGPACK_PP_WHILE_176_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_177, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(177, s))
+# define MSGPACK_PP_WHILE_177_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_178, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(178, s))
+# define MSGPACK_PP_WHILE_178_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_179, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(179, s))
+# define MSGPACK_PP_WHILE_179_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_180, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(180, s))
+# define MSGPACK_PP_WHILE_180_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_181, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(181, s))
+# define MSGPACK_PP_WHILE_181_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_182, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(182, s))
+# define MSGPACK_PP_WHILE_182_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_183, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(183, s))
+# define MSGPACK_PP_WHILE_183_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_184, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(184, s))
+# define MSGPACK_PP_WHILE_184_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_185, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(185, s))
+# define MSGPACK_PP_WHILE_185_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_186, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(186, s))
+# define MSGPACK_PP_WHILE_186_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_187, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(187, s))
+# define MSGPACK_PP_WHILE_187_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_188, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(188, s))
+# define MSGPACK_PP_WHILE_188_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_189, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(189, s))
+# define MSGPACK_PP_WHILE_189_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_190, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(190, s))
+# define MSGPACK_PP_WHILE_190_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_191, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(191, s))
+# define MSGPACK_PP_WHILE_191_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_192, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(192, s))
+# define MSGPACK_PP_WHILE_192_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_193, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(193, s))
+# define MSGPACK_PP_WHILE_193_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_194, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(194, s))
+# define MSGPACK_PP_WHILE_194_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_195, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(195, s))
+# define MSGPACK_PP_WHILE_195_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_196, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(196, s))
+# define MSGPACK_PP_WHILE_196_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_197, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(197, s))
+# define MSGPACK_PP_WHILE_197_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_198, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(198, s))
+# define MSGPACK_PP_WHILE_198_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_199, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(199, s))
+# define MSGPACK_PP_WHILE_199_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_200, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(200, s))
+# define MSGPACK_PP_WHILE_200_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_201, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(201, s))
+# define MSGPACK_PP_WHILE_201_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_202, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(202, s))
+# define MSGPACK_PP_WHILE_202_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_203, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(203, s))
+# define MSGPACK_PP_WHILE_203_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_204, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(204, s))
+# define MSGPACK_PP_WHILE_204_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_205, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(205, s))
+# define MSGPACK_PP_WHILE_205_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_206, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(206, s))
+# define MSGPACK_PP_WHILE_206_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_207, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(207, s))
+# define MSGPACK_PP_WHILE_207_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_208, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(208, s))
+# define MSGPACK_PP_WHILE_208_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_209, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(209, s))
+# define MSGPACK_PP_WHILE_209_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_210, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(210, s))
+# define MSGPACK_PP_WHILE_210_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_211, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(211, s))
+# define MSGPACK_PP_WHILE_211_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_212, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(212, s))
+# define MSGPACK_PP_WHILE_212_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_213, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(213, s))
+# define MSGPACK_PP_WHILE_213_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_214, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(214, s))
+# define MSGPACK_PP_WHILE_214_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_215, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(215, s))
+# define MSGPACK_PP_WHILE_215_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_216, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(216, s))
+# define MSGPACK_PP_WHILE_216_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_217, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(217, s))
+# define MSGPACK_PP_WHILE_217_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_218, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(218, s))
+# define MSGPACK_PP_WHILE_218_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_219, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(219, s))
+# define MSGPACK_PP_WHILE_219_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_220, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(220, s))
+# define MSGPACK_PP_WHILE_220_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_221, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(221, s))
+# define MSGPACK_PP_WHILE_221_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_222, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(222, s))
+# define MSGPACK_PP_WHILE_222_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_223, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(223, s))
+# define MSGPACK_PP_WHILE_223_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_224, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(224, s))
+# define MSGPACK_PP_WHILE_224_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_225, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(225, s))
+# define MSGPACK_PP_WHILE_225_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_226, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(226, s))
+# define MSGPACK_PP_WHILE_226_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_227, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(227, s))
+# define MSGPACK_PP_WHILE_227_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_228, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(228, s))
+# define MSGPACK_PP_WHILE_228_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_229, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(229, s))
+# define MSGPACK_PP_WHILE_229_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_230, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(230, s))
+# define MSGPACK_PP_WHILE_230_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_231, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(231, s))
+# define MSGPACK_PP_WHILE_231_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_232, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(232, s))
+# define MSGPACK_PP_WHILE_232_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_233, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(233, s))
+# define MSGPACK_PP_WHILE_233_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_234, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(234, s))
+# define MSGPACK_PP_WHILE_234_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_235, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(235, s))
+# define MSGPACK_PP_WHILE_235_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_236, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(236, s))
+# define MSGPACK_PP_WHILE_236_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_237, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(237, s))
+# define MSGPACK_PP_WHILE_237_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_238, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(238, s))
+# define MSGPACK_PP_WHILE_238_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_239, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(239, s))
+# define MSGPACK_PP_WHILE_239_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_240, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(240, s))
+# define MSGPACK_PP_WHILE_240_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_241, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(241, s))
+# define MSGPACK_PP_WHILE_241_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_242, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(242, s))
+# define MSGPACK_PP_WHILE_242_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_243, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(243, s))
+# define MSGPACK_PP_WHILE_243_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_244, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(244, s))
+# define MSGPACK_PP_WHILE_244_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_245, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(245, s))
+# define MSGPACK_PP_WHILE_245_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_246, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(246, s))
+# define MSGPACK_PP_WHILE_246_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_247, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(247, s))
+# define MSGPACK_PP_WHILE_247_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_248, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(248, s))
+# define MSGPACK_PP_WHILE_248_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_249, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(249, s))
+# define MSGPACK_PP_WHILE_249_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_250, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(250, s))
+# define MSGPACK_PP_WHILE_250_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_251, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(251, s))
+# define MSGPACK_PP_WHILE_251_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_252, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(252, s))
+# define MSGPACK_PP_WHILE_252_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_253, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(253, s))
+# define MSGPACK_PP_WHILE_253_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_254, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(254, s))
+# define MSGPACK_PP_WHILE_254_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_255, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(255, s))
+# define MSGPACK_PP_WHILE_255_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_256, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(256, s))
+# define MSGPACK_PP_WHILE_256_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_257, MSGPACK_PP_TUPLE_ELEM_3_2)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_TUPLE_ELEM_2_1)(257, s))
+#
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/control/detail/edg/while.hpp b/third_party/msgpack/include/msgpack/preprocessor/control/detail/edg/while.hpp
new file mode 100644
index 0000000000..fc1f9584f5
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/control/detail/edg/while.hpp
@@ -0,0 +1,534 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_CONTROL_DETAIL_EDG_WHILE_HPP
+# define MSGPACK_PREPROCESSOR_CONTROL_DETAIL_EDG_WHILE_HPP
+#
+# include <msgpack/preprocessor/control/if.hpp>
+# include <msgpack/preprocessor/tuple/eat.hpp>
+#
+# define MSGPACK_PP_WHILE_1(p, o, s) MSGPACK_PP_WHILE_1_I(p, o, s)
+# define MSGPACK_PP_WHILE_2(p, o, s) MSGPACK_PP_WHILE_2_I(p, o, s)
+# define MSGPACK_PP_WHILE_3(p, o, s) MSGPACK_PP_WHILE_3_I(p, o, s)
+# define MSGPACK_PP_WHILE_4(p, o, s) MSGPACK_PP_WHILE_4_I(p, o, s)
+# define MSGPACK_PP_WHILE_5(p, o, s) MSGPACK_PP_WHILE_5_I(p, o, s)
+# define MSGPACK_PP_WHILE_6(p, o, s) MSGPACK_PP_WHILE_6_I(p, o, s)
+# define MSGPACK_PP_WHILE_7(p, o, s) MSGPACK_PP_WHILE_7_I(p, o, s)
+# define MSGPACK_PP_WHILE_8(p, o, s) MSGPACK_PP_WHILE_8_I(p, o, s)
+# define MSGPACK_PP_WHILE_9(p, o, s) MSGPACK_PP_WHILE_9_I(p, o, s)
+# define MSGPACK_PP_WHILE_10(p, o, s) MSGPACK_PP_WHILE_10_I(p, o, s)
+# define MSGPACK_PP_WHILE_11(p, o, s) MSGPACK_PP_WHILE_11_I(p, o, s)
+# define MSGPACK_PP_WHILE_12(p, o, s) MSGPACK_PP_WHILE_12_I(p, o, s)
+# define MSGPACK_PP_WHILE_13(p, o, s) MSGPACK_PP_WHILE_13_I(p, o, s)
+# define MSGPACK_PP_WHILE_14(p, o, s) MSGPACK_PP_WHILE_14_I(p, o, s)
+# define MSGPACK_PP_WHILE_15(p, o, s) MSGPACK_PP_WHILE_15_I(p, o, s)
+# define MSGPACK_PP_WHILE_16(p, o, s) MSGPACK_PP_WHILE_16_I(p, o, s)
+# define MSGPACK_PP_WHILE_17(p, o, s) MSGPACK_PP_WHILE_17_I(p, o, s)
+# define MSGPACK_PP_WHILE_18(p, o, s) MSGPACK_PP_WHILE_18_I(p, o, s)
+# define MSGPACK_PP_WHILE_19(p, o, s) MSGPACK_PP_WHILE_19_I(p, o, s)
+# define MSGPACK_PP_WHILE_20(p, o, s) MSGPACK_PP_WHILE_20_I(p, o, s)
+# define MSGPACK_PP_WHILE_21(p, o, s) MSGPACK_PP_WHILE_21_I(p, o, s)
+# define MSGPACK_PP_WHILE_22(p, o, s) MSGPACK_PP_WHILE_22_I(p, o, s)
+# define MSGPACK_PP_WHILE_23(p, o, s) MSGPACK_PP_WHILE_23_I(p, o, s)
+# define MSGPACK_PP_WHILE_24(p, o, s) MSGPACK_PP_WHILE_24_I(p, o, s)
+# define MSGPACK_PP_WHILE_25(p, o, s) MSGPACK_PP_WHILE_25_I(p, o, s)
+# define MSGPACK_PP_WHILE_26(p, o, s) MSGPACK_PP_WHILE_26_I(p, o, s)
+# define MSGPACK_PP_WHILE_27(p, o, s) MSGPACK_PP_WHILE_27_I(p, o, s)
+# define MSGPACK_PP_WHILE_28(p, o, s) MSGPACK_PP_WHILE_28_I(p, o, s)
+# define MSGPACK_PP_WHILE_29(p, o, s) MSGPACK_PP_WHILE_29_I(p, o, s)
+# define MSGPACK_PP_WHILE_30(p, o, s) MSGPACK_PP_WHILE_30_I(p, o, s)
+# define MSGPACK_PP_WHILE_31(p, o, s) MSGPACK_PP_WHILE_31_I(p, o, s)
+# define MSGPACK_PP_WHILE_32(p, o, s) MSGPACK_PP_WHILE_32_I(p, o, s)
+# define MSGPACK_PP_WHILE_33(p, o, s) MSGPACK_PP_WHILE_33_I(p, o, s)
+# define MSGPACK_PP_WHILE_34(p, o, s) MSGPACK_PP_WHILE_34_I(p, o, s)
+# define MSGPACK_PP_WHILE_35(p, o, s) MSGPACK_PP_WHILE_35_I(p, o, s)
+# define MSGPACK_PP_WHILE_36(p, o, s) MSGPACK_PP_WHILE_36_I(p, o, s)
+# define MSGPACK_PP_WHILE_37(p, o, s) MSGPACK_PP_WHILE_37_I(p, o, s)
+# define MSGPACK_PP_WHILE_38(p, o, s) MSGPACK_PP_WHILE_38_I(p, o, s)
+# define MSGPACK_PP_WHILE_39(p, o, s) MSGPACK_PP_WHILE_39_I(p, o, s)
+# define MSGPACK_PP_WHILE_40(p, o, s) MSGPACK_PP_WHILE_40_I(p, o, s)
+# define MSGPACK_PP_WHILE_41(p, o, s) MSGPACK_PP_WHILE_41_I(p, o, s)
+# define MSGPACK_PP_WHILE_42(p, o, s) MSGPACK_PP_WHILE_42_I(p, o, s)
+# define MSGPACK_PP_WHILE_43(p, o, s) MSGPACK_PP_WHILE_43_I(p, o, s)
+# define MSGPACK_PP_WHILE_44(p, o, s) MSGPACK_PP_WHILE_44_I(p, o, s)
+# define MSGPACK_PP_WHILE_45(p, o, s) MSGPACK_PP_WHILE_45_I(p, o, s)
+# define MSGPACK_PP_WHILE_46(p, o, s) MSGPACK_PP_WHILE_46_I(p, o, s)
+# define MSGPACK_PP_WHILE_47(p, o, s) MSGPACK_PP_WHILE_47_I(p, o, s)
+# define MSGPACK_PP_WHILE_48(p, o, s) MSGPACK_PP_WHILE_48_I(p, o, s)
+# define MSGPACK_PP_WHILE_49(p, o, s) MSGPACK_PP_WHILE_49_I(p, o, s)
+# define MSGPACK_PP_WHILE_50(p, o, s) MSGPACK_PP_WHILE_50_I(p, o, s)
+# define MSGPACK_PP_WHILE_51(p, o, s) MSGPACK_PP_WHILE_51_I(p, o, s)
+# define MSGPACK_PP_WHILE_52(p, o, s) MSGPACK_PP_WHILE_52_I(p, o, s)
+# define MSGPACK_PP_WHILE_53(p, o, s) MSGPACK_PP_WHILE_53_I(p, o, s)
+# define MSGPACK_PP_WHILE_54(p, o, s) MSGPACK_PP_WHILE_54_I(p, o, s)
+# define MSGPACK_PP_WHILE_55(p, o, s) MSGPACK_PP_WHILE_55_I(p, o, s)
+# define MSGPACK_PP_WHILE_56(p, o, s) MSGPACK_PP_WHILE_56_I(p, o, s)
+# define MSGPACK_PP_WHILE_57(p, o, s) MSGPACK_PP_WHILE_57_I(p, o, s)
+# define MSGPACK_PP_WHILE_58(p, o, s) MSGPACK_PP_WHILE_58_I(p, o, s)
+# define MSGPACK_PP_WHILE_59(p, o, s) MSGPACK_PP_WHILE_59_I(p, o, s)
+# define MSGPACK_PP_WHILE_60(p, o, s) MSGPACK_PP_WHILE_60_I(p, o, s)
+# define MSGPACK_PP_WHILE_61(p, o, s) MSGPACK_PP_WHILE_61_I(p, o, s)
+# define MSGPACK_PP_WHILE_62(p, o, s) MSGPACK_PP_WHILE_62_I(p, o, s)
+# define MSGPACK_PP_WHILE_63(p, o, s) MSGPACK_PP_WHILE_63_I(p, o, s)
+# define MSGPACK_PP_WHILE_64(p, o, s) MSGPACK_PP_WHILE_64_I(p, o, s)
+# define MSGPACK_PP_WHILE_65(p, o, s) MSGPACK_PP_WHILE_65_I(p, o, s)
+# define MSGPACK_PP_WHILE_66(p, o, s) MSGPACK_PP_WHILE_66_I(p, o, s)
+# define MSGPACK_PP_WHILE_67(p, o, s) MSGPACK_PP_WHILE_67_I(p, o, s)
+# define MSGPACK_PP_WHILE_68(p, o, s) MSGPACK_PP_WHILE_68_I(p, o, s)
+# define MSGPACK_PP_WHILE_69(p, o, s) MSGPACK_PP_WHILE_69_I(p, o, s)
+# define MSGPACK_PP_WHILE_70(p, o, s) MSGPACK_PP_WHILE_70_I(p, o, s)
+# define MSGPACK_PP_WHILE_71(p, o, s) MSGPACK_PP_WHILE_71_I(p, o, s)
+# define MSGPACK_PP_WHILE_72(p, o, s) MSGPACK_PP_WHILE_72_I(p, o, s)
+# define MSGPACK_PP_WHILE_73(p, o, s) MSGPACK_PP_WHILE_73_I(p, o, s)
+# define MSGPACK_PP_WHILE_74(p, o, s) MSGPACK_PP_WHILE_74_I(p, o, s)
+# define MSGPACK_PP_WHILE_75(p, o, s) MSGPACK_PP_WHILE_75_I(p, o, s)
+# define MSGPACK_PP_WHILE_76(p, o, s) MSGPACK_PP_WHILE_76_I(p, o, s)
+# define MSGPACK_PP_WHILE_77(p, o, s) MSGPACK_PP_WHILE_77_I(p, o, s)
+# define MSGPACK_PP_WHILE_78(p, o, s) MSGPACK_PP_WHILE_78_I(p, o, s)
+# define MSGPACK_PP_WHILE_79(p, o, s) MSGPACK_PP_WHILE_79_I(p, o, s)
+# define MSGPACK_PP_WHILE_80(p, o, s) MSGPACK_PP_WHILE_80_I(p, o, s)
+# define MSGPACK_PP_WHILE_81(p, o, s) MSGPACK_PP_WHILE_81_I(p, o, s)
+# define MSGPACK_PP_WHILE_82(p, o, s) MSGPACK_PP_WHILE_82_I(p, o, s)
+# define MSGPACK_PP_WHILE_83(p, o, s) MSGPACK_PP_WHILE_83_I(p, o, s)
+# define MSGPACK_PP_WHILE_84(p, o, s) MSGPACK_PP_WHILE_84_I(p, o, s)
+# define MSGPACK_PP_WHILE_85(p, o, s) MSGPACK_PP_WHILE_85_I(p, o, s)
+# define MSGPACK_PP_WHILE_86(p, o, s) MSGPACK_PP_WHILE_86_I(p, o, s)
+# define MSGPACK_PP_WHILE_87(p, o, s) MSGPACK_PP_WHILE_87_I(p, o, s)
+# define MSGPACK_PP_WHILE_88(p, o, s) MSGPACK_PP_WHILE_88_I(p, o, s)
+# define MSGPACK_PP_WHILE_89(p, o, s) MSGPACK_PP_WHILE_89_I(p, o, s)
+# define MSGPACK_PP_WHILE_90(p, o, s) MSGPACK_PP_WHILE_90_I(p, o, s)
+# define MSGPACK_PP_WHILE_91(p, o, s) MSGPACK_PP_WHILE_91_I(p, o, s)
+# define MSGPACK_PP_WHILE_92(p, o, s) MSGPACK_PP_WHILE_92_I(p, o, s)
+# define MSGPACK_PP_WHILE_93(p, o, s) MSGPACK_PP_WHILE_93_I(p, o, s)
+# define MSGPACK_PP_WHILE_94(p, o, s) MSGPACK_PP_WHILE_94_I(p, o, s)
+# define MSGPACK_PP_WHILE_95(p, o, s) MSGPACK_PP_WHILE_95_I(p, o, s)
+# define MSGPACK_PP_WHILE_96(p, o, s) MSGPACK_PP_WHILE_96_I(p, o, s)
+# define MSGPACK_PP_WHILE_97(p, o, s) MSGPACK_PP_WHILE_97_I(p, o, s)
+# define MSGPACK_PP_WHILE_98(p, o, s) MSGPACK_PP_WHILE_98_I(p, o, s)
+# define MSGPACK_PP_WHILE_99(p, o, s) MSGPACK_PP_WHILE_99_I(p, o, s)
+# define MSGPACK_PP_WHILE_100(p, o, s) MSGPACK_PP_WHILE_100_I(p, o, s)
+# define MSGPACK_PP_WHILE_101(p, o, s) MSGPACK_PP_WHILE_101_I(p, o, s)
+# define MSGPACK_PP_WHILE_102(p, o, s) MSGPACK_PP_WHILE_102_I(p, o, s)
+# define MSGPACK_PP_WHILE_103(p, o, s) MSGPACK_PP_WHILE_103_I(p, o, s)
+# define MSGPACK_PP_WHILE_104(p, o, s) MSGPACK_PP_WHILE_104_I(p, o, s)
+# define MSGPACK_PP_WHILE_105(p, o, s) MSGPACK_PP_WHILE_105_I(p, o, s)
+# define MSGPACK_PP_WHILE_106(p, o, s) MSGPACK_PP_WHILE_106_I(p, o, s)
+# define MSGPACK_PP_WHILE_107(p, o, s) MSGPACK_PP_WHILE_107_I(p, o, s)
+# define MSGPACK_PP_WHILE_108(p, o, s) MSGPACK_PP_WHILE_108_I(p, o, s)
+# define MSGPACK_PP_WHILE_109(p, o, s) MSGPACK_PP_WHILE_109_I(p, o, s)
+# define MSGPACK_PP_WHILE_110(p, o, s) MSGPACK_PP_WHILE_110_I(p, o, s)
+# define MSGPACK_PP_WHILE_111(p, o, s) MSGPACK_PP_WHILE_111_I(p, o, s)
+# define MSGPACK_PP_WHILE_112(p, o, s) MSGPACK_PP_WHILE_112_I(p, o, s)
+# define MSGPACK_PP_WHILE_113(p, o, s) MSGPACK_PP_WHILE_113_I(p, o, s)
+# define MSGPACK_PP_WHILE_114(p, o, s) MSGPACK_PP_WHILE_114_I(p, o, s)
+# define MSGPACK_PP_WHILE_115(p, o, s) MSGPACK_PP_WHILE_115_I(p, o, s)
+# define MSGPACK_PP_WHILE_116(p, o, s) MSGPACK_PP_WHILE_116_I(p, o, s)
+# define MSGPACK_PP_WHILE_117(p, o, s) MSGPACK_PP_WHILE_117_I(p, o, s)
+# define MSGPACK_PP_WHILE_118(p, o, s) MSGPACK_PP_WHILE_118_I(p, o, s)
+# define MSGPACK_PP_WHILE_119(p, o, s) MSGPACK_PP_WHILE_119_I(p, o, s)
+# define MSGPACK_PP_WHILE_120(p, o, s) MSGPACK_PP_WHILE_120_I(p, o, s)
+# define MSGPACK_PP_WHILE_121(p, o, s) MSGPACK_PP_WHILE_121_I(p, o, s)
+# define MSGPACK_PP_WHILE_122(p, o, s) MSGPACK_PP_WHILE_122_I(p, o, s)
+# define MSGPACK_PP_WHILE_123(p, o, s) MSGPACK_PP_WHILE_123_I(p, o, s)
+# define MSGPACK_PP_WHILE_124(p, o, s) MSGPACK_PP_WHILE_124_I(p, o, s)
+# define MSGPACK_PP_WHILE_125(p, o, s) MSGPACK_PP_WHILE_125_I(p, o, s)
+# define MSGPACK_PP_WHILE_126(p, o, s) MSGPACK_PP_WHILE_126_I(p, o, s)
+# define MSGPACK_PP_WHILE_127(p, o, s) MSGPACK_PP_WHILE_127_I(p, o, s)
+# define MSGPACK_PP_WHILE_128(p, o, s) MSGPACK_PP_WHILE_128_I(p, o, s)
+# define MSGPACK_PP_WHILE_129(p, o, s) MSGPACK_PP_WHILE_129_I(p, o, s)
+# define MSGPACK_PP_WHILE_130(p, o, s) MSGPACK_PP_WHILE_130_I(p, o, s)
+# define MSGPACK_PP_WHILE_131(p, o, s) MSGPACK_PP_WHILE_131_I(p, o, s)
+# define MSGPACK_PP_WHILE_132(p, o, s) MSGPACK_PP_WHILE_132_I(p, o, s)
+# define MSGPACK_PP_WHILE_133(p, o, s) MSGPACK_PP_WHILE_133_I(p, o, s)
+# define MSGPACK_PP_WHILE_134(p, o, s) MSGPACK_PP_WHILE_134_I(p, o, s)
+# define MSGPACK_PP_WHILE_135(p, o, s) MSGPACK_PP_WHILE_135_I(p, o, s)
+# define MSGPACK_PP_WHILE_136(p, o, s) MSGPACK_PP_WHILE_136_I(p, o, s)
+# define MSGPACK_PP_WHILE_137(p, o, s) MSGPACK_PP_WHILE_137_I(p, o, s)
+# define MSGPACK_PP_WHILE_138(p, o, s) MSGPACK_PP_WHILE_138_I(p, o, s)
+# define MSGPACK_PP_WHILE_139(p, o, s) MSGPACK_PP_WHILE_139_I(p, o, s)
+# define MSGPACK_PP_WHILE_140(p, o, s) MSGPACK_PP_WHILE_140_I(p, o, s)
+# define MSGPACK_PP_WHILE_141(p, o, s) MSGPACK_PP_WHILE_141_I(p, o, s)
+# define MSGPACK_PP_WHILE_142(p, o, s) MSGPACK_PP_WHILE_142_I(p, o, s)
+# define MSGPACK_PP_WHILE_143(p, o, s) MSGPACK_PP_WHILE_143_I(p, o, s)
+# define MSGPACK_PP_WHILE_144(p, o, s) MSGPACK_PP_WHILE_144_I(p, o, s)
+# define MSGPACK_PP_WHILE_145(p, o, s) MSGPACK_PP_WHILE_145_I(p, o, s)
+# define MSGPACK_PP_WHILE_146(p, o, s) MSGPACK_PP_WHILE_146_I(p, o, s)
+# define MSGPACK_PP_WHILE_147(p, o, s) MSGPACK_PP_WHILE_147_I(p, o, s)
+# define MSGPACK_PP_WHILE_148(p, o, s) MSGPACK_PP_WHILE_148_I(p, o, s)
+# define MSGPACK_PP_WHILE_149(p, o, s) MSGPACK_PP_WHILE_149_I(p, o, s)
+# define MSGPACK_PP_WHILE_150(p, o, s) MSGPACK_PP_WHILE_150_I(p, o, s)
+# define MSGPACK_PP_WHILE_151(p, o, s) MSGPACK_PP_WHILE_151_I(p, o, s)
+# define MSGPACK_PP_WHILE_152(p, o, s) MSGPACK_PP_WHILE_152_I(p, o, s)
+# define MSGPACK_PP_WHILE_153(p, o, s) MSGPACK_PP_WHILE_153_I(p, o, s)
+# define MSGPACK_PP_WHILE_154(p, o, s) MSGPACK_PP_WHILE_154_I(p, o, s)
+# define MSGPACK_PP_WHILE_155(p, o, s) MSGPACK_PP_WHILE_155_I(p, o, s)
+# define MSGPACK_PP_WHILE_156(p, o, s) MSGPACK_PP_WHILE_156_I(p, o, s)
+# define MSGPACK_PP_WHILE_157(p, o, s) MSGPACK_PP_WHILE_157_I(p, o, s)
+# define MSGPACK_PP_WHILE_158(p, o, s) MSGPACK_PP_WHILE_158_I(p, o, s)
+# define MSGPACK_PP_WHILE_159(p, o, s) MSGPACK_PP_WHILE_159_I(p, o, s)
+# define MSGPACK_PP_WHILE_160(p, o, s) MSGPACK_PP_WHILE_160_I(p, o, s)
+# define MSGPACK_PP_WHILE_161(p, o, s) MSGPACK_PP_WHILE_161_I(p, o, s)
+# define MSGPACK_PP_WHILE_162(p, o, s) MSGPACK_PP_WHILE_162_I(p, o, s)
+# define MSGPACK_PP_WHILE_163(p, o, s) MSGPACK_PP_WHILE_163_I(p, o, s)
+# define MSGPACK_PP_WHILE_164(p, o, s) MSGPACK_PP_WHILE_164_I(p, o, s)
+# define MSGPACK_PP_WHILE_165(p, o, s) MSGPACK_PP_WHILE_165_I(p, o, s)
+# define MSGPACK_PP_WHILE_166(p, o, s) MSGPACK_PP_WHILE_166_I(p, o, s)
+# define MSGPACK_PP_WHILE_167(p, o, s) MSGPACK_PP_WHILE_167_I(p, o, s)
+# define MSGPACK_PP_WHILE_168(p, o, s) MSGPACK_PP_WHILE_168_I(p, o, s)
+# define MSGPACK_PP_WHILE_169(p, o, s) MSGPACK_PP_WHILE_169_I(p, o, s)
+# define MSGPACK_PP_WHILE_170(p, o, s) MSGPACK_PP_WHILE_170_I(p, o, s)
+# define MSGPACK_PP_WHILE_171(p, o, s) MSGPACK_PP_WHILE_171_I(p, o, s)
+# define MSGPACK_PP_WHILE_172(p, o, s) MSGPACK_PP_WHILE_172_I(p, o, s)
+# define MSGPACK_PP_WHILE_173(p, o, s) MSGPACK_PP_WHILE_173_I(p, o, s)
+# define MSGPACK_PP_WHILE_174(p, o, s) MSGPACK_PP_WHILE_174_I(p, o, s)
+# define MSGPACK_PP_WHILE_175(p, o, s) MSGPACK_PP_WHILE_175_I(p, o, s)
+# define MSGPACK_PP_WHILE_176(p, o, s) MSGPACK_PP_WHILE_176_I(p, o, s)
+# define MSGPACK_PP_WHILE_177(p, o, s) MSGPACK_PP_WHILE_177_I(p, o, s)
+# define MSGPACK_PP_WHILE_178(p, o, s) MSGPACK_PP_WHILE_178_I(p, o, s)
+# define MSGPACK_PP_WHILE_179(p, o, s) MSGPACK_PP_WHILE_179_I(p, o, s)
+# define MSGPACK_PP_WHILE_180(p, o, s) MSGPACK_PP_WHILE_180_I(p, o, s)
+# define MSGPACK_PP_WHILE_181(p, o, s) MSGPACK_PP_WHILE_181_I(p, o, s)
+# define MSGPACK_PP_WHILE_182(p, o, s) MSGPACK_PP_WHILE_182_I(p, o, s)
+# define MSGPACK_PP_WHILE_183(p, o, s) MSGPACK_PP_WHILE_183_I(p, o, s)
+# define MSGPACK_PP_WHILE_184(p, o, s) MSGPACK_PP_WHILE_184_I(p, o, s)
+# define MSGPACK_PP_WHILE_185(p, o, s) MSGPACK_PP_WHILE_185_I(p, o, s)
+# define MSGPACK_PP_WHILE_186(p, o, s) MSGPACK_PP_WHILE_186_I(p, o, s)
+# define MSGPACK_PP_WHILE_187(p, o, s) MSGPACK_PP_WHILE_187_I(p, o, s)
+# define MSGPACK_PP_WHILE_188(p, o, s) MSGPACK_PP_WHILE_188_I(p, o, s)
+# define MSGPACK_PP_WHILE_189(p, o, s) MSGPACK_PP_WHILE_189_I(p, o, s)
+# define MSGPACK_PP_WHILE_190(p, o, s) MSGPACK_PP_WHILE_190_I(p, o, s)
+# define MSGPACK_PP_WHILE_191(p, o, s) MSGPACK_PP_WHILE_191_I(p, o, s)
+# define MSGPACK_PP_WHILE_192(p, o, s) MSGPACK_PP_WHILE_192_I(p, o, s)
+# define MSGPACK_PP_WHILE_193(p, o, s) MSGPACK_PP_WHILE_193_I(p, o, s)
+# define MSGPACK_PP_WHILE_194(p, o, s) MSGPACK_PP_WHILE_194_I(p, o, s)
+# define MSGPACK_PP_WHILE_195(p, o, s) MSGPACK_PP_WHILE_195_I(p, o, s)
+# define MSGPACK_PP_WHILE_196(p, o, s) MSGPACK_PP_WHILE_196_I(p, o, s)
+# define MSGPACK_PP_WHILE_197(p, o, s) MSGPACK_PP_WHILE_197_I(p, o, s)
+# define MSGPACK_PP_WHILE_198(p, o, s) MSGPACK_PP_WHILE_198_I(p, o, s)
+# define MSGPACK_PP_WHILE_199(p, o, s) MSGPACK_PP_WHILE_199_I(p, o, s)
+# define MSGPACK_PP_WHILE_200(p, o, s) MSGPACK_PP_WHILE_200_I(p, o, s)
+# define MSGPACK_PP_WHILE_201(p, o, s) MSGPACK_PP_WHILE_201_I(p, o, s)
+# define MSGPACK_PP_WHILE_202(p, o, s) MSGPACK_PP_WHILE_202_I(p, o, s)
+# define MSGPACK_PP_WHILE_203(p, o, s) MSGPACK_PP_WHILE_203_I(p, o, s)
+# define MSGPACK_PP_WHILE_204(p, o, s) MSGPACK_PP_WHILE_204_I(p, o, s)
+# define MSGPACK_PP_WHILE_205(p, o, s) MSGPACK_PP_WHILE_205_I(p, o, s)
+# define MSGPACK_PP_WHILE_206(p, o, s) MSGPACK_PP_WHILE_206_I(p, o, s)
+# define MSGPACK_PP_WHILE_207(p, o, s) MSGPACK_PP_WHILE_207_I(p, o, s)
+# define MSGPACK_PP_WHILE_208(p, o, s) MSGPACK_PP_WHILE_208_I(p, o, s)
+# define MSGPACK_PP_WHILE_209(p, o, s) MSGPACK_PP_WHILE_209_I(p, o, s)
+# define MSGPACK_PP_WHILE_210(p, o, s) MSGPACK_PP_WHILE_210_I(p, o, s)
+# define MSGPACK_PP_WHILE_211(p, o, s) MSGPACK_PP_WHILE_211_I(p, o, s)
+# define MSGPACK_PP_WHILE_212(p, o, s) MSGPACK_PP_WHILE_212_I(p, o, s)
+# define MSGPACK_PP_WHILE_213(p, o, s) MSGPACK_PP_WHILE_213_I(p, o, s)
+# define MSGPACK_PP_WHILE_214(p, o, s) MSGPACK_PP_WHILE_214_I(p, o, s)
+# define MSGPACK_PP_WHILE_215(p, o, s) MSGPACK_PP_WHILE_215_I(p, o, s)
+# define MSGPACK_PP_WHILE_216(p, o, s) MSGPACK_PP_WHILE_216_I(p, o, s)
+# define MSGPACK_PP_WHILE_217(p, o, s) MSGPACK_PP_WHILE_217_I(p, o, s)
+# define MSGPACK_PP_WHILE_218(p, o, s) MSGPACK_PP_WHILE_218_I(p, o, s)
+# define MSGPACK_PP_WHILE_219(p, o, s) MSGPACK_PP_WHILE_219_I(p, o, s)
+# define MSGPACK_PP_WHILE_220(p, o, s) MSGPACK_PP_WHILE_220_I(p, o, s)
+# define MSGPACK_PP_WHILE_221(p, o, s) MSGPACK_PP_WHILE_221_I(p, o, s)
+# define MSGPACK_PP_WHILE_222(p, o, s) MSGPACK_PP_WHILE_222_I(p, o, s)
+# define MSGPACK_PP_WHILE_223(p, o, s) MSGPACK_PP_WHILE_223_I(p, o, s)
+# define MSGPACK_PP_WHILE_224(p, o, s) MSGPACK_PP_WHILE_224_I(p, o, s)
+# define MSGPACK_PP_WHILE_225(p, o, s) MSGPACK_PP_WHILE_225_I(p, o, s)
+# define MSGPACK_PP_WHILE_226(p, o, s) MSGPACK_PP_WHILE_226_I(p, o, s)
+# define MSGPACK_PP_WHILE_227(p, o, s) MSGPACK_PP_WHILE_227_I(p, o, s)
+# define MSGPACK_PP_WHILE_228(p, o, s) MSGPACK_PP_WHILE_228_I(p, o, s)
+# define MSGPACK_PP_WHILE_229(p, o, s) MSGPACK_PP_WHILE_229_I(p, o, s)
+# define MSGPACK_PP_WHILE_230(p, o, s) MSGPACK_PP_WHILE_230_I(p, o, s)
+# define MSGPACK_PP_WHILE_231(p, o, s) MSGPACK_PP_WHILE_231_I(p, o, s)
+# define MSGPACK_PP_WHILE_232(p, o, s) MSGPACK_PP_WHILE_232_I(p, o, s)
+# define MSGPACK_PP_WHILE_233(p, o, s) MSGPACK_PP_WHILE_233_I(p, o, s)
+# define MSGPACK_PP_WHILE_234(p, o, s) MSGPACK_PP_WHILE_234_I(p, o, s)
+# define MSGPACK_PP_WHILE_235(p, o, s) MSGPACK_PP_WHILE_235_I(p, o, s)
+# define MSGPACK_PP_WHILE_236(p, o, s) MSGPACK_PP_WHILE_236_I(p, o, s)
+# define MSGPACK_PP_WHILE_237(p, o, s) MSGPACK_PP_WHILE_237_I(p, o, s)
+# define MSGPACK_PP_WHILE_238(p, o, s) MSGPACK_PP_WHILE_238_I(p, o, s)
+# define MSGPACK_PP_WHILE_239(p, o, s) MSGPACK_PP_WHILE_239_I(p, o, s)
+# define MSGPACK_PP_WHILE_240(p, o, s) MSGPACK_PP_WHILE_240_I(p, o, s)
+# define MSGPACK_PP_WHILE_241(p, o, s) MSGPACK_PP_WHILE_241_I(p, o, s)
+# define MSGPACK_PP_WHILE_242(p, o, s) MSGPACK_PP_WHILE_242_I(p, o, s)
+# define MSGPACK_PP_WHILE_243(p, o, s) MSGPACK_PP_WHILE_243_I(p, o, s)
+# define MSGPACK_PP_WHILE_244(p, o, s) MSGPACK_PP_WHILE_244_I(p, o, s)
+# define MSGPACK_PP_WHILE_245(p, o, s) MSGPACK_PP_WHILE_245_I(p, o, s)
+# define MSGPACK_PP_WHILE_246(p, o, s) MSGPACK_PP_WHILE_246_I(p, o, s)
+# define MSGPACK_PP_WHILE_247(p, o, s) MSGPACK_PP_WHILE_247_I(p, o, s)
+# define MSGPACK_PP_WHILE_248(p, o, s) MSGPACK_PP_WHILE_248_I(p, o, s)
+# define MSGPACK_PP_WHILE_249(p, o, s) MSGPACK_PP_WHILE_249_I(p, o, s)
+# define MSGPACK_PP_WHILE_250(p, o, s) MSGPACK_PP_WHILE_250_I(p, o, s)
+# define MSGPACK_PP_WHILE_251(p, o, s) MSGPACK_PP_WHILE_251_I(p, o, s)
+# define MSGPACK_PP_WHILE_252(p, o, s) MSGPACK_PP_WHILE_252_I(p, o, s)
+# define MSGPACK_PP_WHILE_253(p, o, s) MSGPACK_PP_WHILE_253_I(p, o, s)
+# define MSGPACK_PP_WHILE_254(p, o, s) MSGPACK_PP_WHILE_254_I(p, o, s)
+# define MSGPACK_PP_WHILE_255(p, o, s) MSGPACK_PP_WHILE_255_I(p, o, s)
+# define MSGPACK_PP_WHILE_256(p, o, s) MSGPACK_PP_WHILE_256_I(p, o, s)
+#
+# define MSGPACK_PP_WHILE_1_I(p, o, s) MSGPACK_PP_IF(p(2, s), MSGPACK_PP_WHILE_2, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(2, s))
+# define MSGPACK_PP_WHILE_2_I(p, o, s) MSGPACK_PP_IF(p(3, s), MSGPACK_PP_WHILE_3, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(3, s))
+# define MSGPACK_PP_WHILE_3_I(p, o, s) MSGPACK_PP_IF(p(4, s), MSGPACK_PP_WHILE_4, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(4, s))
+# define MSGPACK_PP_WHILE_4_I(p, o, s) MSGPACK_PP_IF(p(5, s), MSGPACK_PP_WHILE_5, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(5, s))
+# define MSGPACK_PP_WHILE_5_I(p, o, s) MSGPACK_PP_IF(p(6, s), MSGPACK_PP_WHILE_6, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(6, s))
+# define MSGPACK_PP_WHILE_6_I(p, o, s) MSGPACK_PP_IF(p(7, s), MSGPACK_PP_WHILE_7, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(7, s))
+# define MSGPACK_PP_WHILE_7_I(p, o, s) MSGPACK_PP_IF(p(8, s), MSGPACK_PP_WHILE_8, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(8, s))
+# define MSGPACK_PP_WHILE_8_I(p, o, s) MSGPACK_PP_IF(p(9, s), MSGPACK_PP_WHILE_9, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(9, s))
+# define MSGPACK_PP_WHILE_9_I(p, o, s) MSGPACK_PP_IF(p(10, s), MSGPACK_PP_WHILE_10, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(10, s))
+# define MSGPACK_PP_WHILE_10_I(p, o, s) MSGPACK_PP_IF(p(11, s), MSGPACK_PP_WHILE_11, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(11, s))
+# define MSGPACK_PP_WHILE_11_I(p, o, s) MSGPACK_PP_IF(p(12, s), MSGPACK_PP_WHILE_12, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(12, s))
+# define MSGPACK_PP_WHILE_12_I(p, o, s) MSGPACK_PP_IF(p(13, s), MSGPACK_PP_WHILE_13, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(13, s))
+# define MSGPACK_PP_WHILE_13_I(p, o, s) MSGPACK_PP_IF(p(14, s), MSGPACK_PP_WHILE_14, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(14, s))
+# define MSGPACK_PP_WHILE_14_I(p, o, s) MSGPACK_PP_IF(p(15, s), MSGPACK_PP_WHILE_15, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(15, s))
+# define MSGPACK_PP_WHILE_15_I(p, o, s) MSGPACK_PP_IF(p(16, s), MSGPACK_PP_WHILE_16, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(16, s))
+# define MSGPACK_PP_WHILE_16_I(p, o, s) MSGPACK_PP_IF(p(17, s), MSGPACK_PP_WHILE_17, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(17, s))
+# define MSGPACK_PP_WHILE_17_I(p, o, s) MSGPACK_PP_IF(p(18, s), MSGPACK_PP_WHILE_18, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(18, s))
+# define MSGPACK_PP_WHILE_18_I(p, o, s) MSGPACK_PP_IF(p(19, s), MSGPACK_PP_WHILE_19, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(19, s))
+# define MSGPACK_PP_WHILE_19_I(p, o, s) MSGPACK_PP_IF(p(20, s), MSGPACK_PP_WHILE_20, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(20, s))
+# define MSGPACK_PP_WHILE_20_I(p, o, s) MSGPACK_PP_IF(p(21, s), MSGPACK_PP_WHILE_21, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(21, s))
+# define MSGPACK_PP_WHILE_21_I(p, o, s) MSGPACK_PP_IF(p(22, s), MSGPACK_PP_WHILE_22, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(22, s))
+# define MSGPACK_PP_WHILE_22_I(p, o, s) MSGPACK_PP_IF(p(23, s), MSGPACK_PP_WHILE_23, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(23, s))
+# define MSGPACK_PP_WHILE_23_I(p, o, s) MSGPACK_PP_IF(p(24, s), MSGPACK_PP_WHILE_24, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(24, s))
+# define MSGPACK_PP_WHILE_24_I(p, o, s) MSGPACK_PP_IF(p(25, s), MSGPACK_PP_WHILE_25, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(25, s))
+# define MSGPACK_PP_WHILE_25_I(p, o, s) MSGPACK_PP_IF(p(26, s), MSGPACK_PP_WHILE_26, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(26, s))
+# define MSGPACK_PP_WHILE_26_I(p, o, s) MSGPACK_PP_IF(p(27, s), MSGPACK_PP_WHILE_27, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(27, s))
+# define MSGPACK_PP_WHILE_27_I(p, o, s) MSGPACK_PP_IF(p(28, s), MSGPACK_PP_WHILE_28, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(28, s))
+# define MSGPACK_PP_WHILE_28_I(p, o, s) MSGPACK_PP_IF(p(29, s), MSGPACK_PP_WHILE_29, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(29, s))
+# define MSGPACK_PP_WHILE_29_I(p, o, s) MSGPACK_PP_IF(p(30, s), MSGPACK_PP_WHILE_30, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(30, s))
+# define MSGPACK_PP_WHILE_30_I(p, o, s) MSGPACK_PP_IF(p(31, s), MSGPACK_PP_WHILE_31, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(31, s))
+# define MSGPACK_PP_WHILE_31_I(p, o, s) MSGPACK_PP_IF(p(32, s), MSGPACK_PP_WHILE_32, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(32, s))
+# define MSGPACK_PP_WHILE_32_I(p, o, s) MSGPACK_PP_IF(p(33, s), MSGPACK_PP_WHILE_33, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(33, s))
+# define MSGPACK_PP_WHILE_33_I(p, o, s) MSGPACK_PP_IF(p(34, s), MSGPACK_PP_WHILE_34, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(34, s))
+# define MSGPACK_PP_WHILE_34_I(p, o, s) MSGPACK_PP_IF(p(35, s), MSGPACK_PP_WHILE_35, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(35, s))
+# define MSGPACK_PP_WHILE_35_I(p, o, s) MSGPACK_PP_IF(p(36, s), MSGPACK_PP_WHILE_36, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(36, s))
+# define MSGPACK_PP_WHILE_36_I(p, o, s) MSGPACK_PP_IF(p(37, s), MSGPACK_PP_WHILE_37, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(37, s))
+# define MSGPACK_PP_WHILE_37_I(p, o, s) MSGPACK_PP_IF(p(38, s), MSGPACK_PP_WHILE_38, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(38, s))
+# define MSGPACK_PP_WHILE_38_I(p, o, s) MSGPACK_PP_IF(p(39, s), MSGPACK_PP_WHILE_39, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(39, s))
+# define MSGPACK_PP_WHILE_39_I(p, o, s) MSGPACK_PP_IF(p(40, s), MSGPACK_PP_WHILE_40, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(40, s))
+# define MSGPACK_PP_WHILE_40_I(p, o, s) MSGPACK_PP_IF(p(41, s), MSGPACK_PP_WHILE_41, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(41, s))
+# define MSGPACK_PP_WHILE_41_I(p, o, s) MSGPACK_PP_IF(p(42, s), MSGPACK_PP_WHILE_42, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(42, s))
+# define MSGPACK_PP_WHILE_42_I(p, o, s) MSGPACK_PP_IF(p(43, s), MSGPACK_PP_WHILE_43, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(43, s))
+# define MSGPACK_PP_WHILE_43_I(p, o, s) MSGPACK_PP_IF(p(44, s), MSGPACK_PP_WHILE_44, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(44, s))
+# define MSGPACK_PP_WHILE_44_I(p, o, s) MSGPACK_PP_IF(p(45, s), MSGPACK_PP_WHILE_45, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(45, s))
+# define MSGPACK_PP_WHILE_45_I(p, o, s) MSGPACK_PP_IF(p(46, s), MSGPACK_PP_WHILE_46, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(46, s))
+# define MSGPACK_PP_WHILE_46_I(p, o, s) MSGPACK_PP_IF(p(47, s), MSGPACK_PP_WHILE_47, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(47, s))
+# define MSGPACK_PP_WHILE_47_I(p, o, s) MSGPACK_PP_IF(p(48, s), MSGPACK_PP_WHILE_48, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(48, s))
+# define MSGPACK_PP_WHILE_48_I(p, o, s) MSGPACK_PP_IF(p(49, s), MSGPACK_PP_WHILE_49, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(49, s))
+# define MSGPACK_PP_WHILE_49_I(p, o, s) MSGPACK_PP_IF(p(50, s), MSGPACK_PP_WHILE_50, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(50, s))
+# define MSGPACK_PP_WHILE_50_I(p, o, s) MSGPACK_PP_IF(p(51, s), MSGPACK_PP_WHILE_51, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(51, s))
+# define MSGPACK_PP_WHILE_51_I(p, o, s) MSGPACK_PP_IF(p(52, s), MSGPACK_PP_WHILE_52, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(52, s))
+# define MSGPACK_PP_WHILE_52_I(p, o, s) MSGPACK_PP_IF(p(53, s), MSGPACK_PP_WHILE_53, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(53, s))
+# define MSGPACK_PP_WHILE_53_I(p, o, s) MSGPACK_PP_IF(p(54, s), MSGPACK_PP_WHILE_54, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(54, s))
+# define MSGPACK_PP_WHILE_54_I(p, o, s) MSGPACK_PP_IF(p(55, s), MSGPACK_PP_WHILE_55, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(55, s))
+# define MSGPACK_PP_WHILE_55_I(p, o, s) MSGPACK_PP_IF(p(56, s), MSGPACK_PP_WHILE_56, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(56, s))
+# define MSGPACK_PP_WHILE_56_I(p, o, s) MSGPACK_PP_IF(p(57, s), MSGPACK_PP_WHILE_57, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(57, s))
+# define MSGPACK_PP_WHILE_57_I(p, o, s) MSGPACK_PP_IF(p(58, s), MSGPACK_PP_WHILE_58, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(58, s))
+# define MSGPACK_PP_WHILE_58_I(p, o, s) MSGPACK_PP_IF(p(59, s), MSGPACK_PP_WHILE_59, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(59, s))
+# define MSGPACK_PP_WHILE_59_I(p, o, s) MSGPACK_PP_IF(p(60, s), MSGPACK_PP_WHILE_60, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(60, s))
+# define MSGPACK_PP_WHILE_60_I(p, o, s) MSGPACK_PP_IF(p(61, s), MSGPACK_PP_WHILE_61, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(61, s))
+# define MSGPACK_PP_WHILE_61_I(p, o, s) MSGPACK_PP_IF(p(62, s), MSGPACK_PP_WHILE_62, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(62, s))
+# define MSGPACK_PP_WHILE_62_I(p, o, s) MSGPACK_PP_IF(p(63, s), MSGPACK_PP_WHILE_63, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(63, s))
+# define MSGPACK_PP_WHILE_63_I(p, o, s) MSGPACK_PP_IF(p(64, s), MSGPACK_PP_WHILE_64, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(64, s))
+# define MSGPACK_PP_WHILE_64_I(p, o, s) MSGPACK_PP_IF(p(65, s), MSGPACK_PP_WHILE_65, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(65, s))
+# define MSGPACK_PP_WHILE_65_I(p, o, s) MSGPACK_PP_IF(p(66, s), MSGPACK_PP_WHILE_66, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(66, s))
+# define MSGPACK_PP_WHILE_66_I(p, o, s) MSGPACK_PP_IF(p(67, s), MSGPACK_PP_WHILE_67, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(67, s))
+# define MSGPACK_PP_WHILE_67_I(p, o, s) MSGPACK_PP_IF(p(68, s), MSGPACK_PP_WHILE_68, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(68, s))
+# define MSGPACK_PP_WHILE_68_I(p, o, s) MSGPACK_PP_IF(p(69, s), MSGPACK_PP_WHILE_69, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(69, s))
+# define MSGPACK_PP_WHILE_69_I(p, o, s) MSGPACK_PP_IF(p(70, s), MSGPACK_PP_WHILE_70, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(70, s))
+# define MSGPACK_PP_WHILE_70_I(p, o, s) MSGPACK_PP_IF(p(71, s), MSGPACK_PP_WHILE_71, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(71, s))
+# define MSGPACK_PP_WHILE_71_I(p, o, s) MSGPACK_PP_IF(p(72, s), MSGPACK_PP_WHILE_72, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(72, s))
+# define MSGPACK_PP_WHILE_72_I(p, o, s) MSGPACK_PP_IF(p(73, s), MSGPACK_PP_WHILE_73, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(73, s))
+# define MSGPACK_PP_WHILE_73_I(p, o, s) MSGPACK_PP_IF(p(74, s), MSGPACK_PP_WHILE_74, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(74, s))
+# define MSGPACK_PP_WHILE_74_I(p, o, s) MSGPACK_PP_IF(p(75, s), MSGPACK_PP_WHILE_75, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(75, s))
+# define MSGPACK_PP_WHILE_75_I(p, o, s) MSGPACK_PP_IF(p(76, s), MSGPACK_PP_WHILE_76, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(76, s))
+# define MSGPACK_PP_WHILE_76_I(p, o, s) MSGPACK_PP_IF(p(77, s), MSGPACK_PP_WHILE_77, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(77, s))
+# define MSGPACK_PP_WHILE_77_I(p, o, s) MSGPACK_PP_IF(p(78, s), MSGPACK_PP_WHILE_78, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(78, s))
+# define MSGPACK_PP_WHILE_78_I(p, o, s) MSGPACK_PP_IF(p(79, s), MSGPACK_PP_WHILE_79, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(79, s))
+# define MSGPACK_PP_WHILE_79_I(p, o, s) MSGPACK_PP_IF(p(80, s), MSGPACK_PP_WHILE_80, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(80, s))
+# define MSGPACK_PP_WHILE_80_I(p, o, s) MSGPACK_PP_IF(p(81, s), MSGPACK_PP_WHILE_81, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(81, s))
+# define MSGPACK_PP_WHILE_81_I(p, o, s) MSGPACK_PP_IF(p(82, s), MSGPACK_PP_WHILE_82, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(82, s))
+# define MSGPACK_PP_WHILE_82_I(p, o, s) MSGPACK_PP_IF(p(83, s), MSGPACK_PP_WHILE_83, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(83, s))
+# define MSGPACK_PP_WHILE_83_I(p, o, s) MSGPACK_PP_IF(p(84, s), MSGPACK_PP_WHILE_84, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(84, s))
+# define MSGPACK_PP_WHILE_84_I(p, o, s) MSGPACK_PP_IF(p(85, s), MSGPACK_PP_WHILE_85, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(85, s))
+# define MSGPACK_PP_WHILE_85_I(p, o, s) MSGPACK_PP_IF(p(86, s), MSGPACK_PP_WHILE_86, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(86, s))
+# define MSGPACK_PP_WHILE_86_I(p, o, s) MSGPACK_PP_IF(p(87, s), MSGPACK_PP_WHILE_87, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(87, s))
+# define MSGPACK_PP_WHILE_87_I(p, o, s) MSGPACK_PP_IF(p(88, s), MSGPACK_PP_WHILE_88, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(88, s))
+# define MSGPACK_PP_WHILE_88_I(p, o, s) MSGPACK_PP_IF(p(89, s), MSGPACK_PP_WHILE_89, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(89, s))
+# define MSGPACK_PP_WHILE_89_I(p, o, s) MSGPACK_PP_IF(p(90, s), MSGPACK_PP_WHILE_90, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(90, s))
+# define MSGPACK_PP_WHILE_90_I(p, o, s) MSGPACK_PP_IF(p(91, s), MSGPACK_PP_WHILE_91, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(91, s))
+# define MSGPACK_PP_WHILE_91_I(p, o, s) MSGPACK_PP_IF(p(92, s), MSGPACK_PP_WHILE_92, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(92, s))
+# define MSGPACK_PP_WHILE_92_I(p, o, s) MSGPACK_PP_IF(p(93, s), MSGPACK_PP_WHILE_93, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(93, s))
+# define MSGPACK_PP_WHILE_93_I(p, o, s) MSGPACK_PP_IF(p(94, s), MSGPACK_PP_WHILE_94, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(94, s))
+# define MSGPACK_PP_WHILE_94_I(p, o, s) MSGPACK_PP_IF(p(95, s), MSGPACK_PP_WHILE_95, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(95, s))
+# define MSGPACK_PP_WHILE_95_I(p, o, s) MSGPACK_PP_IF(p(96, s), MSGPACK_PP_WHILE_96, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(96, s))
+# define MSGPACK_PP_WHILE_96_I(p, o, s) MSGPACK_PP_IF(p(97, s), MSGPACK_PP_WHILE_97, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(97, s))
+# define MSGPACK_PP_WHILE_97_I(p, o, s) MSGPACK_PP_IF(p(98, s), MSGPACK_PP_WHILE_98, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(98, s))
+# define MSGPACK_PP_WHILE_98_I(p, o, s) MSGPACK_PP_IF(p(99, s), MSGPACK_PP_WHILE_99, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(99, s))
+# define MSGPACK_PP_WHILE_99_I(p, o, s) MSGPACK_PP_IF(p(100, s), MSGPACK_PP_WHILE_100, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(100, s))
+# define MSGPACK_PP_WHILE_100_I(p, o, s) MSGPACK_PP_IF(p(101, s), MSGPACK_PP_WHILE_101, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(101, s))
+# define MSGPACK_PP_WHILE_101_I(p, o, s) MSGPACK_PP_IF(p(102, s), MSGPACK_PP_WHILE_102, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(102, s))
+# define MSGPACK_PP_WHILE_102_I(p, o, s) MSGPACK_PP_IF(p(103, s), MSGPACK_PP_WHILE_103, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(103, s))
+# define MSGPACK_PP_WHILE_103_I(p, o, s) MSGPACK_PP_IF(p(104, s), MSGPACK_PP_WHILE_104, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(104, s))
+# define MSGPACK_PP_WHILE_104_I(p, o, s) MSGPACK_PP_IF(p(105, s), MSGPACK_PP_WHILE_105, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(105, s))
+# define MSGPACK_PP_WHILE_105_I(p, o, s) MSGPACK_PP_IF(p(106, s), MSGPACK_PP_WHILE_106, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(106, s))
+# define MSGPACK_PP_WHILE_106_I(p, o, s) MSGPACK_PP_IF(p(107, s), MSGPACK_PP_WHILE_107, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(107, s))
+# define MSGPACK_PP_WHILE_107_I(p, o, s) MSGPACK_PP_IF(p(108, s), MSGPACK_PP_WHILE_108, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(108, s))
+# define MSGPACK_PP_WHILE_108_I(p, o, s) MSGPACK_PP_IF(p(109, s), MSGPACK_PP_WHILE_109, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(109, s))
+# define MSGPACK_PP_WHILE_109_I(p, o, s) MSGPACK_PP_IF(p(110, s), MSGPACK_PP_WHILE_110, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(110, s))
+# define MSGPACK_PP_WHILE_110_I(p, o, s) MSGPACK_PP_IF(p(111, s), MSGPACK_PP_WHILE_111, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(111, s))
+# define MSGPACK_PP_WHILE_111_I(p, o, s) MSGPACK_PP_IF(p(112, s), MSGPACK_PP_WHILE_112, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(112, s))
+# define MSGPACK_PP_WHILE_112_I(p, o, s) MSGPACK_PP_IF(p(113, s), MSGPACK_PP_WHILE_113, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(113, s))
+# define MSGPACK_PP_WHILE_113_I(p, o, s) MSGPACK_PP_IF(p(114, s), MSGPACK_PP_WHILE_114, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(114, s))
+# define MSGPACK_PP_WHILE_114_I(p, o, s) MSGPACK_PP_IF(p(115, s), MSGPACK_PP_WHILE_115, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(115, s))
+# define MSGPACK_PP_WHILE_115_I(p, o, s) MSGPACK_PP_IF(p(116, s), MSGPACK_PP_WHILE_116, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(116, s))
+# define MSGPACK_PP_WHILE_116_I(p, o, s) MSGPACK_PP_IF(p(117, s), MSGPACK_PP_WHILE_117, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(117, s))
+# define MSGPACK_PP_WHILE_117_I(p, o, s) MSGPACK_PP_IF(p(118, s), MSGPACK_PP_WHILE_118, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(118, s))
+# define MSGPACK_PP_WHILE_118_I(p, o, s) MSGPACK_PP_IF(p(119, s), MSGPACK_PP_WHILE_119, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(119, s))
+# define MSGPACK_PP_WHILE_119_I(p, o, s) MSGPACK_PP_IF(p(120, s), MSGPACK_PP_WHILE_120, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(120, s))
+# define MSGPACK_PP_WHILE_120_I(p, o, s) MSGPACK_PP_IF(p(121, s), MSGPACK_PP_WHILE_121, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(121, s))
+# define MSGPACK_PP_WHILE_121_I(p, o, s) MSGPACK_PP_IF(p(122, s), MSGPACK_PP_WHILE_122, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(122, s))
+# define MSGPACK_PP_WHILE_122_I(p, o, s) MSGPACK_PP_IF(p(123, s), MSGPACK_PP_WHILE_123, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(123, s))
+# define MSGPACK_PP_WHILE_123_I(p, o, s) MSGPACK_PP_IF(p(124, s), MSGPACK_PP_WHILE_124, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(124, s))
+# define MSGPACK_PP_WHILE_124_I(p, o, s) MSGPACK_PP_IF(p(125, s), MSGPACK_PP_WHILE_125, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(125, s))
+# define MSGPACK_PP_WHILE_125_I(p, o, s) MSGPACK_PP_IF(p(126, s), MSGPACK_PP_WHILE_126, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(126, s))
+# define MSGPACK_PP_WHILE_126_I(p, o, s) MSGPACK_PP_IF(p(127, s), MSGPACK_PP_WHILE_127, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(127, s))
+# define MSGPACK_PP_WHILE_127_I(p, o, s) MSGPACK_PP_IF(p(128, s), MSGPACK_PP_WHILE_128, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(128, s))
+# define MSGPACK_PP_WHILE_128_I(p, o, s) MSGPACK_PP_IF(p(129, s), MSGPACK_PP_WHILE_129, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(129, s))
+# define MSGPACK_PP_WHILE_129_I(p, o, s) MSGPACK_PP_IF(p(130, s), MSGPACK_PP_WHILE_130, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(130, s))
+# define MSGPACK_PP_WHILE_130_I(p, o, s) MSGPACK_PP_IF(p(131, s), MSGPACK_PP_WHILE_131, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(131, s))
+# define MSGPACK_PP_WHILE_131_I(p, o, s) MSGPACK_PP_IF(p(132, s), MSGPACK_PP_WHILE_132, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(132, s))
+# define MSGPACK_PP_WHILE_132_I(p, o, s) MSGPACK_PP_IF(p(133, s), MSGPACK_PP_WHILE_133, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(133, s))
+# define MSGPACK_PP_WHILE_133_I(p, o, s) MSGPACK_PP_IF(p(134, s), MSGPACK_PP_WHILE_134, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(134, s))
+# define MSGPACK_PP_WHILE_134_I(p, o, s) MSGPACK_PP_IF(p(135, s), MSGPACK_PP_WHILE_135, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(135, s))
+# define MSGPACK_PP_WHILE_135_I(p, o, s) MSGPACK_PP_IF(p(136, s), MSGPACK_PP_WHILE_136, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(136, s))
+# define MSGPACK_PP_WHILE_136_I(p, o, s) MSGPACK_PP_IF(p(137, s), MSGPACK_PP_WHILE_137, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(137, s))
+# define MSGPACK_PP_WHILE_137_I(p, o, s) MSGPACK_PP_IF(p(138, s), MSGPACK_PP_WHILE_138, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(138, s))
+# define MSGPACK_PP_WHILE_138_I(p, o, s) MSGPACK_PP_IF(p(139, s), MSGPACK_PP_WHILE_139, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(139, s))
+# define MSGPACK_PP_WHILE_139_I(p, o, s) MSGPACK_PP_IF(p(140, s), MSGPACK_PP_WHILE_140, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(140, s))
+# define MSGPACK_PP_WHILE_140_I(p, o, s) MSGPACK_PP_IF(p(141, s), MSGPACK_PP_WHILE_141, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(141, s))
+# define MSGPACK_PP_WHILE_141_I(p, o, s) MSGPACK_PP_IF(p(142, s), MSGPACK_PP_WHILE_142, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(142, s))
+# define MSGPACK_PP_WHILE_142_I(p, o, s) MSGPACK_PP_IF(p(143, s), MSGPACK_PP_WHILE_143, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(143, s))
+# define MSGPACK_PP_WHILE_143_I(p, o, s) MSGPACK_PP_IF(p(144, s), MSGPACK_PP_WHILE_144, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(144, s))
+# define MSGPACK_PP_WHILE_144_I(p, o, s) MSGPACK_PP_IF(p(145, s), MSGPACK_PP_WHILE_145, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(145, s))
+# define MSGPACK_PP_WHILE_145_I(p, o, s) MSGPACK_PP_IF(p(146, s), MSGPACK_PP_WHILE_146, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(146, s))
+# define MSGPACK_PP_WHILE_146_I(p, o, s) MSGPACK_PP_IF(p(147, s), MSGPACK_PP_WHILE_147, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(147, s))
+# define MSGPACK_PP_WHILE_147_I(p, o, s) MSGPACK_PP_IF(p(148, s), MSGPACK_PP_WHILE_148, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(148, s))
+# define MSGPACK_PP_WHILE_148_I(p, o, s) MSGPACK_PP_IF(p(149, s), MSGPACK_PP_WHILE_149, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(149, s))
+# define MSGPACK_PP_WHILE_149_I(p, o, s) MSGPACK_PP_IF(p(150, s), MSGPACK_PP_WHILE_150, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(150, s))
+# define MSGPACK_PP_WHILE_150_I(p, o, s) MSGPACK_PP_IF(p(151, s), MSGPACK_PP_WHILE_151, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(151, s))
+# define MSGPACK_PP_WHILE_151_I(p, o, s) MSGPACK_PP_IF(p(152, s), MSGPACK_PP_WHILE_152, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(152, s))
+# define MSGPACK_PP_WHILE_152_I(p, o, s) MSGPACK_PP_IF(p(153, s), MSGPACK_PP_WHILE_153, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(153, s))
+# define MSGPACK_PP_WHILE_153_I(p, o, s) MSGPACK_PP_IF(p(154, s), MSGPACK_PP_WHILE_154, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(154, s))
+# define MSGPACK_PP_WHILE_154_I(p, o, s) MSGPACK_PP_IF(p(155, s), MSGPACK_PP_WHILE_155, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(155, s))
+# define MSGPACK_PP_WHILE_155_I(p, o, s) MSGPACK_PP_IF(p(156, s), MSGPACK_PP_WHILE_156, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(156, s))
+# define MSGPACK_PP_WHILE_156_I(p, o, s) MSGPACK_PP_IF(p(157, s), MSGPACK_PP_WHILE_157, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(157, s))
+# define MSGPACK_PP_WHILE_157_I(p, o, s) MSGPACK_PP_IF(p(158, s), MSGPACK_PP_WHILE_158, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(158, s))
+# define MSGPACK_PP_WHILE_158_I(p, o, s) MSGPACK_PP_IF(p(159, s), MSGPACK_PP_WHILE_159, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(159, s))
+# define MSGPACK_PP_WHILE_159_I(p, o, s) MSGPACK_PP_IF(p(160, s), MSGPACK_PP_WHILE_160, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(160, s))
+# define MSGPACK_PP_WHILE_160_I(p, o, s) MSGPACK_PP_IF(p(161, s), MSGPACK_PP_WHILE_161, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(161, s))
+# define MSGPACK_PP_WHILE_161_I(p, o, s) MSGPACK_PP_IF(p(162, s), MSGPACK_PP_WHILE_162, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(162, s))
+# define MSGPACK_PP_WHILE_162_I(p, o, s) MSGPACK_PP_IF(p(163, s), MSGPACK_PP_WHILE_163, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(163, s))
+# define MSGPACK_PP_WHILE_163_I(p, o, s) MSGPACK_PP_IF(p(164, s), MSGPACK_PP_WHILE_164, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(164, s))
+# define MSGPACK_PP_WHILE_164_I(p, o, s) MSGPACK_PP_IF(p(165, s), MSGPACK_PP_WHILE_165, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(165, s))
+# define MSGPACK_PP_WHILE_165_I(p, o, s) MSGPACK_PP_IF(p(166, s), MSGPACK_PP_WHILE_166, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(166, s))
+# define MSGPACK_PP_WHILE_166_I(p, o, s) MSGPACK_PP_IF(p(167, s), MSGPACK_PP_WHILE_167, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(167, s))
+# define MSGPACK_PP_WHILE_167_I(p, o, s) MSGPACK_PP_IF(p(168, s), MSGPACK_PP_WHILE_168, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(168, s))
+# define MSGPACK_PP_WHILE_168_I(p, o, s) MSGPACK_PP_IF(p(169, s), MSGPACK_PP_WHILE_169, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(169, s))
+# define MSGPACK_PP_WHILE_169_I(p, o, s) MSGPACK_PP_IF(p(170, s), MSGPACK_PP_WHILE_170, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(170, s))
+# define MSGPACK_PP_WHILE_170_I(p, o, s) MSGPACK_PP_IF(p(171, s), MSGPACK_PP_WHILE_171, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(171, s))
+# define MSGPACK_PP_WHILE_171_I(p, o, s) MSGPACK_PP_IF(p(172, s), MSGPACK_PP_WHILE_172, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(172, s))
+# define MSGPACK_PP_WHILE_172_I(p, o, s) MSGPACK_PP_IF(p(173, s), MSGPACK_PP_WHILE_173, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(173, s))
+# define MSGPACK_PP_WHILE_173_I(p, o, s) MSGPACK_PP_IF(p(174, s), MSGPACK_PP_WHILE_174, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(174, s))
+# define MSGPACK_PP_WHILE_174_I(p, o, s) MSGPACK_PP_IF(p(175, s), MSGPACK_PP_WHILE_175, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(175, s))
+# define MSGPACK_PP_WHILE_175_I(p, o, s) MSGPACK_PP_IF(p(176, s), MSGPACK_PP_WHILE_176, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(176, s))
+# define MSGPACK_PP_WHILE_176_I(p, o, s) MSGPACK_PP_IF(p(177, s), MSGPACK_PP_WHILE_177, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(177, s))
+# define MSGPACK_PP_WHILE_177_I(p, o, s) MSGPACK_PP_IF(p(178, s), MSGPACK_PP_WHILE_178, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(178, s))
+# define MSGPACK_PP_WHILE_178_I(p, o, s) MSGPACK_PP_IF(p(179, s), MSGPACK_PP_WHILE_179, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(179, s))
+# define MSGPACK_PP_WHILE_179_I(p, o, s) MSGPACK_PP_IF(p(180, s), MSGPACK_PP_WHILE_180, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(180, s))
+# define MSGPACK_PP_WHILE_180_I(p, o, s) MSGPACK_PP_IF(p(181, s), MSGPACK_PP_WHILE_181, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(181, s))
+# define MSGPACK_PP_WHILE_181_I(p, o, s) MSGPACK_PP_IF(p(182, s), MSGPACK_PP_WHILE_182, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(182, s))
+# define MSGPACK_PP_WHILE_182_I(p, o, s) MSGPACK_PP_IF(p(183, s), MSGPACK_PP_WHILE_183, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(183, s))
+# define MSGPACK_PP_WHILE_183_I(p, o, s) MSGPACK_PP_IF(p(184, s), MSGPACK_PP_WHILE_184, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(184, s))
+# define MSGPACK_PP_WHILE_184_I(p, o, s) MSGPACK_PP_IF(p(185, s), MSGPACK_PP_WHILE_185, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(185, s))
+# define MSGPACK_PP_WHILE_185_I(p, o, s) MSGPACK_PP_IF(p(186, s), MSGPACK_PP_WHILE_186, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(186, s))
+# define MSGPACK_PP_WHILE_186_I(p, o, s) MSGPACK_PP_IF(p(187, s), MSGPACK_PP_WHILE_187, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(187, s))
+# define MSGPACK_PP_WHILE_187_I(p, o, s) MSGPACK_PP_IF(p(188, s), MSGPACK_PP_WHILE_188, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(188, s))
+# define MSGPACK_PP_WHILE_188_I(p, o, s) MSGPACK_PP_IF(p(189, s), MSGPACK_PP_WHILE_189, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(189, s))
+# define MSGPACK_PP_WHILE_189_I(p, o, s) MSGPACK_PP_IF(p(190, s), MSGPACK_PP_WHILE_190, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(190, s))
+# define MSGPACK_PP_WHILE_190_I(p, o, s) MSGPACK_PP_IF(p(191, s), MSGPACK_PP_WHILE_191, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(191, s))
+# define MSGPACK_PP_WHILE_191_I(p, o, s) MSGPACK_PP_IF(p(192, s), MSGPACK_PP_WHILE_192, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(192, s))
+# define MSGPACK_PP_WHILE_192_I(p, o, s) MSGPACK_PP_IF(p(193, s), MSGPACK_PP_WHILE_193, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(193, s))
+# define MSGPACK_PP_WHILE_193_I(p, o, s) MSGPACK_PP_IF(p(194, s), MSGPACK_PP_WHILE_194, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(194, s))
+# define MSGPACK_PP_WHILE_194_I(p, o, s) MSGPACK_PP_IF(p(195, s), MSGPACK_PP_WHILE_195, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(195, s))
+# define MSGPACK_PP_WHILE_195_I(p, o, s) MSGPACK_PP_IF(p(196, s), MSGPACK_PP_WHILE_196, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(196, s))
+# define MSGPACK_PP_WHILE_196_I(p, o, s) MSGPACK_PP_IF(p(197, s), MSGPACK_PP_WHILE_197, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(197, s))
+# define MSGPACK_PP_WHILE_197_I(p, o, s) MSGPACK_PP_IF(p(198, s), MSGPACK_PP_WHILE_198, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(198, s))
+# define MSGPACK_PP_WHILE_198_I(p, o, s) MSGPACK_PP_IF(p(199, s), MSGPACK_PP_WHILE_199, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(199, s))
+# define MSGPACK_PP_WHILE_199_I(p, o, s) MSGPACK_PP_IF(p(200, s), MSGPACK_PP_WHILE_200, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(200, s))
+# define MSGPACK_PP_WHILE_200_I(p, o, s) MSGPACK_PP_IF(p(201, s), MSGPACK_PP_WHILE_201, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(201, s))
+# define MSGPACK_PP_WHILE_201_I(p, o, s) MSGPACK_PP_IF(p(202, s), MSGPACK_PP_WHILE_202, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(202, s))
+# define MSGPACK_PP_WHILE_202_I(p, o, s) MSGPACK_PP_IF(p(203, s), MSGPACK_PP_WHILE_203, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(203, s))
+# define MSGPACK_PP_WHILE_203_I(p, o, s) MSGPACK_PP_IF(p(204, s), MSGPACK_PP_WHILE_204, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(204, s))
+# define MSGPACK_PP_WHILE_204_I(p, o, s) MSGPACK_PP_IF(p(205, s), MSGPACK_PP_WHILE_205, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(205, s))
+# define MSGPACK_PP_WHILE_205_I(p, o, s) MSGPACK_PP_IF(p(206, s), MSGPACK_PP_WHILE_206, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(206, s))
+# define MSGPACK_PP_WHILE_206_I(p, o, s) MSGPACK_PP_IF(p(207, s), MSGPACK_PP_WHILE_207, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(207, s))
+# define MSGPACK_PP_WHILE_207_I(p, o, s) MSGPACK_PP_IF(p(208, s), MSGPACK_PP_WHILE_208, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(208, s))
+# define MSGPACK_PP_WHILE_208_I(p, o, s) MSGPACK_PP_IF(p(209, s), MSGPACK_PP_WHILE_209, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(209, s))
+# define MSGPACK_PP_WHILE_209_I(p, o, s) MSGPACK_PP_IF(p(210, s), MSGPACK_PP_WHILE_210, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(210, s))
+# define MSGPACK_PP_WHILE_210_I(p, o, s) MSGPACK_PP_IF(p(211, s), MSGPACK_PP_WHILE_211, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(211, s))
+# define MSGPACK_PP_WHILE_211_I(p, o, s) MSGPACK_PP_IF(p(212, s), MSGPACK_PP_WHILE_212, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(212, s))
+# define MSGPACK_PP_WHILE_212_I(p, o, s) MSGPACK_PP_IF(p(213, s), MSGPACK_PP_WHILE_213, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(213, s))
+# define MSGPACK_PP_WHILE_213_I(p, o, s) MSGPACK_PP_IF(p(214, s), MSGPACK_PP_WHILE_214, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(214, s))
+# define MSGPACK_PP_WHILE_214_I(p, o, s) MSGPACK_PP_IF(p(215, s), MSGPACK_PP_WHILE_215, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(215, s))
+# define MSGPACK_PP_WHILE_215_I(p, o, s) MSGPACK_PP_IF(p(216, s), MSGPACK_PP_WHILE_216, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(216, s))
+# define MSGPACK_PP_WHILE_216_I(p, o, s) MSGPACK_PP_IF(p(217, s), MSGPACK_PP_WHILE_217, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(217, s))
+# define MSGPACK_PP_WHILE_217_I(p, o, s) MSGPACK_PP_IF(p(218, s), MSGPACK_PP_WHILE_218, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(218, s))
+# define MSGPACK_PP_WHILE_218_I(p, o, s) MSGPACK_PP_IF(p(219, s), MSGPACK_PP_WHILE_219, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(219, s))
+# define MSGPACK_PP_WHILE_219_I(p, o, s) MSGPACK_PP_IF(p(220, s), MSGPACK_PP_WHILE_220, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(220, s))
+# define MSGPACK_PP_WHILE_220_I(p, o, s) MSGPACK_PP_IF(p(221, s), MSGPACK_PP_WHILE_221, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(221, s))
+# define MSGPACK_PP_WHILE_221_I(p, o, s) MSGPACK_PP_IF(p(222, s), MSGPACK_PP_WHILE_222, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(222, s))
+# define MSGPACK_PP_WHILE_222_I(p, o, s) MSGPACK_PP_IF(p(223, s), MSGPACK_PP_WHILE_223, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(223, s))
+# define MSGPACK_PP_WHILE_223_I(p, o, s) MSGPACK_PP_IF(p(224, s), MSGPACK_PP_WHILE_224, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(224, s))
+# define MSGPACK_PP_WHILE_224_I(p, o, s) MSGPACK_PP_IF(p(225, s), MSGPACK_PP_WHILE_225, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(225, s))
+# define MSGPACK_PP_WHILE_225_I(p, o, s) MSGPACK_PP_IF(p(226, s), MSGPACK_PP_WHILE_226, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(226, s))
+# define MSGPACK_PP_WHILE_226_I(p, o, s) MSGPACK_PP_IF(p(227, s), MSGPACK_PP_WHILE_227, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(227, s))
+# define MSGPACK_PP_WHILE_227_I(p, o, s) MSGPACK_PP_IF(p(228, s), MSGPACK_PP_WHILE_228, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(228, s))
+# define MSGPACK_PP_WHILE_228_I(p, o, s) MSGPACK_PP_IF(p(229, s), MSGPACK_PP_WHILE_229, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(229, s))
+# define MSGPACK_PP_WHILE_229_I(p, o, s) MSGPACK_PP_IF(p(230, s), MSGPACK_PP_WHILE_230, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(230, s))
+# define MSGPACK_PP_WHILE_230_I(p, o, s) MSGPACK_PP_IF(p(231, s), MSGPACK_PP_WHILE_231, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(231, s))
+# define MSGPACK_PP_WHILE_231_I(p, o, s) MSGPACK_PP_IF(p(232, s), MSGPACK_PP_WHILE_232, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(232, s))
+# define MSGPACK_PP_WHILE_232_I(p, o, s) MSGPACK_PP_IF(p(233, s), MSGPACK_PP_WHILE_233, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(233, s))
+# define MSGPACK_PP_WHILE_233_I(p, o, s) MSGPACK_PP_IF(p(234, s), MSGPACK_PP_WHILE_234, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(234, s))
+# define MSGPACK_PP_WHILE_234_I(p, o, s) MSGPACK_PP_IF(p(235, s), MSGPACK_PP_WHILE_235, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(235, s))
+# define MSGPACK_PP_WHILE_235_I(p, o, s) MSGPACK_PP_IF(p(236, s), MSGPACK_PP_WHILE_236, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(236, s))
+# define MSGPACK_PP_WHILE_236_I(p, o, s) MSGPACK_PP_IF(p(237, s), MSGPACK_PP_WHILE_237, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(237, s))
+# define MSGPACK_PP_WHILE_237_I(p, o, s) MSGPACK_PP_IF(p(238, s), MSGPACK_PP_WHILE_238, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(238, s))
+# define MSGPACK_PP_WHILE_238_I(p, o, s) MSGPACK_PP_IF(p(239, s), MSGPACK_PP_WHILE_239, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(239, s))
+# define MSGPACK_PP_WHILE_239_I(p, o, s) MSGPACK_PP_IF(p(240, s), MSGPACK_PP_WHILE_240, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(240, s))
+# define MSGPACK_PP_WHILE_240_I(p, o, s) MSGPACK_PP_IF(p(241, s), MSGPACK_PP_WHILE_241, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(241, s))
+# define MSGPACK_PP_WHILE_241_I(p, o, s) MSGPACK_PP_IF(p(242, s), MSGPACK_PP_WHILE_242, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(242, s))
+# define MSGPACK_PP_WHILE_242_I(p, o, s) MSGPACK_PP_IF(p(243, s), MSGPACK_PP_WHILE_243, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(243, s))
+# define MSGPACK_PP_WHILE_243_I(p, o, s) MSGPACK_PP_IF(p(244, s), MSGPACK_PP_WHILE_244, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(244, s))
+# define MSGPACK_PP_WHILE_244_I(p, o, s) MSGPACK_PP_IF(p(245, s), MSGPACK_PP_WHILE_245, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(245, s))
+# define MSGPACK_PP_WHILE_245_I(p, o, s) MSGPACK_PP_IF(p(246, s), MSGPACK_PP_WHILE_246, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(246, s))
+# define MSGPACK_PP_WHILE_246_I(p, o, s) MSGPACK_PP_IF(p(247, s), MSGPACK_PP_WHILE_247, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(247, s))
+# define MSGPACK_PP_WHILE_247_I(p, o, s) MSGPACK_PP_IF(p(248, s), MSGPACK_PP_WHILE_248, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(248, s))
+# define MSGPACK_PP_WHILE_248_I(p, o, s) MSGPACK_PP_IF(p(249, s), MSGPACK_PP_WHILE_249, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(249, s))
+# define MSGPACK_PP_WHILE_249_I(p, o, s) MSGPACK_PP_IF(p(250, s), MSGPACK_PP_WHILE_250, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(250, s))
+# define MSGPACK_PP_WHILE_250_I(p, o, s) MSGPACK_PP_IF(p(251, s), MSGPACK_PP_WHILE_251, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(251, s))
+# define MSGPACK_PP_WHILE_251_I(p, o, s) MSGPACK_PP_IF(p(252, s), MSGPACK_PP_WHILE_252, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(252, s))
+# define MSGPACK_PP_WHILE_252_I(p, o, s) MSGPACK_PP_IF(p(253, s), MSGPACK_PP_WHILE_253, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(253, s))
+# define MSGPACK_PP_WHILE_253_I(p, o, s) MSGPACK_PP_IF(p(254, s), MSGPACK_PP_WHILE_254, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(254, s))
+# define MSGPACK_PP_WHILE_254_I(p, o, s) MSGPACK_PP_IF(p(255, s), MSGPACK_PP_WHILE_255, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(255, s))
+# define MSGPACK_PP_WHILE_255_I(p, o, s) MSGPACK_PP_IF(p(256, s), MSGPACK_PP_WHILE_256, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(256, s))
+# define MSGPACK_PP_WHILE_256_I(p, o, s) MSGPACK_PP_IF(p(257, s), MSGPACK_PP_WHILE_257, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(257, s))
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/control/detail/msvc/while.hpp b/third_party/msgpack/include/msgpack/preprocessor/control/detail/msvc/while.hpp
new file mode 100644
index 0000000000..177160d5a8
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/control/detail/msvc/while.hpp
@@ -0,0 +1,277 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_CONTROL_DETAIL_MSVC_WHILE_HPP
+# define MSGPACK_PREPROCESSOR_CONTROL_DETAIL_MSVC_WHILE_HPP
+#
+# include <msgpack/preprocessor/control/if.hpp>
+# include <msgpack/preprocessor/tuple/eat.hpp>
+#
+# define MSGPACK_PP_WHILE_1(p, o, s) MSGPACK_PP_IF(p(2, s), MSGPACK_PP_WHILE_2, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(2, s))
+# define MSGPACK_PP_WHILE_2(p, o, s) MSGPACK_PP_IF(p(3, s), MSGPACK_PP_WHILE_3, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(3, s))
+# define MSGPACK_PP_WHILE_3(p, o, s) MSGPACK_PP_IF(p(4, s), MSGPACK_PP_WHILE_4, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(4, s))
+# define MSGPACK_PP_WHILE_4(p, o, s) MSGPACK_PP_IF(p(5, s), MSGPACK_PP_WHILE_5, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(5, s))
+# define MSGPACK_PP_WHILE_5(p, o, s) MSGPACK_PP_IF(p(6, s), MSGPACK_PP_WHILE_6, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(6, s))
+# define MSGPACK_PP_WHILE_6(p, o, s) MSGPACK_PP_IF(p(7, s), MSGPACK_PP_WHILE_7, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(7, s))
+# define MSGPACK_PP_WHILE_7(p, o, s) MSGPACK_PP_IF(p(8, s), MSGPACK_PP_WHILE_8, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(8, s))
+# define MSGPACK_PP_WHILE_8(p, o, s) MSGPACK_PP_IF(p(9, s), MSGPACK_PP_WHILE_9, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(9, s))
+# define MSGPACK_PP_WHILE_9(p, o, s) MSGPACK_PP_IF(p(10, s), MSGPACK_PP_WHILE_10, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(10, s))
+# define MSGPACK_PP_WHILE_10(p, o, s) MSGPACK_PP_IF(p(11, s), MSGPACK_PP_WHILE_11, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(11, s))
+# define MSGPACK_PP_WHILE_11(p, o, s) MSGPACK_PP_IF(p(12, s), MSGPACK_PP_WHILE_12, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(12, s))
+# define MSGPACK_PP_WHILE_12(p, o, s) MSGPACK_PP_IF(p(13, s), MSGPACK_PP_WHILE_13, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(13, s))
+# define MSGPACK_PP_WHILE_13(p, o, s) MSGPACK_PP_IF(p(14, s), MSGPACK_PP_WHILE_14, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(14, s))
+# define MSGPACK_PP_WHILE_14(p, o, s) MSGPACK_PP_IF(p(15, s), MSGPACK_PP_WHILE_15, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(15, s))
+# define MSGPACK_PP_WHILE_15(p, o, s) MSGPACK_PP_IF(p(16, s), MSGPACK_PP_WHILE_16, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(16, s))
+# define MSGPACK_PP_WHILE_16(p, o, s) MSGPACK_PP_IF(p(17, s), MSGPACK_PP_WHILE_17, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(17, s))
+# define MSGPACK_PP_WHILE_17(p, o, s) MSGPACK_PP_IF(p(18, s), MSGPACK_PP_WHILE_18, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(18, s))
+# define MSGPACK_PP_WHILE_18(p, o, s) MSGPACK_PP_IF(p(19, s), MSGPACK_PP_WHILE_19, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(19, s))
+# define MSGPACK_PP_WHILE_19(p, o, s) MSGPACK_PP_IF(p(20, s), MSGPACK_PP_WHILE_20, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(20, s))
+# define MSGPACK_PP_WHILE_20(p, o, s) MSGPACK_PP_IF(p(21, s), MSGPACK_PP_WHILE_21, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(21, s))
+# define MSGPACK_PP_WHILE_21(p, o, s) MSGPACK_PP_IF(p(22, s), MSGPACK_PP_WHILE_22, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(22, s))
+# define MSGPACK_PP_WHILE_22(p, o, s) MSGPACK_PP_IF(p(23, s), MSGPACK_PP_WHILE_23, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(23, s))
+# define MSGPACK_PP_WHILE_23(p, o, s) MSGPACK_PP_IF(p(24, s), MSGPACK_PP_WHILE_24, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(24, s))
+# define MSGPACK_PP_WHILE_24(p, o, s) MSGPACK_PP_IF(p(25, s), MSGPACK_PP_WHILE_25, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(25, s))
+# define MSGPACK_PP_WHILE_25(p, o, s) MSGPACK_PP_IF(p(26, s), MSGPACK_PP_WHILE_26, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(26, s))
+# define MSGPACK_PP_WHILE_26(p, o, s) MSGPACK_PP_IF(p(27, s), MSGPACK_PP_WHILE_27, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(27, s))
+# define MSGPACK_PP_WHILE_27(p, o, s) MSGPACK_PP_IF(p(28, s), MSGPACK_PP_WHILE_28, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(28, s))
+# define MSGPACK_PP_WHILE_28(p, o, s) MSGPACK_PP_IF(p(29, s), MSGPACK_PP_WHILE_29, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(29, s))
+# define MSGPACK_PP_WHILE_29(p, o, s) MSGPACK_PP_IF(p(30, s), MSGPACK_PP_WHILE_30, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(30, s))
+# define MSGPACK_PP_WHILE_30(p, o, s) MSGPACK_PP_IF(p(31, s), MSGPACK_PP_WHILE_31, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(31, s))
+# define MSGPACK_PP_WHILE_31(p, o, s) MSGPACK_PP_IF(p(32, s), MSGPACK_PP_WHILE_32, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(32, s))
+# define MSGPACK_PP_WHILE_32(p, o, s) MSGPACK_PP_IF(p(33, s), MSGPACK_PP_WHILE_33, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(33, s))
+# define MSGPACK_PP_WHILE_33(p, o, s) MSGPACK_PP_IF(p(34, s), MSGPACK_PP_WHILE_34, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(34, s))
+# define MSGPACK_PP_WHILE_34(p, o, s) MSGPACK_PP_IF(p(35, s), MSGPACK_PP_WHILE_35, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(35, s))
+# define MSGPACK_PP_WHILE_35(p, o, s) MSGPACK_PP_IF(p(36, s), MSGPACK_PP_WHILE_36, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(36, s))
+# define MSGPACK_PP_WHILE_36(p, o, s) MSGPACK_PP_IF(p(37, s), MSGPACK_PP_WHILE_37, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(37, s))
+# define MSGPACK_PP_WHILE_37(p, o, s) MSGPACK_PP_IF(p(38, s), MSGPACK_PP_WHILE_38, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(38, s))
+# define MSGPACK_PP_WHILE_38(p, o, s) MSGPACK_PP_IF(p(39, s), MSGPACK_PP_WHILE_39, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(39, s))
+# define MSGPACK_PP_WHILE_39(p, o, s) MSGPACK_PP_IF(p(40, s), MSGPACK_PP_WHILE_40, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(40, s))
+# define MSGPACK_PP_WHILE_40(p, o, s) MSGPACK_PP_IF(p(41, s), MSGPACK_PP_WHILE_41, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(41, s))
+# define MSGPACK_PP_WHILE_41(p, o, s) MSGPACK_PP_IF(p(42, s), MSGPACK_PP_WHILE_42, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(42, s))
+# define MSGPACK_PP_WHILE_42(p, o, s) MSGPACK_PP_IF(p(43, s), MSGPACK_PP_WHILE_43, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(43, s))
+# define MSGPACK_PP_WHILE_43(p, o, s) MSGPACK_PP_IF(p(44, s), MSGPACK_PP_WHILE_44, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(44, s))
+# define MSGPACK_PP_WHILE_44(p, o, s) MSGPACK_PP_IF(p(45, s), MSGPACK_PP_WHILE_45, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(45, s))
+# define MSGPACK_PP_WHILE_45(p, o, s) MSGPACK_PP_IF(p(46, s), MSGPACK_PP_WHILE_46, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(46, s))
+# define MSGPACK_PP_WHILE_46(p, o, s) MSGPACK_PP_IF(p(47, s), MSGPACK_PP_WHILE_47, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(47, s))
+# define MSGPACK_PP_WHILE_47(p, o, s) MSGPACK_PP_IF(p(48, s), MSGPACK_PP_WHILE_48, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(48, s))
+# define MSGPACK_PP_WHILE_48(p, o, s) MSGPACK_PP_IF(p(49, s), MSGPACK_PP_WHILE_49, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(49, s))
+# define MSGPACK_PP_WHILE_49(p, o, s) MSGPACK_PP_IF(p(50, s), MSGPACK_PP_WHILE_50, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(50, s))
+# define MSGPACK_PP_WHILE_50(p, o, s) MSGPACK_PP_IF(p(51, s), MSGPACK_PP_WHILE_51, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(51, s))
+# define MSGPACK_PP_WHILE_51(p, o, s) MSGPACK_PP_IF(p(52, s), MSGPACK_PP_WHILE_52, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(52, s))
+# define MSGPACK_PP_WHILE_52(p, o, s) MSGPACK_PP_IF(p(53, s), MSGPACK_PP_WHILE_53, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(53, s))
+# define MSGPACK_PP_WHILE_53(p, o, s) MSGPACK_PP_IF(p(54, s), MSGPACK_PP_WHILE_54, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(54, s))
+# define MSGPACK_PP_WHILE_54(p, o, s) MSGPACK_PP_IF(p(55, s), MSGPACK_PP_WHILE_55, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(55, s))
+# define MSGPACK_PP_WHILE_55(p, o, s) MSGPACK_PP_IF(p(56, s), MSGPACK_PP_WHILE_56, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(56, s))
+# define MSGPACK_PP_WHILE_56(p, o, s) MSGPACK_PP_IF(p(57, s), MSGPACK_PP_WHILE_57, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(57, s))
+# define MSGPACK_PP_WHILE_57(p, o, s) MSGPACK_PP_IF(p(58, s), MSGPACK_PP_WHILE_58, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(58, s))
+# define MSGPACK_PP_WHILE_58(p, o, s) MSGPACK_PP_IF(p(59, s), MSGPACK_PP_WHILE_59, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(59, s))
+# define MSGPACK_PP_WHILE_59(p, o, s) MSGPACK_PP_IF(p(60, s), MSGPACK_PP_WHILE_60, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(60, s))
+# define MSGPACK_PP_WHILE_60(p, o, s) MSGPACK_PP_IF(p(61, s), MSGPACK_PP_WHILE_61, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(61, s))
+# define MSGPACK_PP_WHILE_61(p, o, s) MSGPACK_PP_IF(p(62, s), MSGPACK_PP_WHILE_62, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(62, s))
+# define MSGPACK_PP_WHILE_62(p, o, s) MSGPACK_PP_IF(p(63, s), MSGPACK_PP_WHILE_63, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(63, s))
+# define MSGPACK_PP_WHILE_63(p, o, s) MSGPACK_PP_IF(p(64, s), MSGPACK_PP_WHILE_64, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(64, s))
+# define MSGPACK_PP_WHILE_64(p, o, s) MSGPACK_PP_IF(p(65, s), MSGPACK_PP_WHILE_65, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(65, s))
+# define MSGPACK_PP_WHILE_65(p, o, s) MSGPACK_PP_IF(p(66, s), MSGPACK_PP_WHILE_66, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(66, s))
+# define MSGPACK_PP_WHILE_66(p, o, s) MSGPACK_PP_IF(p(67, s), MSGPACK_PP_WHILE_67, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(67, s))
+# define MSGPACK_PP_WHILE_67(p, o, s) MSGPACK_PP_IF(p(68, s), MSGPACK_PP_WHILE_68, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(68, s))
+# define MSGPACK_PP_WHILE_68(p, o, s) MSGPACK_PP_IF(p(69, s), MSGPACK_PP_WHILE_69, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(69, s))
+# define MSGPACK_PP_WHILE_69(p, o, s) MSGPACK_PP_IF(p(70, s), MSGPACK_PP_WHILE_70, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(70, s))
+# define MSGPACK_PP_WHILE_70(p, o, s) MSGPACK_PP_IF(p(71, s), MSGPACK_PP_WHILE_71, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(71, s))
+# define MSGPACK_PP_WHILE_71(p, o, s) MSGPACK_PP_IF(p(72, s), MSGPACK_PP_WHILE_72, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(72, s))
+# define MSGPACK_PP_WHILE_72(p, o, s) MSGPACK_PP_IF(p(73, s), MSGPACK_PP_WHILE_73, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(73, s))
+# define MSGPACK_PP_WHILE_73(p, o, s) MSGPACK_PP_IF(p(74, s), MSGPACK_PP_WHILE_74, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(74, s))
+# define MSGPACK_PP_WHILE_74(p, o, s) MSGPACK_PP_IF(p(75, s), MSGPACK_PP_WHILE_75, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(75, s))
+# define MSGPACK_PP_WHILE_75(p, o, s) MSGPACK_PP_IF(p(76, s), MSGPACK_PP_WHILE_76, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(76, s))
+# define MSGPACK_PP_WHILE_76(p, o, s) MSGPACK_PP_IF(p(77, s), MSGPACK_PP_WHILE_77, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(77, s))
+# define MSGPACK_PP_WHILE_77(p, o, s) MSGPACK_PP_IF(p(78, s), MSGPACK_PP_WHILE_78, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(78, s))
+# define MSGPACK_PP_WHILE_78(p, o, s) MSGPACK_PP_IF(p(79, s), MSGPACK_PP_WHILE_79, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(79, s))
+# define MSGPACK_PP_WHILE_79(p, o, s) MSGPACK_PP_IF(p(80, s), MSGPACK_PP_WHILE_80, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(80, s))
+# define MSGPACK_PP_WHILE_80(p, o, s) MSGPACK_PP_IF(p(81, s), MSGPACK_PP_WHILE_81, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(81, s))
+# define MSGPACK_PP_WHILE_81(p, o, s) MSGPACK_PP_IF(p(82, s), MSGPACK_PP_WHILE_82, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(82, s))
+# define MSGPACK_PP_WHILE_82(p, o, s) MSGPACK_PP_IF(p(83, s), MSGPACK_PP_WHILE_83, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(83, s))
+# define MSGPACK_PP_WHILE_83(p, o, s) MSGPACK_PP_IF(p(84, s), MSGPACK_PP_WHILE_84, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(84, s))
+# define MSGPACK_PP_WHILE_84(p, o, s) MSGPACK_PP_IF(p(85, s), MSGPACK_PP_WHILE_85, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(85, s))
+# define MSGPACK_PP_WHILE_85(p, o, s) MSGPACK_PP_IF(p(86, s), MSGPACK_PP_WHILE_86, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(86, s))
+# define MSGPACK_PP_WHILE_86(p, o, s) MSGPACK_PP_IF(p(87, s), MSGPACK_PP_WHILE_87, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(87, s))
+# define MSGPACK_PP_WHILE_87(p, o, s) MSGPACK_PP_IF(p(88, s), MSGPACK_PP_WHILE_88, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(88, s))
+# define MSGPACK_PP_WHILE_88(p, o, s) MSGPACK_PP_IF(p(89, s), MSGPACK_PP_WHILE_89, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(89, s))
+# define MSGPACK_PP_WHILE_89(p, o, s) MSGPACK_PP_IF(p(90, s), MSGPACK_PP_WHILE_90, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(90, s))
+# define MSGPACK_PP_WHILE_90(p, o, s) MSGPACK_PP_IF(p(91, s), MSGPACK_PP_WHILE_91, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(91, s))
+# define MSGPACK_PP_WHILE_91(p, o, s) MSGPACK_PP_IF(p(92, s), MSGPACK_PP_WHILE_92, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(92, s))
+# define MSGPACK_PP_WHILE_92(p, o, s) MSGPACK_PP_IF(p(93, s), MSGPACK_PP_WHILE_93, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(93, s))
+# define MSGPACK_PP_WHILE_93(p, o, s) MSGPACK_PP_IF(p(94, s), MSGPACK_PP_WHILE_94, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(94, s))
+# define MSGPACK_PP_WHILE_94(p, o, s) MSGPACK_PP_IF(p(95, s), MSGPACK_PP_WHILE_95, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(95, s))
+# define MSGPACK_PP_WHILE_95(p, o, s) MSGPACK_PP_IF(p(96, s), MSGPACK_PP_WHILE_96, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(96, s))
+# define MSGPACK_PP_WHILE_96(p, o, s) MSGPACK_PP_IF(p(97, s), MSGPACK_PP_WHILE_97, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(97, s))
+# define MSGPACK_PP_WHILE_97(p, o, s) MSGPACK_PP_IF(p(98, s), MSGPACK_PP_WHILE_98, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(98, s))
+# define MSGPACK_PP_WHILE_98(p, o, s) MSGPACK_PP_IF(p(99, s), MSGPACK_PP_WHILE_99, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(99, s))
+# define MSGPACK_PP_WHILE_99(p, o, s) MSGPACK_PP_IF(p(100, s), MSGPACK_PP_WHILE_100, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(100, s))
+# define MSGPACK_PP_WHILE_100(p, o, s) MSGPACK_PP_IF(p(101, s), MSGPACK_PP_WHILE_101, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(101, s))
+# define MSGPACK_PP_WHILE_101(p, o, s) MSGPACK_PP_IF(p(102, s), MSGPACK_PP_WHILE_102, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(102, s))
+# define MSGPACK_PP_WHILE_102(p, o, s) MSGPACK_PP_IF(p(103, s), MSGPACK_PP_WHILE_103, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(103, s))
+# define MSGPACK_PP_WHILE_103(p, o, s) MSGPACK_PP_IF(p(104, s), MSGPACK_PP_WHILE_104, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(104, s))
+# define MSGPACK_PP_WHILE_104(p, o, s) MSGPACK_PP_IF(p(105, s), MSGPACK_PP_WHILE_105, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(105, s))
+# define MSGPACK_PP_WHILE_105(p, o, s) MSGPACK_PP_IF(p(106, s), MSGPACK_PP_WHILE_106, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(106, s))
+# define MSGPACK_PP_WHILE_106(p, o, s) MSGPACK_PP_IF(p(107, s), MSGPACK_PP_WHILE_107, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(107, s))
+# define MSGPACK_PP_WHILE_107(p, o, s) MSGPACK_PP_IF(p(108, s), MSGPACK_PP_WHILE_108, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(108, s))
+# define MSGPACK_PP_WHILE_108(p, o, s) MSGPACK_PP_IF(p(109, s), MSGPACK_PP_WHILE_109, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(109, s))
+# define MSGPACK_PP_WHILE_109(p, o, s) MSGPACK_PP_IF(p(110, s), MSGPACK_PP_WHILE_110, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(110, s))
+# define MSGPACK_PP_WHILE_110(p, o, s) MSGPACK_PP_IF(p(111, s), MSGPACK_PP_WHILE_111, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(111, s))
+# define MSGPACK_PP_WHILE_111(p, o, s) MSGPACK_PP_IF(p(112, s), MSGPACK_PP_WHILE_112, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(112, s))
+# define MSGPACK_PP_WHILE_112(p, o, s) MSGPACK_PP_IF(p(113, s), MSGPACK_PP_WHILE_113, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(113, s))
+# define MSGPACK_PP_WHILE_113(p, o, s) MSGPACK_PP_IF(p(114, s), MSGPACK_PP_WHILE_114, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(114, s))
+# define MSGPACK_PP_WHILE_114(p, o, s) MSGPACK_PP_IF(p(115, s), MSGPACK_PP_WHILE_115, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(115, s))
+# define MSGPACK_PP_WHILE_115(p, o, s) MSGPACK_PP_IF(p(116, s), MSGPACK_PP_WHILE_116, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(116, s))
+# define MSGPACK_PP_WHILE_116(p, o, s) MSGPACK_PP_IF(p(117, s), MSGPACK_PP_WHILE_117, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(117, s))
+# define MSGPACK_PP_WHILE_117(p, o, s) MSGPACK_PP_IF(p(118, s), MSGPACK_PP_WHILE_118, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(118, s))
+# define MSGPACK_PP_WHILE_118(p, o, s) MSGPACK_PP_IF(p(119, s), MSGPACK_PP_WHILE_119, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(119, s))
+# define MSGPACK_PP_WHILE_119(p, o, s) MSGPACK_PP_IF(p(120, s), MSGPACK_PP_WHILE_120, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(120, s))
+# define MSGPACK_PP_WHILE_120(p, o, s) MSGPACK_PP_IF(p(121, s), MSGPACK_PP_WHILE_121, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(121, s))
+# define MSGPACK_PP_WHILE_121(p, o, s) MSGPACK_PP_IF(p(122, s), MSGPACK_PP_WHILE_122, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(122, s))
+# define MSGPACK_PP_WHILE_122(p, o, s) MSGPACK_PP_IF(p(123, s), MSGPACK_PP_WHILE_123, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(123, s))
+# define MSGPACK_PP_WHILE_123(p, o, s) MSGPACK_PP_IF(p(124, s), MSGPACK_PP_WHILE_124, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(124, s))
+# define MSGPACK_PP_WHILE_124(p, o, s) MSGPACK_PP_IF(p(125, s), MSGPACK_PP_WHILE_125, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(125, s))
+# define MSGPACK_PP_WHILE_125(p, o, s) MSGPACK_PP_IF(p(126, s), MSGPACK_PP_WHILE_126, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(126, s))
+# define MSGPACK_PP_WHILE_126(p, o, s) MSGPACK_PP_IF(p(127, s), MSGPACK_PP_WHILE_127, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(127, s))
+# define MSGPACK_PP_WHILE_127(p, o, s) MSGPACK_PP_IF(p(128, s), MSGPACK_PP_WHILE_128, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(128, s))
+# define MSGPACK_PP_WHILE_128(p, o, s) MSGPACK_PP_IF(p(129, s), MSGPACK_PP_WHILE_129, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(129, s))
+# define MSGPACK_PP_WHILE_129(p, o, s) MSGPACK_PP_IF(p(130, s), MSGPACK_PP_WHILE_130, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(130, s))
+# define MSGPACK_PP_WHILE_130(p, o, s) MSGPACK_PP_IF(p(131, s), MSGPACK_PP_WHILE_131, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(131, s))
+# define MSGPACK_PP_WHILE_131(p, o, s) MSGPACK_PP_IF(p(132, s), MSGPACK_PP_WHILE_132, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(132, s))
+# define MSGPACK_PP_WHILE_132(p, o, s) MSGPACK_PP_IF(p(133, s), MSGPACK_PP_WHILE_133, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(133, s))
+# define MSGPACK_PP_WHILE_133(p, o, s) MSGPACK_PP_IF(p(134, s), MSGPACK_PP_WHILE_134, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(134, s))
+# define MSGPACK_PP_WHILE_134(p, o, s) MSGPACK_PP_IF(p(135, s), MSGPACK_PP_WHILE_135, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(135, s))
+# define MSGPACK_PP_WHILE_135(p, o, s) MSGPACK_PP_IF(p(136, s), MSGPACK_PP_WHILE_136, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(136, s))
+# define MSGPACK_PP_WHILE_136(p, o, s) MSGPACK_PP_IF(p(137, s), MSGPACK_PP_WHILE_137, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(137, s))
+# define MSGPACK_PP_WHILE_137(p, o, s) MSGPACK_PP_IF(p(138, s), MSGPACK_PP_WHILE_138, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(138, s))
+# define MSGPACK_PP_WHILE_138(p, o, s) MSGPACK_PP_IF(p(139, s), MSGPACK_PP_WHILE_139, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(139, s))
+# define MSGPACK_PP_WHILE_139(p, o, s) MSGPACK_PP_IF(p(140, s), MSGPACK_PP_WHILE_140, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(140, s))
+# define MSGPACK_PP_WHILE_140(p, o, s) MSGPACK_PP_IF(p(141, s), MSGPACK_PP_WHILE_141, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(141, s))
+# define MSGPACK_PP_WHILE_141(p, o, s) MSGPACK_PP_IF(p(142, s), MSGPACK_PP_WHILE_142, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(142, s))
+# define MSGPACK_PP_WHILE_142(p, o, s) MSGPACK_PP_IF(p(143, s), MSGPACK_PP_WHILE_143, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(143, s))
+# define MSGPACK_PP_WHILE_143(p, o, s) MSGPACK_PP_IF(p(144, s), MSGPACK_PP_WHILE_144, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(144, s))
+# define MSGPACK_PP_WHILE_144(p, o, s) MSGPACK_PP_IF(p(145, s), MSGPACK_PP_WHILE_145, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(145, s))
+# define MSGPACK_PP_WHILE_145(p, o, s) MSGPACK_PP_IF(p(146, s), MSGPACK_PP_WHILE_146, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(146, s))
+# define MSGPACK_PP_WHILE_146(p, o, s) MSGPACK_PP_IF(p(147, s), MSGPACK_PP_WHILE_147, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(147, s))
+# define MSGPACK_PP_WHILE_147(p, o, s) MSGPACK_PP_IF(p(148, s), MSGPACK_PP_WHILE_148, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(148, s))
+# define MSGPACK_PP_WHILE_148(p, o, s) MSGPACK_PP_IF(p(149, s), MSGPACK_PP_WHILE_149, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(149, s))
+# define MSGPACK_PP_WHILE_149(p, o, s) MSGPACK_PP_IF(p(150, s), MSGPACK_PP_WHILE_150, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(150, s))
+# define MSGPACK_PP_WHILE_150(p, o, s) MSGPACK_PP_IF(p(151, s), MSGPACK_PP_WHILE_151, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(151, s))
+# define MSGPACK_PP_WHILE_151(p, o, s) MSGPACK_PP_IF(p(152, s), MSGPACK_PP_WHILE_152, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(152, s))
+# define MSGPACK_PP_WHILE_152(p, o, s) MSGPACK_PP_IF(p(153, s), MSGPACK_PP_WHILE_153, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(153, s))
+# define MSGPACK_PP_WHILE_153(p, o, s) MSGPACK_PP_IF(p(154, s), MSGPACK_PP_WHILE_154, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(154, s))
+# define MSGPACK_PP_WHILE_154(p, o, s) MSGPACK_PP_IF(p(155, s), MSGPACK_PP_WHILE_155, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(155, s))
+# define MSGPACK_PP_WHILE_155(p, o, s) MSGPACK_PP_IF(p(156, s), MSGPACK_PP_WHILE_156, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(156, s))
+# define MSGPACK_PP_WHILE_156(p, o, s) MSGPACK_PP_IF(p(157, s), MSGPACK_PP_WHILE_157, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(157, s))
+# define MSGPACK_PP_WHILE_157(p, o, s) MSGPACK_PP_IF(p(158, s), MSGPACK_PP_WHILE_158, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(158, s))
+# define MSGPACK_PP_WHILE_158(p, o, s) MSGPACK_PP_IF(p(159, s), MSGPACK_PP_WHILE_159, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(159, s))
+# define MSGPACK_PP_WHILE_159(p, o, s) MSGPACK_PP_IF(p(160, s), MSGPACK_PP_WHILE_160, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(160, s))
+# define MSGPACK_PP_WHILE_160(p, o, s) MSGPACK_PP_IF(p(161, s), MSGPACK_PP_WHILE_161, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(161, s))
+# define MSGPACK_PP_WHILE_161(p, o, s) MSGPACK_PP_IF(p(162, s), MSGPACK_PP_WHILE_162, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(162, s))
+# define MSGPACK_PP_WHILE_162(p, o, s) MSGPACK_PP_IF(p(163, s), MSGPACK_PP_WHILE_163, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(163, s))
+# define MSGPACK_PP_WHILE_163(p, o, s) MSGPACK_PP_IF(p(164, s), MSGPACK_PP_WHILE_164, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(164, s))
+# define MSGPACK_PP_WHILE_164(p, o, s) MSGPACK_PP_IF(p(165, s), MSGPACK_PP_WHILE_165, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(165, s))
+# define MSGPACK_PP_WHILE_165(p, o, s) MSGPACK_PP_IF(p(166, s), MSGPACK_PP_WHILE_166, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(166, s))
+# define MSGPACK_PP_WHILE_166(p, o, s) MSGPACK_PP_IF(p(167, s), MSGPACK_PP_WHILE_167, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(167, s))
+# define MSGPACK_PP_WHILE_167(p, o, s) MSGPACK_PP_IF(p(168, s), MSGPACK_PP_WHILE_168, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(168, s))
+# define MSGPACK_PP_WHILE_168(p, o, s) MSGPACK_PP_IF(p(169, s), MSGPACK_PP_WHILE_169, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(169, s))
+# define MSGPACK_PP_WHILE_169(p, o, s) MSGPACK_PP_IF(p(170, s), MSGPACK_PP_WHILE_170, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(170, s))
+# define MSGPACK_PP_WHILE_170(p, o, s) MSGPACK_PP_IF(p(171, s), MSGPACK_PP_WHILE_171, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(171, s))
+# define MSGPACK_PP_WHILE_171(p, o, s) MSGPACK_PP_IF(p(172, s), MSGPACK_PP_WHILE_172, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(172, s))
+# define MSGPACK_PP_WHILE_172(p, o, s) MSGPACK_PP_IF(p(173, s), MSGPACK_PP_WHILE_173, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(173, s))
+# define MSGPACK_PP_WHILE_173(p, o, s) MSGPACK_PP_IF(p(174, s), MSGPACK_PP_WHILE_174, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(174, s))
+# define MSGPACK_PP_WHILE_174(p, o, s) MSGPACK_PP_IF(p(175, s), MSGPACK_PP_WHILE_175, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(175, s))
+# define MSGPACK_PP_WHILE_175(p, o, s) MSGPACK_PP_IF(p(176, s), MSGPACK_PP_WHILE_176, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(176, s))
+# define MSGPACK_PP_WHILE_176(p, o, s) MSGPACK_PP_IF(p(177, s), MSGPACK_PP_WHILE_177, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(177, s))
+# define MSGPACK_PP_WHILE_177(p, o, s) MSGPACK_PP_IF(p(178, s), MSGPACK_PP_WHILE_178, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(178, s))
+# define MSGPACK_PP_WHILE_178(p, o, s) MSGPACK_PP_IF(p(179, s), MSGPACK_PP_WHILE_179, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(179, s))
+# define MSGPACK_PP_WHILE_179(p, o, s) MSGPACK_PP_IF(p(180, s), MSGPACK_PP_WHILE_180, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(180, s))
+# define MSGPACK_PP_WHILE_180(p, o, s) MSGPACK_PP_IF(p(181, s), MSGPACK_PP_WHILE_181, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(181, s))
+# define MSGPACK_PP_WHILE_181(p, o, s) MSGPACK_PP_IF(p(182, s), MSGPACK_PP_WHILE_182, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(182, s))
+# define MSGPACK_PP_WHILE_182(p, o, s) MSGPACK_PP_IF(p(183, s), MSGPACK_PP_WHILE_183, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(183, s))
+# define MSGPACK_PP_WHILE_183(p, o, s) MSGPACK_PP_IF(p(184, s), MSGPACK_PP_WHILE_184, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(184, s))
+# define MSGPACK_PP_WHILE_184(p, o, s) MSGPACK_PP_IF(p(185, s), MSGPACK_PP_WHILE_185, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(185, s))
+# define MSGPACK_PP_WHILE_185(p, o, s) MSGPACK_PP_IF(p(186, s), MSGPACK_PP_WHILE_186, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(186, s))
+# define MSGPACK_PP_WHILE_186(p, o, s) MSGPACK_PP_IF(p(187, s), MSGPACK_PP_WHILE_187, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(187, s))
+# define MSGPACK_PP_WHILE_187(p, o, s) MSGPACK_PP_IF(p(188, s), MSGPACK_PP_WHILE_188, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(188, s))
+# define MSGPACK_PP_WHILE_188(p, o, s) MSGPACK_PP_IF(p(189, s), MSGPACK_PP_WHILE_189, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(189, s))
+# define MSGPACK_PP_WHILE_189(p, o, s) MSGPACK_PP_IF(p(190, s), MSGPACK_PP_WHILE_190, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(190, s))
+# define MSGPACK_PP_WHILE_190(p, o, s) MSGPACK_PP_IF(p(191, s), MSGPACK_PP_WHILE_191, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(191, s))
+# define MSGPACK_PP_WHILE_191(p, o, s) MSGPACK_PP_IF(p(192, s), MSGPACK_PP_WHILE_192, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(192, s))
+# define MSGPACK_PP_WHILE_192(p, o, s) MSGPACK_PP_IF(p(193, s), MSGPACK_PP_WHILE_193, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(193, s))
+# define MSGPACK_PP_WHILE_193(p, o, s) MSGPACK_PP_IF(p(194, s), MSGPACK_PP_WHILE_194, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(194, s))
+# define MSGPACK_PP_WHILE_194(p, o, s) MSGPACK_PP_IF(p(195, s), MSGPACK_PP_WHILE_195, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(195, s))
+# define MSGPACK_PP_WHILE_195(p, o, s) MSGPACK_PP_IF(p(196, s), MSGPACK_PP_WHILE_196, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(196, s))
+# define MSGPACK_PP_WHILE_196(p, o, s) MSGPACK_PP_IF(p(197, s), MSGPACK_PP_WHILE_197, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(197, s))
+# define MSGPACK_PP_WHILE_197(p, o, s) MSGPACK_PP_IF(p(198, s), MSGPACK_PP_WHILE_198, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(198, s))
+# define MSGPACK_PP_WHILE_198(p, o, s) MSGPACK_PP_IF(p(199, s), MSGPACK_PP_WHILE_199, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(199, s))
+# define MSGPACK_PP_WHILE_199(p, o, s) MSGPACK_PP_IF(p(200, s), MSGPACK_PP_WHILE_200, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(200, s))
+# define MSGPACK_PP_WHILE_200(p, o, s) MSGPACK_PP_IF(p(201, s), MSGPACK_PP_WHILE_201, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(201, s))
+# define MSGPACK_PP_WHILE_201(p, o, s) MSGPACK_PP_IF(p(202, s), MSGPACK_PP_WHILE_202, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(202, s))
+# define MSGPACK_PP_WHILE_202(p, o, s) MSGPACK_PP_IF(p(203, s), MSGPACK_PP_WHILE_203, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(203, s))
+# define MSGPACK_PP_WHILE_203(p, o, s) MSGPACK_PP_IF(p(204, s), MSGPACK_PP_WHILE_204, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(204, s))
+# define MSGPACK_PP_WHILE_204(p, o, s) MSGPACK_PP_IF(p(205, s), MSGPACK_PP_WHILE_205, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(205, s))
+# define MSGPACK_PP_WHILE_205(p, o, s) MSGPACK_PP_IF(p(206, s), MSGPACK_PP_WHILE_206, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(206, s))
+# define MSGPACK_PP_WHILE_206(p, o, s) MSGPACK_PP_IF(p(207, s), MSGPACK_PP_WHILE_207, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(207, s))
+# define MSGPACK_PP_WHILE_207(p, o, s) MSGPACK_PP_IF(p(208, s), MSGPACK_PP_WHILE_208, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(208, s))
+# define MSGPACK_PP_WHILE_208(p, o, s) MSGPACK_PP_IF(p(209, s), MSGPACK_PP_WHILE_209, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(209, s))
+# define MSGPACK_PP_WHILE_209(p, o, s) MSGPACK_PP_IF(p(210, s), MSGPACK_PP_WHILE_210, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(210, s))
+# define MSGPACK_PP_WHILE_210(p, o, s) MSGPACK_PP_IF(p(211, s), MSGPACK_PP_WHILE_211, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(211, s))
+# define MSGPACK_PP_WHILE_211(p, o, s) MSGPACK_PP_IF(p(212, s), MSGPACK_PP_WHILE_212, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(212, s))
+# define MSGPACK_PP_WHILE_212(p, o, s) MSGPACK_PP_IF(p(213, s), MSGPACK_PP_WHILE_213, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(213, s))
+# define MSGPACK_PP_WHILE_213(p, o, s) MSGPACK_PP_IF(p(214, s), MSGPACK_PP_WHILE_214, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(214, s))
+# define MSGPACK_PP_WHILE_214(p, o, s) MSGPACK_PP_IF(p(215, s), MSGPACK_PP_WHILE_215, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(215, s))
+# define MSGPACK_PP_WHILE_215(p, o, s) MSGPACK_PP_IF(p(216, s), MSGPACK_PP_WHILE_216, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(216, s))
+# define MSGPACK_PP_WHILE_216(p, o, s) MSGPACK_PP_IF(p(217, s), MSGPACK_PP_WHILE_217, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(217, s))
+# define MSGPACK_PP_WHILE_217(p, o, s) MSGPACK_PP_IF(p(218, s), MSGPACK_PP_WHILE_218, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(218, s))
+# define MSGPACK_PP_WHILE_218(p, o, s) MSGPACK_PP_IF(p(219, s), MSGPACK_PP_WHILE_219, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(219, s))
+# define MSGPACK_PP_WHILE_219(p, o, s) MSGPACK_PP_IF(p(220, s), MSGPACK_PP_WHILE_220, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(220, s))
+# define MSGPACK_PP_WHILE_220(p, o, s) MSGPACK_PP_IF(p(221, s), MSGPACK_PP_WHILE_221, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(221, s))
+# define MSGPACK_PP_WHILE_221(p, o, s) MSGPACK_PP_IF(p(222, s), MSGPACK_PP_WHILE_222, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(222, s))
+# define MSGPACK_PP_WHILE_222(p, o, s) MSGPACK_PP_IF(p(223, s), MSGPACK_PP_WHILE_223, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(223, s))
+# define MSGPACK_PP_WHILE_223(p, o, s) MSGPACK_PP_IF(p(224, s), MSGPACK_PP_WHILE_224, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(224, s))
+# define MSGPACK_PP_WHILE_224(p, o, s) MSGPACK_PP_IF(p(225, s), MSGPACK_PP_WHILE_225, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(225, s))
+# define MSGPACK_PP_WHILE_225(p, o, s) MSGPACK_PP_IF(p(226, s), MSGPACK_PP_WHILE_226, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(226, s))
+# define MSGPACK_PP_WHILE_226(p, o, s) MSGPACK_PP_IF(p(227, s), MSGPACK_PP_WHILE_227, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(227, s))
+# define MSGPACK_PP_WHILE_227(p, o, s) MSGPACK_PP_IF(p(228, s), MSGPACK_PP_WHILE_228, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(228, s))
+# define MSGPACK_PP_WHILE_228(p, o, s) MSGPACK_PP_IF(p(229, s), MSGPACK_PP_WHILE_229, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(229, s))
+# define MSGPACK_PP_WHILE_229(p, o, s) MSGPACK_PP_IF(p(230, s), MSGPACK_PP_WHILE_230, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(230, s))
+# define MSGPACK_PP_WHILE_230(p, o, s) MSGPACK_PP_IF(p(231, s), MSGPACK_PP_WHILE_231, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(231, s))
+# define MSGPACK_PP_WHILE_231(p, o, s) MSGPACK_PP_IF(p(232, s), MSGPACK_PP_WHILE_232, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(232, s))
+# define MSGPACK_PP_WHILE_232(p, o, s) MSGPACK_PP_IF(p(233, s), MSGPACK_PP_WHILE_233, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(233, s))
+# define MSGPACK_PP_WHILE_233(p, o, s) MSGPACK_PP_IF(p(234, s), MSGPACK_PP_WHILE_234, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(234, s))
+# define MSGPACK_PP_WHILE_234(p, o, s) MSGPACK_PP_IF(p(235, s), MSGPACK_PP_WHILE_235, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(235, s))
+# define MSGPACK_PP_WHILE_235(p, o, s) MSGPACK_PP_IF(p(236, s), MSGPACK_PP_WHILE_236, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(236, s))
+# define MSGPACK_PP_WHILE_236(p, o, s) MSGPACK_PP_IF(p(237, s), MSGPACK_PP_WHILE_237, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(237, s))
+# define MSGPACK_PP_WHILE_237(p, o, s) MSGPACK_PP_IF(p(238, s), MSGPACK_PP_WHILE_238, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(238, s))
+# define MSGPACK_PP_WHILE_238(p, o, s) MSGPACK_PP_IF(p(239, s), MSGPACK_PP_WHILE_239, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(239, s))
+# define MSGPACK_PP_WHILE_239(p, o, s) MSGPACK_PP_IF(p(240, s), MSGPACK_PP_WHILE_240, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(240, s))
+# define MSGPACK_PP_WHILE_240(p, o, s) MSGPACK_PP_IF(p(241, s), MSGPACK_PP_WHILE_241, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(241, s))
+# define MSGPACK_PP_WHILE_241(p, o, s) MSGPACK_PP_IF(p(242, s), MSGPACK_PP_WHILE_242, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(242, s))
+# define MSGPACK_PP_WHILE_242(p, o, s) MSGPACK_PP_IF(p(243, s), MSGPACK_PP_WHILE_243, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(243, s))
+# define MSGPACK_PP_WHILE_243(p, o, s) MSGPACK_PP_IF(p(244, s), MSGPACK_PP_WHILE_244, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(244, s))
+# define MSGPACK_PP_WHILE_244(p, o, s) MSGPACK_PP_IF(p(245, s), MSGPACK_PP_WHILE_245, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(245, s))
+# define MSGPACK_PP_WHILE_245(p, o, s) MSGPACK_PP_IF(p(246, s), MSGPACK_PP_WHILE_246, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(246, s))
+# define MSGPACK_PP_WHILE_246(p, o, s) MSGPACK_PP_IF(p(247, s), MSGPACK_PP_WHILE_247, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(247, s))
+# define MSGPACK_PP_WHILE_247(p, o, s) MSGPACK_PP_IF(p(248, s), MSGPACK_PP_WHILE_248, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(248, s))
+# define MSGPACK_PP_WHILE_248(p, o, s) MSGPACK_PP_IF(p(249, s), MSGPACK_PP_WHILE_249, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(249, s))
+# define MSGPACK_PP_WHILE_249(p, o, s) MSGPACK_PP_IF(p(250, s), MSGPACK_PP_WHILE_250, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(250, s))
+# define MSGPACK_PP_WHILE_250(p, o, s) MSGPACK_PP_IF(p(251, s), MSGPACK_PP_WHILE_251, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(251, s))
+# define MSGPACK_PP_WHILE_251(p, o, s) MSGPACK_PP_IF(p(252, s), MSGPACK_PP_WHILE_252, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(252, s))
+# define MSGPACK_PP_WHILE_252(p, o, s) MSGPACK_PP_IF(p(253, s), MSGPACK_PP_WHILE_253, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(253, s))
+# define MSGPACK_PP_WHILE_253(p, o, s) MSGPACK_PP_IF(p(254, s), MSGPACK_PP_WHILE_254, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(254, s))
+# define MSGPACK_PP_WHILE_254(p, o, s) MSGPACK_PP_IF(p(255, s), MSGPACK_PP_WHILE_255, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(255, s))
+# define MSGPACK_PP_WHILE_255(p, o, s) MSGPACK_PP_IF(p(256, s), MSGPACK_PP_WHILE_256, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(256, s))
+# define MSGPACK_PP_WHILE_256(p, o, s) MSGPACK_PP_IF(p(257, s), MSGPACK_PP_WHILE_257, s MSGPACK_PP_TUPLE_EAT_3)(p, o, o(257, s))
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/control/detail/while.hpp b/third_party/msgpack/include/msgpack/preprocessor/control/detail/while.hpp
new file mode 100644
index 0000000000..5cfda144b2
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/control/detail/while.hpp
@@ -0,0 +1,536 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_CONTROL_DETAIL_WHILE_HPP
+# define MSGPACK_PREPROCESSOR_CONTROL_DETAIL_WHILE_HPP
+#
+# include <msgpack/preprocessor/control/iif.hpp>
+# include <msgpack/preprocessor/logical/bool.hpp>
+# include <msgpack/preprocessor/tuple/eat.hpp>
+#
+# define MSGPACK_PP_WHILE_1(p, o, s) MSGPACK_PP_WHILE_1_C(MSGPACK_PP_BOOL(p(2, s)), p, o, s)
+# define MSGPACK_PP_WHILE_2(p, o, s) MSGPACK_PP_WHILE_2_C(MSGPACK_PP_BOOL(p(3, s)), p, o, s)
+# define MSGPACK_PP_WHILE_3(p, o, s) MSGPACK_PP_WHILE_3_C(MSGPACK_PP_BOOL(p(4, s)), p, o, s)
+# define MSGPACK_PP_WHILE_4(p, o, s) MSGPACK_PP_WHILE_4_C(MSGPACK_PP_BOOL(p(5, s)), p, o, s)
+# define MSGPACK_PP_WHILE_5(p, o, s) MSGPACK_PP_WHILE_5_C(MSGPACK_PP_BOOL(p(6, s)), p, o, s)
+# define MSGPACK_PP_WHILE_6(p, o, s) MSGPACK_PP_WHILE_6_C(MSGPACK_PP_BOOL(p(7, s)), p, o, s)
+# define MSGPACK_PP_WHILE_7(p, o, s) MSGPACK_PP_WHILE_7_C(MSGPACK_PP_BOOL(p(8, s)), p, o, s)
+# define MSGPACK_PP_WHILE_8(p, o, s) MSGPACK_PP_WHILE_8_C(MSGPACK_PP_BOOL(p(9, s)), p, o, s)
+# define MSGPACK_PP_WHILE_9(p, o, s) MSGPACK_PP_WHILE_9_C(MSGPACK_PP_BOOL(p(10, s)), p, o, s)
+# define MSGPACK_PP_WHILE_10(p, o, s) MSGPACK_PP_WHILE_10_C(MSGPACK_PP_BOOL(p(11, s)), p, o, s)
+# define MSGPACK_PP_WHILE_11(p, o, s) MSGPACK_PP_WHILE_11_C(MSGPACK_PP_BOOL(p(12, s)), p, o, s)
+# define MSGPACK_PP_WHILE_12(p, o, s) MSGPACK_PP_WHILE_12_C(MSGPACK_PP_BOOL(p(13, s)), p, o, s)
+# define MSGPACK_PP_WHILE_13(p, o, s) MSGPACK_PP_WHILE_13_C(MSGPACK_PP_BOOL(p(14, s)), p, o, s)
+# define MSGPACK_PP_WHILE_14(p, o, s) MSGPACK_PP_WHILE_14_C(MSGPACK_PP_BOOL(p(15, s)), p, o, s)
+# define MSGPACK_PP_WHILE_15(p, o, s) MSGPACK_PP_WHILE_15_C(MSGPACK_PP_BOOL(p(16, s)), p, o, s)
+# define MSGPACK_PP_WHILE_16(p, o, s) MSGPACK_PP_WHILE_16_C(MSGPACK_PP_BOOL(p(17, s)), p, o, s)
+# define MSGPACK_PP_WHILE_17(p, o, s) MSGPACK_PP_WHILE_17_C(MSGPACK_PP_BOOL(p(18, s)), p, o, s)
+# define MSGPACK_PP_WHILE_18(p, o, s) MSGPACK_PP_WHILE_18_C(MSGPACK_PP_BOOL(p(19, s)), p, o, s)
+# define MSGPACK_PP_WHILE_19(p, o, s) MSGPACK_PP_WHILE_19_C(MSGPACK_PP_BOOL(p(20, s)), p, o, s)
+# define MSGPACK_PP_WHILE_20(p, o, s) MSGPACK_PP_WHILE_20_C(MSGPACK_PP_BOOL(p(21, s)), p, o, s)
+# define MSGPACK_PP_WHILE_21(p, o, s) MSGPACK_PP_WHILE_21_C(MSGPACK_PP_BOOL(p(22, s)), p, o, s)
+# define MSGPACK_PP_WHILE_22(p, o, s) MSGPACK_PP_WHILE_22_C(MSGPACK_PP_BOOL(p(23, s)), p, o, s)
+# define MSGPACK_PP_WHILE_23(p, o, s) MSGPACK_PP_WHILE_23_C(MSGPACK_PP_BOOL(p(24, s)), p, o, s)
+# define MSGPACK_PP_WHILE_24(p, o, s) MSGPACK_PP_WHILE_24_C(MSGPACK_PP_BOOL(p(25, s)), p, o, s)
+# define MSGPACK_PP_WHILE_25(p, o, s) MSGPACK_PP_WHILE_25_C(MSGPACK_PP_BOOL(p(26, s)), p, o, s)
+# define MSGPACK_PP_WHILE_26(p, o, s) MSGPACK_PP_WHILE_26_C(MSGPACK_PP_BOOL(p(27, s)), p, o, s)
+# define MSGPACK_PP_WHILE_27(p, o, s) MSGPACK_PP_WHILE_27_C(MSGPACK_PP_BOOL(p(28, s)), p, o, s)
+# define MSGPACK_PP_WHILE_28(p, o, s) MSGPACK_PP_WHILE_28_C(MSGPACK_PP_BOOL(p(29, s)), p, o, s)
+# define MSGPACK_PP_WHILE_29(p, o, s) MSGPACK_PP_WHILE_29_C(MSGPACK_PP_BOOL(p(30, s)), p, o, s)
+# define MSGPACK_PP_WHILE_30(p, o, s) MSGPACK_PP_WHILE_30_C(MSGPACK_PP_BOOL(p(31, s)), p, o, s)
+# define MSGPACK_PP_WHILE_31(p, o, s) MSGPACK_PP_WHILE_31_C(MSGPACK_PP_BOOL(p(32, s)), p, o, s)
+# define MSGPACK_PP_WHILE_32(p, o, s) MSGPACK_PP_WHILE_32_C(MSGPACK_PP_BOOL(p(33, s)), p, o, s)
+# define MSGPACK_PP_WHILE_33(p, o, s) MSGPACK_PP_WHILE_33_C(MSGPACK_PP_BOOL(p(34, s)), p, o, s)
+# define MSGPACK_PP_WHILE_34(p, o, s) MSGPACK_PP_WHILE_34_C(MSGPACK_PP_BOOL(p(35, s)), p, o, s)
+# define MSGPACK_PP_WHILE_35(p, o, s) MSGPACK_PP_WHILE_35_C(MSGPACK_PP_BOOL(p(36, s)), p, o, s)
+# define MSGPACK_PP_WHILE_36(p, o, s) MSGPACK_PP_WHILE_36_C(MSGPACK_PP_BOOL(p(37, s)), p, o, s)
+# define MSGPACK_PP_WHILE_37(p, o, s) MSGPACK_PP_WHILE_37_C(MSGPACK_PP_BOOL(p(38, s)), p, o, s)
+# define MSGPACK_PP_WHILE_38(p, o, s) MSGPACK_PP_WHILE_38_C(MSGPACK_PP_BOOL(p(39, s)), p, o, s)
+# define MSGPACK_PP_WHILE_39(p, o, s) MSGPACK_PP_WHILE_39_C(MSGPACK_PP_BOOL(p(40, s)), p, o, s)
+# define MSGPACK_PP_WHILE_40(p, o, s) MSGPACK_PP_WHILE_40_C(MSGPACK_PP_BOOL(p(41, s)), p, o, s)
+# define MSGPACK_PP_WHILE_41(p, o, s) MSGPACK_PP_WHILE_41_C(MSGPACK_PP_BOOL(p(42, s)), p, o, s)
+# define MSGPACK_PP_WHILE_42(p, o, s) MSGPACK_PP_WHILE_42_C(MSGPACK_PP_BOOL(p(43, s)), p, o, s)
+# define MSGPACK_PP_WHILE_43(p, o, s) MSGPACK_PP_WHILE_43_C(MSGPACK_PP_BOOL(p(44, s)), p, o, s)
+# define MSGPACK_PP_WHILE_44(p, o, s) MSGPACK_PP_WHILE_44_C(MSGPACK_PP_BOOL(p(45, s)), p, o, s)
+# define MSGPACK_PP_WHILE_45(p, o, s) MSGPACK_PP_WHILE_45_C(MSGPACK_PP_BOOL(p(46, s)), p, o, s)
+# define MSGPACK_PP_WHILE_46(p, o, s) MSGPACK_PP_WHILE_46_C(MSGPACK_PP_BOOL(p(47, s)), p, o, s)
+# define MSGPACK_PP_WHILE_47(p, o, s) MSGPACK_PP_WHILE_47_C(MSGPACK_PP_BOOL(p(48, s)), p, o, s)
+# define MSGPACK_PP_WHILE_48(p, o, s) MSGPACK_PP_WHILE_48_C(MSGPACK_PP_BOOL(p(49, s)), p, o, s)
+# define MSGPACK_PP_WHILE_49(p, o, s) MSGPACK_PP_WHILE_49_C(MSGPACK_PP_BOOL(p(50, s)), p, o, s)
+# define MSGPACK_PP_WHILE_50(p, o, s) MSGPACK_PP_WHILE_50_C(MSGPACK_PP_BOOL(p(51, s)), p, o, s)
+# define MSGPACK_PP_WHILE_51(p, o, s) MSGPACK_PP_WHILE_51_C(MSGPACK_PP_BOOL(p(52, s)), p, o, s)
+# define MSGPACK_PP_WHILE_52(p, o, s) MSGPACK_PP_WHILE_52_C(MSGPACK_PP_BOOL(p(53, s)), p, o, s)
+# define MSGPACK_PP_WHILE_53(p, o, s) MSGPACK_PP_WHILE_53_C(MSGPACK_PP_BOOL(p(54, s)), p, o, s)
+# define MSGPACK_PP_WHILE_54(p, o, s) MSGPACK_PP_WHILE_54_C(MSGPACK_PP_BOOL(p(55, s)), p, o, s)
+# define MSGPACK_PP_WHILE_55(p, o, s) MSGPACK_PP_WHILE_55_C(MSGPACK_PP_BOOL(p(56, s)), p, o, s)
+# define MSGPACK_PP_WHILE_56(p, o, s) MSGPACK_PP_WHILE_56_C(MSGPACK_PP_BOOL(p(57, s)), p, o, s)
+# define MSGPACK_PP_WHILE_57(p, o, s) MSGPACK_PP_WHILE_57_C(MSGPACK_PP_BOOL(p(58, s)), p, o, s)
+# define MSGPACK_PP_WHILE_58(p, o, s) MSGPACK_PP_WHILE_58_C(MSGPACK_PP_BOOL(p(59, s)), p, o, s)
+# define MSGPACK_PP_WHILE_59(p, o, s) MSGPACK_PP_WHILE_59_C(MSGPACK_PP_BOOL(p(60, s)), p, o, s)
+# define MSGPACK_PP_WHILE_60(p, o, s) MSGPACK_PP_WHILE_60_C(MSGPACK_PP_BOOL(p(61, s)), p, o, s)
+# define MSGPACK_PP_WHILE_61(p, o, s) MSGPACK_PP_WHILE_61_C(MSGPACK_PP_BOOL(p(62, s)), p, o, s)
+# define MSGPACK_PP_WHILE_62(p, o, s) MSGPACK_PP_WHILE_62_C(MSGPACK_PP_BOOL(p(63, s)), p, o, s)
+# define MSGPACK_PP_WHILE_63(p, o, s) MSGPACK_PP_WHILE_63_C(MSGPACK_PP_BOOL(p(64, s)), p, o, s)
+# define MSGPACK_PP_WHILE_64(p, o, s) MSGPACK_PP_WHILE_64_C(MSGPACK_PP_BOOL(p(65, s)), p, o, s)
+# define MSGPACK_PP_WHILE_65(p, o, s) MSGPACK_PP_WHILE_65_C(MSGPACK_PP_BOOL(p(66, s)), p, o, s)
+# define MSGPACK_PP_WHILE_66(p, o, s) MSGPACK_PP_WHILE_66_C(MSGPACK_PP_BOOL(p(67, s)), p, o, s)
+# define MSGPACK_PP_WHILE_67(p, o, s) MSGPACK_PP_WHILE_67_C(MSGPACK_PP_BOOL(p(68, s)), p, o, s)
+# define MSGPACK_PP_WHILE_68(p, o, s) MSGPACK_PP_WHILE_68_C(MSGPACK_PP_BOOL(p(69, s)), p, o, s)
+# define MSGPACK_PP_WHILE_69(p, o, s) MSGPACK_PP_WHILE_69_C(MSGPACK_PP_BOOL(p(70, s)), p, o, s)
+# define MSGPACK_PP_WHILE_70(p, o, s) MSGPACK_PP_WHILE_70_C(MSGPACK_PP_BOOL(p(71, s)), p, o, s)
+# define MSGPACK_PP_WHILE_71(p, o, s) MSGPACK_PP_WHILE_71_C(MSGPACK_PP_BOOL(p(72, s)), p, o, s)
+# define MSGPACK_PP_WHILE_72(p, o, s) MSGPACK_PP_WHILE_72_C(MSGPACK_PP_BOOL(p(73, s)), p, o, s)
+# define MSGPACK_PP_WHILE_73(p, o, s) MSGPACK_PP_WHILE_73_C(MSGPACK_PP_BOOL(p(74, s)), p, o, s)
+# define MSGPACK_PP_WHILE_74(p, o, s) MSGPACK_PP_WHILE_74_C(MSGPACK_PP_BOOL(p(75, s)), p, o, s)
+# define MSGPACK_PP_WHILE_75(p, o, s) MSGPACK_PP_WHILE_75_C(MSGPACK_PP_BOOL(p(76, s)), p, o, s)
+# define MSGPACK_PP_WHILE_76(p, o, s) MSGPACK_PP_WHILE_76_C(MSGPACK_PP_BOOL(p(77, s)), p, o, s)
+# define MSGPACK_PP_WHILE_77(p, o, s) MSGPACK_PP_WHILE_77_C(MSGPACK_PP_BOOL(p(78, s)), p, o, s)
+# define MSGPACK_PP_WHILE_78(p, o, s) MSGPACK_PP_WHILE_78_C(MSGPACK_PP_BOOL(p(79, s)), p, o, s)
+# define MSGPACK_PP_WHILE_79(p, o, s) MSGPACK_PP_WHILE_79_C(MSGPACK_PP_BOOL(p(80, s)), p, o, s)
+# define MSGPACK_PP_WHILE_80(p, o, s) MSGPACK_PP_WHILE_80_C(MSGPACK_PP_BOOL(p(81, s)), p, o, s)
+# define MSGPACK_PP_WHILE_81(p, o, s) MSGPACK_PP_WHILE_81_C(MSGPACK_PP_BOOL(p(82, s)), p, o, s)
+# define MSGPACK_PP_WHILE_82(p, o, s) MSGPACK_PP_WHILE_82_C(MSGPACK_PP_BOOL(p(83, s)), p, o, s)
+# define MSGPACK_PP_WHILE_83(p, o, s) MSGPACK_PP_WHILE_83_C(MSGPACK_PP_BOOL(p(84, s)), p, o, s)
+# define MSGPACK_PP_WHILE_84(p, o, s) MSGPACK_PP_WHILE_84_C(MSGPACK_PP_BOOL(p(85, s)), p, o, s)
+# define MSGPACK_PP_WHILE_85(p, o, s) MSGPACK_PP_WHILE_85_C(MSGPACK_PP_BOOL(p(86, s)), p, o, s)
+# define MSGPACK_PP_WHILE_86(p, o, s) MSGPACK_PP_WHILE_86_C(MSGPACK_PP_BOOL(p(87, s)), p, o, s)
+# define MSGPACK_PP_WHILE_87(p, o, s) MSGPACK_PP_WHILE_87_C(MSGPACK_PP_BOOL(p(88, s)), p, o, s)
+# define MSGPACK_PP_WHILE_88(p, o, s) MSGPACK_PP_WHILE_88_C(MSGPACK_PP_BOOL(p(89, s)), p, o, s)
+# define MSGPACK_PP_WHILE_89(p, o, s) MSGPACK_PP_WHILE_89_C(MSGPACK_PP_BOOL(p(90, s)), p, o, s)
+# define MSGPACK_PP_WHILE_90(p, o, s) MSGPACK_PP_WHILE_90_C(MSGPACK_PP_BOOL(p(91, s)), p, o, s)
+# define MSGPACK_PP_WHILE_91(p, o, s) MSGPACK_PP_WHILE_91_C(MSGPACK_PP_BOOL(p(92, s)), p, o, s)
+# define MSGPACK_PP_WHILE_92(p, o, s) MSGPACK_PP_WHILE_92_C(MSGPACK_PP_BOOL(p(93, s)), p, o, s)
+# define MSGPACK_PP_WHILE_93(p, o, s) MSGPACK_PP_WHILE_93_C(MSGPACK_PP_BOOL(p(94, s)), p, o, s)
+# define MSGPACK_PP_WHILE_94(p, o, s) MSGPACK_PP_WHILE_94_C(MSGPACK_PP_BOOL(p(95, s)), p, o, s)
+# define MSGPACK_PP_WHILE_95(p, o, s) MSGPACK_PP_WHILE_95_C(MSGPACK_PP_BOOL(p(96, s)), p, o, s)
+# define MSGPACK_PP_WHILE_96(p, o, s) MSGPACK_PP_WHILE_96_C(MSGPACK_PP_BOOL(p(97, s)), p, o, s)
+# define MSGPACK_PP_WHILE_97(p, o, s) MSGPACK_PP_WHILE_97_C(MSGPACK_PP_BOOL(p(98, s)), p, o, s)
+# define MSGPACK_PP_WHILE_98(p, o, s) MSGPACK_PP_WHILE_98_C(MSGPACK_PP_BOOL(p(99, s)), p, o, s)
+# define MSGPACK_PP_WHILE_99(p, o, s) MSGPACK_PP_WHILE_99_C(MSGPACK_PP_BOOL(p(100, s)), p, o, s)
+# define MSGPACK_PP_WHILE_100(p, o, s) MSGPACK_PP_WHILE_100_C(MSGPACK_PP_BOOL(p(101, s)), p, o, s)
+# define MSGPACK_PP_WHILE_101(p, o, s) MSGPACK_PP_WHILE_101_C(MSGPACK_PP_BOOL(p(102, s)), p, o, s)
+# define MSGPACK_PP_WHILE_102(p, o, s) MSGPACK_PP_WHILE_102_C(MSGPACK_PP_BOOL(p(103, s)), p, o, s)
+# define MSGPACK_PP_WHILE_103(p, o, s) MSGPACK_PP_WHILE_103_C(MSGPACK_PP_BOOL(p(104, s)), p, o, s)
+# define MSGPACK_PP_WHILE_104(p, o, s) MSGPACK_PP_WHILE_104_C(MSGPACK_PP_BOOL(p(105, s)), p, o, s)
+# define MSGPACK_PP_WHILE_105(p, o, s) MSGPACK_PP_WHILE_105_C(MSGPACK_PP_BOOL(p(106, s)), p, o, s)
+# define MSGPACK_PP_WHILE_106(p, o, s) MSGPACK_PP_WHILE_106_C(MSGPACK_PP_BOOL(p(107, s)), p, o, s)
+# define MSGPACK_PP_WHILE_107(p, o, s) MSGPACK_PP_WHILE_107_C(MSGPACK_PP_BOOL(p(108, s)), p, o, s)
+# define MSGPACK_PP_WHILE_108(p, o, s) MSGPACK_PP_WHILE_108_C(MSGPACK_PP_BOOL(p(109, s)), p, o, s)
+# define MSGPACK_PP_WHILE_109(p, o, s) MSGPACK_PP_WHILE_109_C(MSGPACK_PP_BOOL(p(110, s)), p, o, s)
+# define MSGPACK_PP_WHILE_110(p, o, s) MSGPACK_PP_WHILE_110_C(MSGPACK_PP_BOOL(p(111, s)), p, o, s)
+# define MSGPACK_PP_WHILE_111(p, o, s) MSGPACK_PP_WHILE_111_C(MSGPACK_PP_BOOL(p(112, s)), p, o, s)
+# define MSGPACK_PP_WHILE_112(p, o, s) MSGPACK_PP_WHILE_112_C(MSGPACK_PP_BOOL(p(113, s)), p, o, s)
+# define MSGPACK_PP_WHILE_113(p, o, s) MSGPACK_PP_WHILE_113_C(MSGPACK_PP_BOOL(p(114, s)), p, o, s)
+# define MSGPACK_PP_WHILE_114(p, o, s) MSGPACK_PP_WHILE_114_C(MSGPACK_PP_BOOL(p(115, s)), p, o, s)
+# define MSGPACK_PP_WHILE_115(p, o, s) MSGPACK_PP_WHILE_115_C(MSGPACK_PP_BOOL(p(116, s)), p, o, s)
+# define MSGPACK_PP_WHILE_116(p, o, s) MSGPACK_PP_WHILE_116_C(MSGPACK_PP_BOOL(p(117, s)), p, o, s)
+# define MSGPACK_PP_WHILE_117(p, o, s) MSGPACK_PP_WHILE_117_C(MSGPACK_PP_BOOL(p(118, s)), p, o, s)
+# define MSGPACK_PP_WHILE_118(p, o, s) MSGPACK_PP_WHILE_118_C(MSGPACK_PP_BOOL(p(119, s)), p, o, s)
+# define MSGPACK_PP_WHILE_119(p, o, s) MSGPACK_PP_WHILE_119_C(MSGPACK_PP_BOOL(p(120, s)), p, o, s)
+# define MSGPACK_PP_WHILE_120(p, o, s) MSGPACK_PP_WHILE_120_C(MSGPACK_PP_BOOL(p(121, s)), p, o, s)
+# define MSGPACK_PP_WHILE_121(p, o, s) MSGPACK_PP_WHILE_121_C(MSGPACK_PP_BOOL(p(122, s)), p, o, s)
+# define MSGPACK_PP_WHILE_122(p, o, s) MSGPACK_PP_WHILE_122_C(MSGPACK_PP_BOOL(p(123, s)), p, o, s)
+# define MSGPACK_PP_WHILE_123(p, o, s) MSGPACK_PP_WHILE_123_C(MSGPACK_PP_BOOL(p(124, s)), p, o, s)
+# define MSGPACK_PP_WHILE_124(p, o, s) MSGPACK_PP_WHILE_124_C(MSGPACK_PP_BOOL(p(125, s)), p, o, s)
+# define MSGPACK_PP_WHILE_125(p, o, s) MSGPACK_PP_WHILE_125_C(MSGPACK_PP_BOOL(p(126, s)), p, o, s)
+# define MSGPACK_PP_WHILE_126(p, o, s) MSGPACK_PP_WHILE_126_C(MSGPACK_PP_BOOL(p(127, s)), p, o, s)
+# define MSGPACK_PP_WHILE_127(p, o, s) MSGPACK_PP_WHILE_127_C(MSGPACK_PP_BOOL(p(128, s)), p, o, s)
+# define MSGPACK_PP_WHILE_128(p, o, s) MSGPACK_PP_WHILE_128_C(MSGPACK_PP_BOOL(p(129, s)), p, o, s)
+# define MSGPACK_PP_WHILE_129(p, o, s) MSGPACK_PP_WHILE_129_C(MSGPACK_PP_BOOL(p(130, s)), p, o, s)
+# define MSGPACK_PP_WHILE_130(p, o, s) MSGPACK_PP_WHILE_130_C(MSGPACK_PP_BOOL(p(131, s)), p, o, s)
+# define MSGPACK_PP_WHILE_131(p, o, s) MSGPACK_PP_WHILE_131_C(MSGPACK_PP_BOOL(p(132, s)), p, o, s)
+# define MSGPACK_PP_WHILE_132(p, o, s) MSGPACK_PP_WHILE_132_C(MSGPACK_PP_BOOL(p(133, s)), p, o, s)
+# define MSGPACK_PP_WHILE_133(p, o, s) MSGPACK_PP_WHILE_133_C(MSGPACK_PP_BOOL(p(134, s)), p, o, s)
+# define MSGPACK_PP_WHILE_134(p, o, s) MSGPACK_PP_WHILE_134_C(MSGPACK_PP_BOOL(p(135, s)), p, o, s)
+# define MSGPACK_PP_WHILE_135(p, o, s) MSGPACK_PP_WHILE_135_C(MSGPACK_PP_BOOL(p(136, s)), p, o, s)
+# define MSGPACK_PP_WHILE_136(p, o, s) MSGPACK_PP_WHILE_136_C(MSGPACK_PP_BOOL(p(137, s)), p, o, s)
+# define MSGPACK_PP_WHILE_137(p, o, s) MSGPACK_PP_WHILE_137_C(MSGPACK_PP_BOOL(p(138, s)), p, o, s)
+# define MSGPACK_PP_WHILE_138(p, o, s) MSGPACK_PP_WHILE_138_C(MSGPACK_PP_BOOL(p(139, s)), p, o, s)
+# define MSGPACK_PP_WHILE_139(p, o, s) MSGPACK_PP_WHILE_139_C(MSGPACK_PP_BOOL(p(140, s)), p, o, s)
+# define MSGPACK_PP_WHILE_140(p, o, s) MSGPACK_PP_WHILE_140_C(MSGPACK_PP_BOOL(p(141, s)), p, o, s)
+# define MSGPACK_PP_WHILE_141(p, o, s) MSGPACK_PP_WHILE_141_C(MSGPACK_PP_BOOL(p(142, s)), p, o, s)
+# define MSGPACK_PP_WHILE_142(p, o, s) MSGPACK_PP_WHILE_142_C(MSGPACK_PP_BOOL(p(143, s)), p, o, s)
+# define MSGPACK_PP_WHILE_143(p, o, s) MSGPACK_PP_WHILE_143_C(MSGPACK_PP_BOOL(p(144, s)), p, o, s)
+# define MSGPACK_PP_WHILE_144(p, o, s) MSGPACK_PP_WHILE_144_C(MSGPACK_PP_BOOL(p(145, s)), p, o, s)
+# define MSGPACK_PP_WHILE_145(p, o, s) MSGPACK_PP_WHILE_145_C(MSGPACK_PP_BOOL(p(146, s)), p, o, s)
+# define MSGPACK_PP_WHILE_146(p, o, s) MSGPACK_PP_WHILE_146_C(MSGPACK_PP_BOOL(p(147, s)), p, o, s)
+# define MSGPACK_PP_WHILE_147(p, o, s) MSGPACK_PP_WHILE_147_C(MSGPACK_PP_BOOL(p(148, s)), p, o, s)
+# define MSGPACK_PP_WHILE_148(p, o, s) MSGPACK_PP_WHILE_148_C(MSGPACK_PP_BOOL(p(149, s)), p, o, s)
+# define MSGPACK_PP_WHILE_149(p, o, s) MSGPACK_PP_WHILE_149_C(MSGPACK_PP_BOOL(p(150, s)), p, o, s)
+# define MSGPACK_PP_WHILE_150(p, o, s) MSGPACK_PP_WHILE_150_C(MSGPACK_PP_BOOL(p(151, s)), p, o, s)
+# define MSGPACK_PP_WHILE_151(p, o, s) MSGPACK_PP_WHILE_151_C(MSGPACK_PP_BOOL(p(152, s)), p, o, s)
+# define MSGPACK_PP_WHILE_152(p, o, s) MSGPACK_PP_WHILE_152_C(MSGPACK_PP_BOOL(p(153, s)), p, o, s)
+# define MSGPACK_PP_WHILE_153(p, o, s) MSGPACK_PP_WHILE_153_C(MSGPACK_PP_BOOL(p(154, s)), p, o, s)
+# define MSGPACK_PP_WHILE_154(p, o, s) MSGPACK_PP_WHILE_154_C(MSGPACK_PP_BOOL(p(155, s)), p, o, s)
+# define MSGPACK_PP_WHILE_155(p, o, s) MSGPACK_PP_WHILE_155_C(MSGPACK_PP_BOOL(p(156, s)), p, o, s)
+# define MSGPACK_PP_WHILE_156(p, o, s) MSGPACK_PP_WHILE_156_C(MSGPACK_PP_BOOL(p(157, s)), p, o, s)
+# define MSGPACK_PP_WHILE_157(p, o, s) MSGPACK_PP_WHILE_157_C(MSGPACK_PP_BOOL(p(158, s)), p, o, s)
+# define MSGPACK_PP_WHILE_158(p, o, s) MSGPACK_PP_WHILE_158_C(MSGPACK_PP_BOOL(p(159, s)), p, o, s)
+# define MSGPACK_PP_WHILE_159(p, o, s) MSGPACK_PP_WHILE_159_C(MSGPACK_PP_BOOL(p(160, s)), p, o, s)
+# define MSGPACK_PP_WHILE_160(p, o, s) MSGPACK_PP_WHILE_160_C(MSGPACK_PP_BOOL(p(161, s)), p, o, s)
+# define MSGPACK_PP_WHILE_161(p, o, s) MSGPACK_PP_WHILE_161_C(MSGPACK_PP_BOOL(p(162, s)), p, o, s)
+# define MSGPACK_PP_WHILE_162(p, o, s) MSGPACK_PP_WHILE_162_C(MSGPACK_PP_BOOL(p(163, s)), p, o, s)
+# define MSGPACK_PP_WHILE_163(p, o, s) MSGPACK_PP_WHILE_163_C(MSGPACK_PP_BOOL(p(164, s)), p, o, s)
+# define MSGPACK_PP_WHILE_164(p, o, s) MSGPACK_PP_WHILE_164_C(MSGPACK_PP_BOOL(p(165, s)), p, o, s)
+# define MSGPACK_PP_WHILE_165(p, o, s) MSGPACK_PP_WHILE_165_C(MSGPACK_PP_BOOL(p(166, s)), p, o, s)
+# define MSGPACK_PP_WHILE_166(p, o, s) MSGPACK_PP_WHILE_166_C(MSGPACK_PP_BOOL(p(167, s)), p, o, s)
+# define MSGPACK_PP_WHILE_167(p, o, s) MSGPACK_PP_WHILE_167_C(MSGPACK_PP_BOOL(p(168, s)), p, o, s)
+# define MSGPACK_PP_WHILE_168(p, o, s) MSGPACK_PP_WHILE_168_C(MSGPACK_PP_BOOL(p(169, s)), p, o, s)
+# define MSGPACK_PP_WHILE_169(p, o, s) MSGPACK_PP_WHILE_169_C(MSGPACK_PP_BOOL(p(170, s)), p, o, s)
+# define MSGPACK_PP_WHILE_170(p, o, s) MSGPACK_PP_WHILE_170_C(MSGPACK_PP_BOOL(p(171, s)), p, o, s)
+# define MSGPACK_PP_WHILE_171(p, o, s) MSGPACK_PP_WHILE_171_C(MSGPACK_PP_BOOL(p(172, s)), p, o, s)
+# define MSGPACK_PP_WHILE_172(p, o, s) MSGPACK_PP_WHILE_172_C(MSGPACK_PP_BOOL(p(173, s)), p, o, s)
+# define MSGPACK_PP_WHILE_173(p, o, s) MSGPACK_PP_WHILE_173_C(MSGPACK_PP_BOOL(p(174, s)), p, o, s)
+# define MSGPACK_PP_WHILE_174(p, o, s) MSGPACK_PP_WHILE_174_C(MSGPACK_PP_BOOL(p(175, s)), p, o, s)
+# define MSGPACK_PP_WHILE_175(p, o, s) MSGPACK_PP_WHILE_175_C(MSGPACK_PP_BOOL(p(176, s)), p, o, s)
+# define MSGPACK_PP_WHILE_176(p, o, s) MSGPACK_PP_WHILE_176_C(MSGPACK_PP_BOOL(p(177, s)), p, o, s)
+# define MSGPACK_PP_WHILE_177(p, o, s) MSGPACK_PP_WHILE_177_C(MSGPACK_PP_BOOL(p(178, s)), p, o, s)
+# define MSGPACK_PP_WHILE_178(p, o, s) MSGPACK_PP_WHILE_178_C(MSGPACK_PP_BOOL(p(179, s)), p, o, s)
+# define MSGPACK_PP_WHILE_179(p, o, s) MSGPACK_PP_WHILE_179_C(MSGPACK_PP_BOOL(p(180, s)), p, o, s)
+# define MSGPACK_PP_WHILE_180(p, o, s) MSGPACK_PP_WHILE_180_C(MSGPACK_PP_BOOL(p(181, s)), p, o, s)
+# define MSGPACK_PP_WHILE_181(p, o, s) MSGPACK_PP_WHILE_181_C(MSGPACK_PP_BOOL(p(182, s)), p, o, s)
+# define MSGPACK_PP_WHILE_182(p, o, s) MSGPACK_PP_WHILE_182_C(MSGPACK_PP_BOOL(p(183, s)), p, o, s)
+# define MSGPACK_PP_WHILE_183(p, o, s) MSGPACK_PP_WHILE_183_C(MSGPACK_PP_BOOL(p(184, s)), p, o, s)
+# define MSGPACK_PP_WHILE_184(p, o, s) MSGPACK_PP_WHILE_184_C(MSGPACK_PP_BOOL(p(185, s)), p, o, s)
+# define MSGPACK_PP_WHILE_185(p, o, s) MSGPACK_PP_WHILE_185_C(MSGPACK_PP_BOOL(p(186, s)), p, o, s)
+# define MSGPACK_PP_WHILE_186(p, o, s) MSGPACK_PP_WHILE_186_C(MSGPACK_PP_BOOL(p(187, s)), p, o, s)
+# define MSGPACK_PP_WHILE_187(p, o, s) MSGPACK_PP_WHILE_187_C(MSGPACK_PP_BOOL(p(188, s)), p, o, s)
+# define MSGPACK_PP_WHILE_188(p, o, s) MSGPACK_PP_WHILE_188_C(MSGPACK_PP_BOOL(p(189, s)), p, o, s)
+# define MSGPACK_PP_WHILE_189(p, o, s) MSGPACK_PP_WHILE_189_C(MSGPACK_PP_BOOL(p(190, s)), p, o, s)
+# define MSGPACK_PP_WHILE_190(p, o, s) MSGPACK_PP_WHILE_190_C(MSGPACK_PP_BOOL(p(191, s)), p, o, s)
+# define MSGPACK_PP_WHILE_191(p, o, s) MSGPACK_PP_WHILE_191_C(MSGPACK_PP_BOOL(p(192, s)), p, o, s)
+# define MSGPACK_PP_WHILE_192(p, o, s) MSGPACK_PP_WHILE_192_C(MSGPACK_PP_BOOL(p(193, s)), p, o, s)
+# define MSGPACK_PP_WHILE_193(p, o, s) MSGPACK_PP_WHILE_193_C(MSGPACK_PP_BOOL(p(194, s)), p, o, s)
+# define MSGPACK_PP_WHILE_194(p, o, s) MSGPACK_PP_WHILE_194_C(MSGPACK_PP_BOOL(p(195, s)), p, o, s)
+# define MSGPACK_PP_WHILE_195(p, o, s) MSGPACK_PP_WHILE_195_C(MSGPACK_PP_BOOL(p(196, s)), p, o, s)
+# define MSGPACK_PP_WHILE_196(p, o, s) MSGPACK_PP_WHILE_196_C(MSGPACK_PP_BOOL(p(197, s)), p, o, s)
+# define MSGPACK_PP_WHILE_197(p, o, s) MSGPACK_PP_WHILE_197_C(MSGPACK_PP_BOOL(p(198, s)), p, o, s)
+# define MSGPACK_PP_WHILE_198(p, o, s) MSGPACK_PP_WHILE_198_C(MSGPACK_PP_BOOL(p(199, s)), p, o, s)
+# define MSGPACK_PP_WHILE_199(p, o, s) MSGPACK_PP_WHILE_199_C(MSGPACK_PP_BOOL(p(200, s)), p, o, s)
+# define MSGPACK_PP_WHILE_200(p, o, s) MSGPACK_PP_WHILE_200_C(MSGPACK_PP_BOOL(p(201, s)), p, o, s)
+# define MSGPACK_PP_WHILE_201(p, o, s) MSGPACK_PP_WHILE_201_C(MSGPACK_PP_BOOL(p(202, s)), p, o, s)
+# define MSGPACK_PP_WHILE_202(p, o, s) MSGPACK_PP_WHILE_202_C(MSGPACK_PP_BOOL(p(203, s)), p, o, s)
+# define MSGPACK_PP_WHILE_203(p, o, s) MSGPACK_PP_WHILE_203_C(MSGPACK_PP_BOOL(p(204, s)), p, o, s)
+# define MSGPACK_PP_WHILE_204(p, o, s) MSGPACK_PP_WHILE_204_C(MSGPACK_PP_BOOL(p(205, s)), p, o, s)
+# define MSGPACK_PP_WHILE_205(p, o, s) MSGPACK_PP_WHILE_205_C(MSGPACK_PP_BOOL(p(206, s)), p, o, s)
+# define MSGPACK_PP_WHILE_206(p, o, s) MSGPACK_PP_WHILE_206_C(MSGPACK_PP_BOOL(p(207, s)), p, o, s)
+# define MSGPACK_PP_WHILE_207(p, o, s) MSGPACK_PP_WHILE_207_C(MSGPACK_PP_BOOL(p(208, s)), p, o, s)
+# define MSGPACK_PP_WHILE_208(p, o, s) MSGPACK_PP_WHILE_208_C(MSGPACK_PP_BOOL(p(209, s)), p, o, s)
+# define MSGPACK_PP_WHILE_209(p, o, s) MSGPACK_PP_WHILE_209_C(MSGPACK_PP_BOOL(p(210, s)), p, o, s)
+# define MSGPACK_PP_WHILE_210(p, o, s) MSGPACK_PP_WHILE_210_C(MSGPACK_PP_BOOL(p(211, s)), p, o, s)
+# define MSGPACK_PP_WHILE_211(p, o, s) MSGPACK_PP_WHILE_211_C(MSGPACK_PP_BOOL(p(212, s)), p, o, s)
+# define MSGPACK_PP_WHILE_212(p, o, s) MSGPACK_PP_WHILE_212_C(MSGPACK_PP_BOOL(p(213, s)), p, o, s)
+# define MSGPACK_PP_WHILE_213(p, o, s) MSGPACK_PP_WHILE_213_C(MSGPACK_PP_BOOL(p(214, s)), p, o, s)
+# define MSGPACK_PP_WHILE_214(p, o, s) MSGPACK_PP_WHILE_214_C(MSGPACK_PP_BOOL(p(215, s)), p, o, s)
+# define MSGPACK_PP_WHILE_215(p, o, s) MSGPACK_PP_WHILE_215_C(MSGPACK_PP_BOOL(p(216, s)), p, o, s)
+# define MSGPACK_PP_WHILE_216(p, o, s) MSGPACK_PP_WHILE_216_C(MSGPACK_PP_BOOL(p(217, s)), p, o, s)
+# define MSGPACK_PP_WHILE_217(p, o, s) MSGPACK_PP_WHILE_217_C(MSGPACK_PP_BOOL(p(218, s)), p, o, s)
+# define MSGPACK_PP_WHILE_218(p, o, s) MSGPACK_PP_WHILE_218_C(MSGPACK_PP_BOOL(p(219, s)), p, o, s)
+# define MSGPACK_PP_WHILE_219(p, o, s) MSGPACK_PP_WHILE_219_C(MSGPACK_PP_BOOL(p(220, s)), p, o, s)
+# define MSGPACK_PP_WHILE_220(p, o, s) MSGPACK_PP_WHILE_220_C(MSGPACK_PP_BOOL(p(221, s)), p, o, s)
+# define MSGPACK_PP_WHILE_221(p, o, s) MSGPACK_PP_WHILE_221_C(MSGPACK_PP_BOOL(p(222, s)), p, o, s)
+# define MSGPACK_PP_WHILE_222(p, o, s) MSGPACK_PP_WHILE_222_C(MSGPACK_PP_BOOL(p(223, s)), p, o, s)
+# define MSGPACK_PP_WHILE_223(p, o, s) MSGPACK_PP_WHILE_223_C(MSGPACK_PP_BOOL(p(224, s)), p, o, s)
+# define MSGPACK_PP_WHILE_224(p, o, s) MSGPACK_PP_WHILE_224_C(MSGPACK_PP_BOOL(p(225, s)), p, o, s)
+# define MSGPACK_PP_WHILE_225(p, o, s) MSGPACK_PP_WHILE_225_C(MSGPACK_PP_BOOL(p(226, s)), p, o, s)
+# define MSGPACK_PP_WHILE_226(p, o, s) MSGPACK_PP_WHILE_226_C(MSGPACK_PP_BOOL(p(227, s)), p, o, s)
+# define MSGPACK_PP_WHILE_227(p, o, s) MSGPACK_PP_WHILE_227_C(MSGPACK_PP_BOOL(p(228, s)), p, o, s)
+# define MSGPACK_PP_WHILE_228(p, o, s) MSGPACK_PP_WHILE_228_C(MSGPACK_PP_BOOL(p(229, s)), p, o, s)
+# define MSGPACK_PP_WHILE_229(p, o, s) MSGPACK_PP_WHILE_229_C(MSGPACK_PP_BOOL(p(230, s)), p, o, s)
+# define MSGPACK_PP_WHILE_230(p, o, s) MSGPACK_PP_WHILE_230_C(MSGPACK_PP_BOOL(p(231, s)), p, o, s)
+# define MSGPACK_PP_WHILE_231(p, o, s) MSGPACK_PP_WHILE_231_C(MSGPACK_PP_BOOL(p(232, s)), p, o, s)
+# define MSGPACK_PP_WHILE_232(p, o, s) MSGPACK_PP_WHILE_232_C(MSGPACK_PP_BOOL(p(233, s)), p, o, s)
+# define MSGPACK_PP_WHILE_233(p, o, s) MSGPACK_PP_WHILE_233_C(MSGPACK_PP_BOOL(p(234, s)), p, o, s)
+# define MSGPACK_PP_WHILE_234(p, o, s) MSGPACK_PP_WHILE_234_C(MSGPACK_PP_BOOL(p(235, s)), p, o, s)
+# define MSGPACK_PP_WHILE_235(p, o, s) MSGPACK_PP_WHILE_235_C(MSGPACK_PP_BOOL(p(236, s)), p, o, s)
+# define MSGPACK_PP_WHILE_236(p, o, s) MSGPACK_PP_WHILE_236_C(MSGPACK_PP_BOOL(p(237, s)), p, o, s)
+# define MSGPACK_PP_WHILE_237(p, o, s) MSGPACK_PP_WHILE_237_C(MSGPACK_PP_BOOL(p(238, s)), p, o, s)
+# define MSGPACK_PP_WHILE_238(p, o, s) MSGPACK_PP_WHILE_238_C(MSGPACK_PP_BOOL(p(239, s)), p, o, s)
+# define MSGPACK_PP_WHILE_239(p, o, s) MSGPACK_PP_WHILE_239_C(MSGPACK_PP_BOOL(p(240, s)), p, o, s)
+# define MSGPACK_PP_WHILE_240(p, o, s) MSGPACK_PP_WHILE_240_C(MSGPACK_PP_BOOL(p(241, s)), p, o, s)
+# define MSGPACK_PP_WHILE_241(p, o, s) MSGPACK_PP_WHILE_241_C(MSGPACK_PP_BOOL(p(242, s)), p, o, s)
+# define MSGPACK_PP_WHILE_242(p, o, s) MSGPACK_PP_WHILE_242_C(MSGPACK_PP_BOOL(p(243, s)), p, o, s)
+# define MSGPACK_PP_WHILE_243(p, o, s) MSGPACK_PP_WHILE_243_C(MSGPACK_PP_BOOL(p(244, s)), p, o, s)
+# define MSGPACK_PP_WHILE_244(p, o, s) MSGPACK_PP_WHILE_244_C(MSGPACK_PP_BOOL(p(245, s)), p, o, s)
+# define MSGPACK_PP_WHILE_245(p, o, s) MSGPACK_PP_WHILE_245_C(MSGPACK_PP_BOOL(p(246, s)), p, o, s)
+# define MSGPACK_PP_WHILE_246(p, o, s) MSGPACK_PP_WHILE_246_C(MSGPACK_PP_BOOL(p(247, s)), p, o, s)
+# define MSGPACK_PP_WHILE_247(p, o, s) MSGPACK_PP_WHILE_247_C(MSGPACK_PP_BOOL(p(248, s)), p, o, s)
+# define MSGPACK_PP_WHILE_248(p, o, s) MSGPACK_PP_WHILE_248_C(MSGPACK_PP_BOOL(p(249, s)), p, o, s)
+# define MSGPACK_PP_WHILE_249(p, o, s) MSGPACK_PP_WHILE_249_C(MSGPACK_PP_BOOL(p(250, s)), p, o, s)
+# define MSGPACK_PP_WHILE_250(p, o, s) MSGPACK_PP_WHILE_250_C(MSGPACK_PP_BOOL(p(251, s)), p, o, s)
+# define MSGPACK_PP_WHILE_251(p, o, s) MSGPACK_PP_WHILE_251_C(MSGPACK_PP_BOOL(p(252, s)), p, o, s)
+# define MSGPACK_PP_WHILE_252(p, o, s) MSGPACK_PP_WHILE_252_C(MSGPACK_PP_BOOL(p(253, s)), p, o, s)
+# define MSGPACK_PP_WHILE_253(p, o, s) MSGPACK_PP_WHILE_253_C(MSGPACK_PP_BOOL(p(254, s)), p, o, s)
+# define MSGPACK_PP_WHILE_254(p, o, s) MSGPACK_PP_WHILE_254_C(MSGPACK_PP_BOOL(p(255, s)), p, o, s)
+# define MSGPACK_PP_WHILE_255(p, o, s) MSGPACK_PP_WHILE_255_C(MSGPACK_PP_BOOL(p(256, s)), p, o, s)
+# define MSGPACK_PP_WHILE_256(p, o, s) MSGPACK_PP_WHILE_256_C(MSGPACK_PP_BOOL(p(257, s)), p, o, s)
+#
+# define MSGPACK_PP_WHILE_1_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_2, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(2, s))
+# define MSGPACK_PP_WHILE_2_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_3, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(3, s))
+# define MSGPACK_PP_WHILE_3_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_4, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(4, s))
+# define MSGPACK_PP_WHILE_4_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_5, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(5, s))
+# define MSGPACK_PP_WHILE_5_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_6, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(6, s))
+# define MSGPACK_PP_WHILE_6_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_7, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(7, s))
+# define MSGPACK_PP_WHILE_7_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_8, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(8, s))
+# define MSGPACK_PP_WHILE_8_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_9, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(9, s))
+# define MSGPACK_PP_WHILE_9_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_10, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(10, s))
+# define MSGPACK_PP_WHILE_10_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_11, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(11, s))
+# define MSGPACK_PP_WHILE_11_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_12, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(12, s))
+# define MSGPACK_PP_WHILE_12_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_13, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(13, s))
+# define MSGPACK_PP_WHILE_13_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_14, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(14, s))
+# define MSGPACK_PP_WHILE_14_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_15, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(15, s))
+# define MSGPACK_PP_WHILE_15_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_16, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(16, s))
+# define MSGPACK_PP_WHILE_16_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_17, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(17, s))
+# define MSGPACK_PP_WHILE_17_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_18, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(18, s))
+# define MSGPACK_PP_WHILE_18_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_19, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(19, s))
+# define MSGPACK_PP_WHILE_19_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_20, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(20, s))
+# define MSGPACK_PP_WHILE_20_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_21, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(21, s))
+# define MSGPACK_PP_WHILE_21_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_22, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(22, s))
+# define MSGPACK_PP_WHILE_22_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_23, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(23, s))
+# define MSGPACK_PP_WHILE_23_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_24, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(24, s))
+# define MSGPACK_PP_WHILE_24_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_25, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(25, s))
+# define MSGPACK_PP_WHILE_25_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_26, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(26, s))
+# define MSGPACK_PP_WHILE_26_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_27, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(27, s))
+# define MSGPACK_PP_WHILE_27_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_28, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(28, s))
+# define MSGPACK_PP_WHILE_28_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_29, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(29, s))
+# define MSGPACK_PP_WHILE_29_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_30, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(30, s))
+# define MSGPACK_PP_WHILE_30_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_31, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(31, s))
+# define MSGPACK_PP_WHILE_31_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_32, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(32, s))
+# define MSGPACK_PP_WHILE_32_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_33, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(33, s))
+# define MSGPACK_PP_WHILE_33_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_34, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(34, s))
+# define MSGPACK_PP_WHILE_34_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_35, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(35, s))
+# define MSGPACK_PP_WHILE_35_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_36, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(36, s))
+# define MSGPACK_PP_WHILE_36_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_37, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(37, s))
+# define MSGPACK_PP_WHILE_37_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_38, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(38, s))
+# define MSGPACK_PP_WHILE_38_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_39, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(39, s))
+# define MSGPACK_PP_WHILE_39_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_40, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(40, s))
+# define MSGPACK_PP_WHILE_40_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_41, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(41, s))
+# define MSGPACK_PP_WHILE_41_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_42, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(42, s))
+# define MSGPACK_PP_WHILE_42_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_43, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(43, s))
+# define MSGPACK_PP_WHILE_43_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_44, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(44, s))
+# define MSGPACK_PP_WHILE_44_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_45, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(45, s))
+# define MSGPACK_PP_WHILE_45_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_46, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(46, s))
+# define MSGPACK_PP_WHILE_46_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_47, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(47, s))
+# define MSGPACK_PP_WHILE_47_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_48, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(48, s))
+# define MSGPACK_PP_WHILE_48_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_49, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(49, s))
+# define MSGPACK_PP_WHILE_49_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_50, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(50, s))
+# define MSGPACK_PP_WHILE_50_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_51, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(51, s))
+# define MSGPACK_PP_WHILE_51_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_52, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(52, s))
+# define MSGPACK_PP_WHILE_52_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_53, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(53, s))
+# define MSGPACK_PP_WHILE_53_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_54, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(54, s))
+# define MSGPACK_PP_WHILE_54_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_55, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(55, s))
+# define MSGPACK_PP_WHILE_55_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_56, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(56, s))
+# define MSGPACK_PP_WHILE_56_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_57, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(57, s))
+# define MSGPACK_PP_WHILE_57_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_58, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(58, s))
+# define MSGPACK_PP_WHILE_58_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_59, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(59, s))
+# define MSGPACK_PP_WHILE_59_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_60, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(60, s))
+# define MSGPACK_PP_WHILE_60_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_61, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(61, s))
+# define MSGPACK_PP_WHILE_61_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_62, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(62, s))
+# define MSGPACK_PP_WHILE_62_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_63, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(63, s))
+# define MSGPACK_PP_WHILE_63_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_64, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(64, s))
+# define MSGPACK_PP_WHILE_64_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_65, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(65, s))
+# define MSGPACK_PP_WHILE_65_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_66, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(66, s))
+# define MSGPACK_PP_WHILE_66_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_67, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(67, s))
+# define MSGPACK_PP_WHILE_67_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_68, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(68, s))
+# define MSGPACK_PP_WHILE_68_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_69, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(69, s))
+# define MSGPACK_PP_WHILE_69_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_70, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(70, s))
+# define MSGPACK_PP_WHILE_70_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_71, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(71, s))
+# define MSGPACK_PP_WHILE_71_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_72, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(72, s))
+# define MSGPACK_PP_WHILE_72_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_73, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(73, s))
+# define MSGPACK_PP_WHILE_73_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_74, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(74, s))
+# define MSGPACK_PP_WHILE_74_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_75, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(75, s))
+# define MSGPACK_PP_WHILE_75_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_76, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(76, s))
+# define MSGPACK_PP_WHILE_76_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_77, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(77, s))
+# define MSGPACK_PP_WHILE_77_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_78, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(78, s))
+# define MSGPACK_PP_WHILE_78_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_79, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(79, s))
+# define MSGPACK_PP_WHILE_79_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_80, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(80, s))
+# define MSGPACK_PP_WHILE_80_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_81, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(81, s))
+# define MSGPACK_PP_WHILE_81_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_82, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(82, s))
+# define MSGPACK_PP_WHILE_82_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_83, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(83, s))
+# define MSGPACK_PP_WHILE_83_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_84, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(84, s))
+# define MSGPACK_PP_WHILE_84_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_85, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(85, s))
+# define MSGPACK_PP_WHILE_85_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_86, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(86, s))
+# define MSGPACK_PP_WHILE_86_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_87, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(87, s))
+# define MSGPACK_PP_WHILE_87_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_88, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(88, s))
+# define MSGPACK_PP_WHILE_88_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_89, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(89, s))
+# define MSGPACK_PP_WHILE_89_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_90, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(90, s))
+# define MSGPACK_PP_WHILE_90_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_91, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(91, s))
+# define MSGPACK_PP_WHILE_91_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_92, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(92, s))
+# define MSGPACK_PP_WHILE_92_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_93, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(93, s))
+# define MSGPACK_PP_WHILE_93_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_94, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(94, s))
+# define MSGPACK_PP_WHILE_94_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_95, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(95, s))
+# define MSGPACK_PP_WHILE_95_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_96, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(96, s))
+# define MSGPACK_PP_WHILE_96_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_97, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(97, s))
+# define MSGPACK_PP_WHILE_97_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_98, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(98, s))
+# define MSGPACK_PP_WHILE_98_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_99, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(99, s))
+# define MSGPACK_PP_WHILE_99_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_100, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(100, s))
+# define MSGPACK_PP_WHILE_100_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_101, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(101, s))
+# define MSGPACK_PP_WHILE_101_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_102, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(102, s))
+# define MSGPACK_PP_WHILE_102_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_103, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(103, s))
+# define MSGPACK_PP_WHILE_103_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_104, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(104, s))
+# define MSGPACK_PP_WHILE_104_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_105, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(105, s))
+# define MSGPACK_PP_WHILE_105_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_106, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(106, s))
+# define MSGPACK_PP_WHILE_106_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_107, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(107, s))
+# define MSGPACK_PP_WHILE_107_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_108, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(108, s))
+# define MSGPACK_PP_WHILE_108_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_109, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(109, s))
+# define MSGPACK_PP_WHILE_109_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_110, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(110, s))
+# define MSGPACK_PP_WHILE_110_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_111, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(111, s))
+# define MSGPACK_PP_WHILE_111_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_112, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(112, s))
+# define MSGPACK_PP_WHILE_112_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_113, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(113, s))
+# define MSGPACK_PP_WHILE_113_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_114, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(114, s))
+# define MSGPACK_PP_WHILE_114_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_115, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(115, s))
+# define MSGPACK_PP_WHILE_115_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_116, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(116, s))
+# define MSGPACK_PP_WHILE_116_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_117, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(117, s))
+# define MSGPACK_PP_WHILE_117_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_118, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(118, s))
+# define MSGPACK_PP_WHILE_118_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_119, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(119, s))
+# define MSGPACK_PP_WHILE_119_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_120, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(120, s))
+# define MSGPACK_PP_WHILE_120_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_121, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(121, s))
+# define MSGPACK_PP_WHILE_121_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_122, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(122, s))
+# define MSGPACK_PP_WHILE_122_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_123, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(123, s))
+# define MSGPACK_PP_WHILE_123_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_124, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(124, s))
+# define MSGPACK_PP_WHILE_124_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_125, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(125, s))
+# define MSGPACK_PP_WHILE_125_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_126, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(126, s))
+# define MSGPACK_PP_WHILE_126_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_127, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(127, s))
+# define MSGPACK_PP_WHILE_127_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_128, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(128, s))
+# define MSGPACK_PP_WHILE_128_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_129, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(129, s))
+# define MSGPACK_PP_WHILE_129_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_130, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(130, s))
+# define MSGPACK_PP_WHILE_130_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_131, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(131, s))
+# define MSGPACK_PP_WHILE_131_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_132, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(132, s))
+# define MSGPACK_PP_WHILE_132_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_133, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(133, s))
+# define MSGPACK_PP_WHILE_133_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_134, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(134, s))
+# define MSGPACK_PP_WHILE_134_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_135, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(135, s))
+# define MSGPACK_PP_WHILE_135_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_136, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(136, s))
+# define MSGPACK_PP_WHILE_136_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_137, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(137, s))
+# define MSGPACK_PP_WHILE_137_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_138, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(138, s))
+# define MSGPACK_PP_WHILE_138_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_139, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(139, s))
+# define MSGPACK_PP_WHILE_139_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_140, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(140, s))
+# define MSGPACK_PP_WHILE_140_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_141, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(141, s))
+# define MSGPACK_PP_WHILE_141_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_142, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(142, s))
+# define MSGPACK_PP_WHILE_142_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_143, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(143, s))
+# define MSGPACK_PP_WHILE_143_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_144, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(144, s))
+# define MSGPACK_PP_WHILE_144_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_145, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(145, s))
+# define MSGPACK_PP_WHILE_145_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_146, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(146, s))
+# define MSGPACK_PP_WHILE_146_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_147, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(147, s))
+# define MSGPACK_PP_WHILE_147_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_148, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(148, s))
+# define MSGPACK_PP_WHILE_148_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_149, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(149, s))
+# define MSGPACK_PP_WHILE_149_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_150, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(150, s))
+# define MSGPACK_PP_WHILE_150_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_151, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(151, s))
+# define MSGPACK_PP_WHILE_151_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_152, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(152, s))
+# define MSGPACK_PP_WHILE_152_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_153, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(153, s))
+# define MSGPACK_PP_WHILE_153_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_154, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(154, s))
+# define MSGPACK_PP_WHILE_154_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_155, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(155, s))
+# define MSGPACK_PP_WHILE_155_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_156, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(156, s))
+# define MSGPACK_PP_WHILE_156_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_157, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(157, s))
+# define MSGPACK_PP_WHILE_157_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_158, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(158, s))
+# define MSGPACK_PP_WHILE_158_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_159, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(159, s))
+# define MSGPACK_PP_WHILE_159_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_160, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(160, s))
+# define MSGPACK_PP_WHILE_160_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_161, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(161, s))
+# define MSGPACK_PP_WHILE_161_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_162, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(162, s))
+# define MSGPACK_PP_WHILE_162_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_163, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(163, s))
+# define MSGPACK_PP_WHILE_163_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_164, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(164, s))
+# define MSGPACK_PP_WHILE_164_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_165, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(165, s))
+# define MSGPACK_PP_WHILE_165_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_166, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(166, s))
+# define MSGPACK_PP_WHILE_166_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_167, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(167, s))
+# define MSGPACK_PP_WHILE_167_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_168, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(168, s))
+# define MSGPACK_PP_WHILE_168_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_169, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(169, s))
+# define MSGPACK_PP_WHILE_169_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_170, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(170, s))
+# define MSGPACK_PP_WHILE_170_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_171, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(171, s))
+# define MSGPACK_PP_WHILE_171_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_172, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(172, s))
+# define MSGPACK_PP_WHILE_172_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_173, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(173, s))
+# define MSGPACK_PP_WHILE_173_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_174, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(174, s))
+# define MSGPACK_PP_WHILE_174_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_175, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(175, s))
+# define MSGPACK_PP_WHILE_175_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_176, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(176, s))
+# define MSGPACK_PP_WHILE_176_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_177, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(177, s))
+# define MSGPACK_PP_WHILE_177_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_178, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(178, s))
+# define MSGPACK_PP_WHILE_178_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_179, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(179, s))
+# define MSGPACK_PP_WHILE_179_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_180, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(180, s))
+# define MSGPACK_PP_WHILE_180_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_181, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(181, s))
+# define MSGPACK_PP_WHILE_181_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_182, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(182, s))
+# define MSGPACK_PP_WHILE_182_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_183, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(183, s))
+# define MSGPACK_PP_WHILE_183_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_184, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(184, s))
+# define MSGPACK_PP_WHILE_184_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_185, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(185, s))
+# define MSGPACK_PP_WHILE_185_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_186, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(186, s))
+# define MSGPACK_PP_WHILE_186_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_187, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(187, s))
+# define MSGPACK_PP_WHILE_187_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_188, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(188, s))
+# define MSGPACK_PP_WHILE_188_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_189, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(189, s))
+# define MSGPACK_PP_WHILE_189_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_190, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(190, s))
+# define MSGPACK_PP_WHILE_190_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_191, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(191, s))
+# define MSGPACK_PP_WHILE_191_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_192, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(192, s))
+# define MSGPACK_PP_WHILE_192_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_193, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(193, s))
+# define MSGPACK_PP_WHILE_193_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_194, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(194, s))
+# define MSGPACK_PP_WHILE_194_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_195, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(195, s))
+# define MSGPACK_PP_WHILE_195_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_196, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(196, s))
+# define MSGPACK_PP_WHILE_196_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_197, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(197, s))
+# define MSGPACK_PP_WHILE_197_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_198, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(198, s))
+# define MSGPACK_PP_WHILE_198_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_199, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(199, s))
+# define MSGPACK_PP_WHILE_199_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_200, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(200, s))
+# define MSGPACK_PP_WHILE_200_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_201, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(201, s))
+# define MSGPACK_PP_WHILE_201_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_202, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(202, s))
+# define MSGPACK_PP_WHILE_202_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_203, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(203, s))
+# define MSGPACK_PP_WHILE_203_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_204, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(204, s))
+# define MSGPACK_PP_WHILE_204_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_205, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(205, s))
+# define MSGPACK_PP_WHILE_205_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_206, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(206, s))
+# define MSGPACK_PP_WHILE_206_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_207, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(207, s))
+# define MSGPACK_PP_WHILE_207_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_208, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(208, s))
+# define MSGPACK_PP_WHILE_208_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_209, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(209, s))
+# define MSGPACK_PP_WHILE_209_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_210, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(210, s))
+# define MSGPACK_PP_WHILE_210_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_211, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(211, s))
+# define MSGPACK_PP_WHILE_211_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_212, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(212, s))
+# define MSGPACK_PP_WHILE_212_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_213, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(213, s))
+# define MSGPACK_PP_WHILE_213_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_214, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(214, s))
+# define MSGPACK_PP_WHILE_214_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_215, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(215, s))
+# define MSGPACK_PP_WHILE_215_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_216, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(216, s))
+# define MSGPACK_PP_WHILE_216_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_217, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(217, s))
+# define MSGPACK_PP_WHILE_217_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_218, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(218, s))
+# define MSGPACK_PP_WHILE_218_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_219, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(219, s))
+# define MSGPACK_PP_WHILE_219_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_220, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(220, s))
+# define MSGPACK_PP_WHILE_220_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_221, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(221, s))
+# define MSGPACK_PP_WHILE_221_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_222, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(222, s))
+# define MSGPACK_PP_WHILE_222_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_223, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(223, s))
+# define MSGPACK_PP_WHILE_223_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_224, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(224, s))
+# define MSGPACK_PP_WHILE_224_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_225, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(225, s))
+# define MSGPACK_PP_WHILE_225_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_226, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(226, s))
+# define MSGPACK_PP_WHILE_226_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_227, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(227, s))
+# define MSGPACK_PP_WHILE_227_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_228, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(228, s))
+# define MSGPACK_PP_WHILE_228_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_229, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(229, s))
+# define MSGPACK_PP_WHILE_229_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_230, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(230, s))
+# define MSGPACK_PP_WHILE_230_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_231, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(231, s))
+# define MSGPACK_PP_WHILE_231_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_232, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(232, s))
+# define MSGPACK_PP_WHILE_232_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_233, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(233, s))
+# define MSGPACK_PP_WHILE_233_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_234, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(234, s))
+# define MSGPACK_PP_WHILE_234_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_235, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(235, s))
+# define MSGPACK_PP_WHILE_235_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_236, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(236, s))
+# define MSGPACK_PP_WHILE_236_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_237, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(237, s))
+# define MSGPACK_PP_WHILE_237_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_238, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(238, s))
+# define MSGPACK_PP_WHILE_238_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_239, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(239, s))
+# define MSGPACK_PP_WHILE_239_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_240, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(240, s))
+# define MSGPACK_PP_WHILE_240_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_241, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(241, s))
+# define MSGPACK_PP_WHILE_241_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_242, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(242, s))
+# define MSGPACK_PP_WHILE_242_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_243, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(243, s))
+# define MSGPACK_PP_WHILE_243_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_244, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(244, s))
+# define MSGPACK_PP_WHILE_244_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_245, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(245, s))
+# define MSGPACK_PP_WHILE_245_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_246, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(246, s))
+# define MSGPACK_PP_WHILE_246_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_247, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(247, s))
+# define MSGPACK_PP_WHILE_247_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_248, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(248, s))
+# define MSGPACK_PP_WHILE_248_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_249, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(249, s))
+# define MSGPACK_PP_WHILE_249_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_250, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(250, s))
+# define MSGPACK_PP_WHILE_250_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_251, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(251, s))
+# define MSGPACK_PP_WHILE_251_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_252, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(252, s))
+# define MSGPACK_PP_WHILE_252_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_253, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(253, s))
+# define MSGPACK_PP_WHILE_253_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_254, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(254, s))
+# define MSGPACK_PP_WHILE_254_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_255, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(255, s))
+# define MSGPACK_PP_WHILE_255_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_256, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(256, s))
+# define MSGPACK_PP_WHILE_256_C(c, p, o, s) MSGPACK_PP_IIF(c, MSGPACK_PP_WHILE_257, s MSGPACK_PP_TUPLE_EAT_3)(p, o, MSGPACK_PP_IIF(c, o, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_2)(257, s))
+#
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/control/expr_if.hpp b/third_party/msgpack/include/msgpack/preprocessor/control/expr_if.hpp
new file mode 100644
index 0000000000..af42b4b736
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/control/expr_if.hpp
@@ -0,0 +1,30 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_CONTROL_EXPR_IF_HPP
+# define MSGPACK_PREPROCESSOR_CONTROL_EXPR_IF_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/control/expr_iif.hpp>
+# include <msgpack/preprocessor/logical/bool.hpp>
+#
+# /* MSGPACK_PP_EXPR_IF */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_EXPR_IF(cond, expr) MSGPACK_PP_EXPR_IIF(MSGPACK_PP_BOOL(cond), expr)
+# else
+# define MSGPACK_PP_EXPR_IF(cond, expr) MSGPACK_PP_EXPR_IF_I(cond, expr)
+# define MSGPACK_PP_EXPR_IF_I(cond, expr) MSGPACK_PP_EXPR_IIF(MSGPACK_PP_BOOL(cond), expr)
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/control/expr_iif.hpp b/third_party/msgpack/include/msgpack/preprocessor/control/expr_iif.hpp
new file mode 100644
index 0000000000..af6d7895fb
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/control/expr_iif.hpp
@@ -0,0 +1,31 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_CONTROL_EXPR_IIF_HPP
+# define MSGPACK_PREPROCESSOR_CONTROL_EXPR_IIF_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# /* MSGPACK_PP_EXPR_IIF */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_EXPR_IIF(bit, expr) MSGPACK_PP_EXPR_IIF_I(bit, expr)
+# else
+# define MSGPACK_PP_EXPR_IIF(bit, expr) MSGPACK_PP_EXPR_IIF_OO((bit, expr))
+# define MSGPACK_PP_EXPR_IIF_OO(par) MSGPACK_PP_EXPR_IIF_I ## par
+# endif
+#
+# define MSGPACK_PP_EXPR_IIF_I(bit, expr) MSGPACK_PP_EXPR_IIF_ ## bit(expr)
+#
+# define MSGPACK_PP_EXPR_IIF_0(expr)
+# define MSGPACK_PP_EXPR_IIF_1(expr) expr
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/control/if.hpp b/third_party/msgpack/include/msgpack/preprocessor/control/if.hpp
new file mode 100644
index 0000000000..37a79c2501
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/control/if.hpp
@@ -0,0 +1,30 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_CONTROL_IF_HPP
+# define MSGPACK_PREPROCESSOR_CONTROL_IF_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/control/iif.hpp>
+# include <msgpack/preprocessor/logical/bool.hpp>
+#
+# /* MSGPACK_PP_IF */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_IF(cond, t, f) MSGPACK_PP_IIF(MSGPACK_PP_BOOL(cond), t, f)
+# else
+# define MSGPACK_PP_IF(cond, t, f) MSGPACK_PP_IF_I(cond, t, f)
+# define MSGPACK_PP_IF_I(cond, t, f) MSGPACK_PP_IIF(MSGPACK_PP_BOOL(cond), t, f)
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/control/iif.hpp b/third_party/msgpack/include/msgpack/preprocessor/control/iif.hpp
new file mode 100644
index 0000000000..45fc61aede
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/control/iif.hpp
@@ -0,0 +1,34 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_CONTROL_IIF_HPP
+# define MSGPACK_PREPROCESSOR_CONTROL_IIF_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_IIF(bit, t, f) MSGPACK_PP_IIF_I(bit, t, f)
+# else
+# define MSGPACK_PP_IIF(bit, t, f) MSGPACK_PP_IIF_OO((bit, t, f))
+# define MSGPACK_PP_IIF_OO(par) MSGPACK_PP_IIF_I ## par
+# endif
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MSVC()
+# define MSGPACK_PP_IIF_I(bit, t, f) MSGPACK_PP_IIF_ ## bit(t, f)
+# else
+# define MSGPACK_PP_IIF_I(bit, t, f) MSGPACK_PP_IIF_II(MSGPACK_PP_IIF_ ## bit(t, f))
+# define MSGPACK_PP_IIF_II(id) id
+# endif
+#
+# define MSGPACK_PP_IIF_0(t, f) f
+# define MSGPACK_PP_IIF_1(t, f) t
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/control/while.hpp b/third_party/msgpack/include/msgpack/preprocessor/control/while.hpp
new file mode 100644
index 0000000000..6b3e074cfc
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/control/while.hpp
@@ -0,0 +1,312 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_CONTROL_WHILE_HPP
+# define MSGPACK_PREPROCESSOR_CONTROL_WHILE_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/debug/error.hpp>
+# include <msgpack/preprocessor/detail/auto_rec.hpp>
+# include <msgpack/preprocessor/list/fold_left.hpp>
+# include <msgpack/preprocessor/list/fold_right.hpp>
+# include <msgpack/preprocessor/logical/bitand.hpp>
+#
+# /* MSGPACK_PP_WHILE */
+#
+# if 0
+# define MSGPACK_PP_WHILE(pred, op, state)
+# endif
+#
+# define MSGPACK_PP_WHILE MSGPACK_PP_CAT(MSGPACK_PP_WHILE_, MSGPACK_PP_AUTO_REC(MSGPACK_PP_WHILE_P, 256))
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_WHILE_P(n) MSGPACK_PP_BITAND(MSGPACK_PP_CAT(MSGPACK_PP_WHILE_CHECK_, MSGPACK_PP_WHILE_ ## n(MSGPACK_PP_WHILE_F, MSGPACK_PP_NIL, MSGPACK_PP_NIL)), MSGPACK_PP_BITAND(MSGPACK_PP_CAT(MSGPACK_PP_LIST_FOLD_LEFT_CHECK_, MSGPACK_PP_LIST_FOLD_LEFT_ ## n(MSGPACK_PP_NIL, MSGPACK_PP_NIL, MSGPACK_PP_NIL)), MSGPACK_PP_CAT(MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_, MSGPACK_PP_LIST_FOLD_RIGHT_ ## n(MSGPACK_PP_NIL, MSGPACK_PP_NIL, MSGPACK_PP_NIL))))
+# else
+# define MSGPACK_PP_WHILE_P(n) MSGPACK_PP_BITAND(MSGPACK_PP_CAT(MSGPACK_PP_WHILE_CHECK_, MSGPACK_PP_WHILE_ ## n(MSGPACK_PP_WHILE_F, MSGPACK_PP_NIL, MSGPACK_PP_NIL)), MSGPACK_PP_CAT(MSGPACK_PP_LIST_FOLD_LEFT_CHECK_, MSGPACK_PP_LIST_FOLD_LEFT_ ## n(MSGPACK_PP_NIL, MSGPACK_PP_NIL, MSGPACK_PP_NIL)))
+# endif
+#
+# define MSGPACK_PP_WHILE_F(d, _) 0
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# include <msgpack/preprocessor/control/detail/edg/while.hpp>
+# elif MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MSVC()
+# include <msgpack/preprocessor/control/detail/msvc/while.hpp>
+# elif MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_DMC()
+# include <msgpack/preprocessor/control/detail/dmc/while.hpp>
+# else
+# include <msgpack/preprocessor/control/detail/while.hpp>
+# endif
+#
+# define MSGPACK_PP_WHILE_257(p, o, s) MSGPACK_PP_ERROR(0x0001)
+#
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_NIL 1
+#
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_1(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_2(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_3(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_4(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_5(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_6(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_7(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_8(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_9(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_10(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_11(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_12(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_13(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_14(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_15(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_16(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_17(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_18(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_19(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_20(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_21(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_22(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_23(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_24(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_25(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_26(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_27(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_28(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_29(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_30(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_31(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_32(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_33(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_34(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_35(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_36(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_37(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_38(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_39(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_40(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_41(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_42(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_43(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_44(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_45(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_46(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_47(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_48(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_49(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_50(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_51(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_52(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_53(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_54(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_55(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_56(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_57(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_58(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_59(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_60(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_61(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_62(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_63(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_64(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_65(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_66(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_67(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_68(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_69(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_70(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_71(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_72(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_73(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_74(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_75(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_76(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_77(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_78(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_79(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_80(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_81(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_82(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_83(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_84(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_85(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_86(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_87(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_88(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_89(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_90(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_91(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_92(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_93(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_94(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_95(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_96(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_97(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_98(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_99(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_100(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_101(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_102(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_103(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_104(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_105(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_106(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_107(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_108(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_109(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_110(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_111(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_112(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_113(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_114(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_115(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_116(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_117(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_118(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_119(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_120(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_121(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_122(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_123(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_124(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_125(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_126(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_127(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_128(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_129(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_130(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_131(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_132(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_133(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_134(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_135(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_136(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_137(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_138(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_139(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_140(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_141(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_142(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_143(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_144(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_145(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_146(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_147(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_148(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_149(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_150(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_151(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_152(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_153(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_154(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_155(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_156(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_157(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_158(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_159(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_160(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_161(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_162(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_163(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_164(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_165(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_166(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_167(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_168(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_169(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_170(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_171(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_172(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_173(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_174(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_175(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_176(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_177(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_178(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_179(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_180(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_181(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_182(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_183(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_184(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_185(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_186(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_187(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_188(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_189(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_190(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_191(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_192(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_193(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_194(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_195(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_196(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_197(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_198(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_199(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_200(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_201(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_202(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_203(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_204(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_205(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_206(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_207(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_208(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_209(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_210(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_211(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_212(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_213(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_214(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_215(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_216(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_217(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_218(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_219(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_220(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_221(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_222(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_223(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_224(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_225(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_226(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_227(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_228(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_229(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_230(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_231(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_232(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_233(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_234(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_235(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_236(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_237(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_238(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_239(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_240(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_241(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_242(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_243(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_244(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_245(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_246(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_247(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_248(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_249(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_250(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_251(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_252(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_253(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_254(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_255(p, o, s) 0
+# define MSGPACK_PP_WHILE_CHECK_MSGPACK_PP_WHILE_256(p, o, s) 0
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/debug.hpp b/third_party/msgpack/include/msgpack/preprocessor/debug.hpp
new file mode 100644
index 0000000000..dd512f8db8
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/debug.hpp
@@ -0,0 +1,18 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_DEBUG_HPP
+# define MSGPACK_PREPROCESSOR_DEBUG_HPP
+#
+# include <msgpack/preprocessor/debug/assert.hpp>
+# include <msgpack/preprocessor/debug/line.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/debug/assert.hpp b/third_party/msgpack/include/msgpack/preprocessor/debug/assert.hpp
new file mode 100644
index 0000000000..d784113df7
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/debug/assert.hpp
@@ -0,0 +1,44 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_DEBUG_ASSERT_HPP
+# define MSGPACK_PREPROCESSOR_DEBUG_ASSERT_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/control/expr_iif.hpp>
+# include <msgpack/preprocessor/control/iif.hpp>
+# include <msgpack/preprocessor/logical/not.hpp>
+# include <msgpack/preprocessor/tuple/eat.hpp>
+#
+# /* MSGPACK_PP_ASSERT */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_ASSERT MSGPACK_PP_ASSERT_D
+# else
+# define MSGPACK_PP_ASSERT(cond) MSGPACK_PP_ASSERT_D(cond)
+# endif
+#
+# define MSGPACK_PP_ASSERT_D(cond) MSGPACK_PP_IIF(MSGPACK_PP_NOT(cond), MSGPACK_PP_ASSERT_ERROR, MSGPACK_PP_TUPLE_EAT_1)(...)
+# define MSGPACK_PP_ASSERT_ERROR(x, y, z)
+#
+# /* MSGPACK_PP_ASSERT_MSG */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_ASSERT_MSG MSGPACK_PP_ASSERT_MSG_D
+# else
+# define MSGPACK_PP_ASSERT_MSG(cond, msg) MSGPACK_PP_ASSERT_MSG_D(cond, msg)
+# endif
+#
+# define MSGPACK_PP_ASSERT_MSG_D(cond, msg) MSGPACK_PP_EXPR_IIF(MSGPACK_PP_NOT(cond), msg)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/debug/error.hpp b/third_party/msgpack/include/msgpack/preprocessor/debug/error.hpp
new file mode 100644
index 0000000000..48a76962fd
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/debug/error.hpp
@@ -0,0 +1,33 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_DEBUG_ERROR_HPP
+# define MSGPACK_PREPROCESSOR_DEBUG_ERROR_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# /* MSGPACK_PP_ERROR */
+#
+# if MSGPACK_PP_CONFIG_ERRORS
+# define MSGPACK_PP_ERROR(code) MSGPACK_PP_CAT(MSGPACK_PP_ERROR_, code)
+# endif
+#
+# define MSGPACK_PP_ERROR_0x0000 MSGPACK_PP_ERROR(0x0000, MSGPACK_PP_INDEX_OUT_OF_BOUNDS)
+# define MSGPACK_PP_ERROR_0x0001 MSGPACK_PP_ERROR(0x0001, MSGPACK_PP_WHILE_OVERFLOW)
+# define MSGPACK_PP_ERROR_0x0002 MSGPACK_PP_ERROR(0x0002, MSGPACK_PP_FOR_OVERFLOW)
+# define MSGPACK_PP_ERROR_0x0003 MSGPACK_PP_ERROR(0x0003, MSGPACK_PP_REPEAT_OVERFLOW)
+# define MSGPACK_PP_ERROR_0x0004 MSGPACK_PP_ERROR(0x0004, MSGPACK_PP_LIST_FOLD_OVERFLOW)
+# define MSGPACK_PP_ERROR_0x0005 MSGPACK_PP_ERROR(0x0005, MSGPACK_PP_SEQ_FOLD_OVERFLOW)
+# define MSGPACK_PP_ERROR_0x0006 MSGPACK_PP_ERROR(0x0006, MSGPACK_PP_ARITHMETIC_OVERFLOW)
+# define MSGPACK_PP_ERROR_0x0007 MSGPACK_PP_ERROR(0x0007, MSGPACK_PP_DIVISION_BY_ZERO)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/debug/line.hpp b/third_party/msgpack/include/msgpack/preprocessor/debug/line.hpp
new file mode 100644
index 0000000000..e712a0f080
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/debug/line.hpp
@@ -0,0 +1,35 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_DEBUG_LINE_HPP
+# define MSGPACK_PREPROCESSOR_DEBUG_LINE_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/iteration/iterate.hpp>
+# include <msgpack/preprocessor/stringize.hpp>
+#
+# /* MSGPACK_PP_LINE */
+#
+# if MSGPACK_PP_CONFIG_EXTENDED_LINE_INFO
+# define MSGPACK_PP_LINE(line, file) line MSGPACK_PP_CAT(MSGPACK_PP_LINE_, MSGPACK_PP_IS_ITERATING)(file)
+# define MSGPACK_PP_LINE_MSGPACK_PP_IS_ITERATING(file) #file
+# define MSGPACK_PP_LINE_1(file) MSGPACK_PP_STRINGIZE(file MSGPACK_PP_CAT(MSGPACK_PP_LINE_I_, MSGPACK_PP_ITERATION_DEPTH())())
+# define MSGPACK_PP_LINE_I_1() [MSGPACK_PP_FRAME_ITERATION(1)]
+# define MSGPACK_PP_LINE_I_2() MSGPACK_PP_LINE_I_1()[MSGPACK_PP_FRAME_ITERATION(2)]
+# define MSGPACK_PP_LINE_I_3() MSGPACK_PP_LINE_I_2()[MSGPACK_PP_FRAME_ITERATION(3)]
+# define MSGPACK_PP_LINE_I_4() MSGPACK_PP_LINE_I_3()[MSGPACK_PP_FRAME_ITERATION(4)]
+# define MSGPACK_PP_LINE_I_5() MSGPACK_PP_LINE_I_4()[MSGPACK_PP_FRAME_ITERATION(5)]
+# else
+# define MSGPACK_PP_LINE(line, file) line __FILE__
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/dec.hpp b/third_party/msgpack/include/msgpack/preprocessor/dec.hpp
new file mode 100644
index 0000000000..d4c7226251
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/dec.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_DEC_HPP
+# define MSGPACK_PREPROCESSOR_DEC_HPP
+#
+# include <msgpack/preprocessor/arithmetic/dec.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/detail/auto_rec.hpp b/third_party/msgpack/include/msgpack/preprocessor/detail/auto_rec.hpp
new file mode 100644
index 0000000000..413d2c64d5
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/detail/auto_rec.hpp
@@ -0,0 +1,293 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_DMC()
+# include <msgpack/preprocessor/detail/dmc/auto_rec.hpp>
+# else
+#
+# ifndef MSGPACK_PREPROCESSOR_DETAIL_AUTO_REC_HPP
+# define MSGPACK_PREPROCESSOR_DETAIL_AUTO_REC_HPP
+#
+# include <msgpack/preprocessor/control/iif.hpp>
+#
+# /* MSGPACK_PP_AUTO_REC */
+#
+# define MSGPACK_PP_AUTO_REC(pred, n) MSGPACK_PP_NODE_ENTRY_ ## n(pred)
+#
+# define MSGPACK_PP_NODE_ENTRY_256(p) MSGPACK_PP_NODE_128(p)(p)(p)(p)(p)(p)(p)(p)
+# define MSGPACK_PP_NODE_ENTRY_128(p) MSGPACK_PP_NODE_64(p)(p)(p)(p)(p)(p)(p)
+# define MSGPACK_PP_NODE_ENTRY_64(p) MSGPACK_PP_NODE_32(p)(p)(p)(p)(p)(p)
+# define MSGPACK_PP_NODE_ENTRY_32(p) MSGPACK_PP_NODE_16(p)(p)(p)(p)(p)
+# define MSGPACK_PP_NODE_ENTRY_16(p) MSGPACK_PP_NODE_8(p)(p)(p)(p)
+# define MSGPACK_PP_NODE_ENTRY_8(p) MSGPACK_PP_NODE_4(p)(p)(p)
+# define MSGPACK_PP_NODE_ENTRY_4(p) MSGPACK_PP_NODE_2(p)(p)
+# define MSGPACK_PP_NODE_ENTRY_2(p) MSGPACK_PP_NODE_1(p)
+#
+# define MSGPACK_PP_NODE_128(p) MSGPACK_PP_IIF(p(128), MSGPACK_PP_NODE_64, MSGPACK_PP_NODE_192)
+# define MSGPACK_PP_NODE_64(p) MSGPACK_PP_IIF(p(64), MSGPACK_PP_NODE_32, MSGPACK_PP_NODE_96)
+# define MSGPACK_PP_NODE_32(p) MSGPACK_PP_IIF(p(32), MSGPACK_PP_NODE_16, MSGPACK_PP_NODE_48)
+# define MSGPACK_PP_NODE_16(p) MSGPACK_PP_IIF(p(16), MSGPACK_PP_NODE_8, MSGPACK_PP_NODE_24)
+# define MSGPACK_PP_NODE_8(p) MSGPACK_PP_IIF(p(8), MSGPACK_PP_NODE_4, MSGPACK_PP_NODE_12)
+# define MSGPACK_PP_NODE_4(p) MSGPACK_PP_IIF(p(4), MSGPACK_PP_NODE_2, MSGPACK_PP_NODE_6)
+# define MSGPACK_PP_NODE_2(p) MSGPACK_PP_IIF(p(2), MSGPACK_PP_NODE_1, MSGPACK_PP_NODE_3)
+# define MSGPACK_PP_NODE_1(p) MSGPACK_PP_IIF(p(1), 1, 2)
+# define MSGPACK_PP_NODE_3(p) MSGPACK_PP_IIF(p(3), 3, 4)
+# define MSGPACK_PP_NODE_6(p) MSGPACK_PP_IIF(p(6), MSGPACK_PP_NODE_5, MSGPACK_PP_NODE_7)
+# define MSGPACK_PP_NODE_5(p) MSGPACK_PP_IIF(p(5), 5, 6)
+# define MSGPACK_PP_NODE_7(p) MSGPACK_PP_IIF(p(7), 7, 8)
+# define MSGPACK_PP_NODE_12(p) MSGPACK_PP_IIF(p(12), MSGPACK_PP_NODE_10, MSGPACK_PP_NODE_14)
+# define MSGPACK_PP_NODE_10(p) MSGPACK_PP_IIF(p(10), MSGPACK_PP_NODE_9, MSGPACK_PP_NODE_11)
+# define MSGPACK_PP_NODE_9(p) MSGPACK_PP_IIF(p(9), 9, 10)
+# define MSGPACK_PP_NODE_11(p) MSGPACK_PP_IIF(p(11), 11, 12)
+# define MSGPACK_PP_NODE_14(p) MSGPACK_PP_IIF(p(14), MSGPACK_PP_NODE_13, MSGPACK_PP_NODE_15)
+# define MSGPACK_PP_NODE_13(p) MSGPACK_PP_IIF(p(13), 13, 14)
+# define MSGPACK_PP_NODE_15(p) MSGPACK_PP_IIF(p(15), 15, 16)
+# define MSGPACK_PP_NODE_24(p) MSGPACK_PP_IIF(p(24), MSGPACK_PP_NODE_20, MSGPACK_PP_NODE_28)
+# define MSGPACK_PP_NODE_20(p) MSGPACK_PP_IIF(p(20), MSGPACK_PP_NODE_18, MSGPACK_PP_NODE_22)
+# define MSGPACK_PP_NODE_18(p) MSGPACK_PP_IIF(p(18), MSGPACK_PP_NODE_17, MSGPACK_PP_NODE_19)
+# define MSGPACK_PP_NODE_17(p) MSGPACK_PP_IIF(p(17), 17, 18)
+# define MSGPACK_PP_NODE_19(p) MSGPACK_PP_IIF(p(19), 19, 20)
+# define MSGPACK_PP_NODE_22(p) MSGPACK_PP_IIF(p(22), MSGPACK_PP_NODE_21, MSGPACK_PP_NODE_23)
+# define MSGPACK_PP_NODE_21(p) MSGPACK_PP_IIF(p(21), 21, 22)
+# define MSGPACK_PP_NODE_23(p) MSGPACK_PP_IIF(p(23), 23, 24)
+# define MSGPACK_PP_NODE_28(p) MSGPACK_PP_IIF(p(28), MSGPACK_PP_NODE_26, MSGPACK_PP_NODE_30)
+# define MSGPACK_PP_NODE_26(p) MSGPACK_PP_IIF(p(26), MSGPACK_PP_NODE_25, MSGPACK_PP_NODE_27)
+# define MSGPACK_PP_NODE_25(p) MSGPACK_PP_IIF(p(25), 25, 26)
+# define MSGPACK_PP_NODE_27(p) MSGPACK_PP_IIF(p(27), 27, 28)
+# define MSGPACK_PP_NODE_30(p) MSGPACK_PP_IIF(p(30), MSGPACK_PP_NODE_29, MSGPACK_PP_NODE_31)
+# define MSGPACK_PP_NODE_29(p) MSGPACK_PP_IIF(p(29), 29, 30)
+# define MSGPACK_PP_NODE_31(p) MSGPACK_PP_IIF(p(31), 31, 32)
+# define MSGPACK_PP_NODE_48(p) MSGPACK_PP_IIF(p(48), MSGPACK_PP_NODE_40, MSGPACK_PP_NODE_56)
+# define MSGPACK_PP_NODE_40(p) MSGPACK_PP_IIF(p(40), MSGPACK_PP_NODE_36, MSGPACK_PP_NODE_44)
+# define MSGPACK_PP_NODE_36(p) MSGPACK_PP_IIF(p(36), MSGPACK_PP_NODE_34, MSGPACK_PP_NODE_38)
+# define MSGPACK_PP_NODE_34(p) MSGPACK_PP_IIF(p(34), MSGPACK_PP_NODE_33, MSGPACK_PP_NODE_35)
+# define MSGPACK_PP_NODE_33(p) MSGPACK_PP_IIF(p(33), 33, 34)
+# define MSGPACK_PP_NODE_35(p) MSGPACK_PP_IIF(p(35), 35, 36)
+# define MSGPACK_PP_NODE_38(p) MSGPACK_PP_IIF(p(38), MSGPACK_PP_NODE_37, MSGPACK_PP_NODE_39)
+# define MSGPACK_PP_NODE_37(p) MSGPACK_PP_IIF(p(37), 37, 38)
+# define MSGPACK_PP_NODE_39(p) MSGPACK_PP_IIF(p(39), 39, 40)
+# define MSGPACK_PP_NODE_44(p) MSGPACK_PP_IIF(p(44), MSGPACK_PP_NODE_42, MSGPACK_PP_NODE_46)
+# define MSGPACK_PP_NODE_42(p) MSGPACK_PP_IIF(p(42), MSGPACK_PP_NODE_41, MSGPACK_PP_NODE_43)
+# define MSGPACK_PP_NODE_41(p) MSGPACK_PP_IIF(p(41), 41, 42)
+# define MSGPACK_PP_NODE_43(p) MSGPACK_PP_IIF(p(43), 43, 44)
+# define MSGPACK_PP_NODE_46(p) MSGPACK_PP_IIF(p(46), MSGPACK_PP_NODE_45, MSGPACK_PP_NODE_47)
+# define MSGPACK_PP_NODE_45(p) MSGPACK_PP_IIF(p(45), 45, 46)
+# define MSGPACK_PP_NODE_47(p) MSGPACK_PP_IIF(p(47), 47, 48)
+# define MSGPACK_PP_NODE_56(p) MSGPACK_PP_IIF(p(56), MSGPACK_PP_NODE_52, MSGPACK_PP_NODE_60)
+# define MSGPACK_PP_NODE_52(p) MSGPACK_PP_IIF(p(52), MSGPACK_PP_NODE_50, MSGPACK_PP_NODE_54)
+# define MSGPACK_PP_NODE_50(p) MSGPACK_PP_IIF(p(50), MSGPACK_PP_NODE_49, MSGPACK_PP_NODE_51)
+# define MSGPACK_PP_NODE_49(p) MSGPACK_PP_IIF(p(49), 49, 50)
+# define MSGPACK_PP_NODE_51(p) MSGPACK_PP_IIF(p(51), 51, 52)
+# define MSGPACK_PP_NODE_54(p) MSGPACK_PP_IIF(p(54), MSGPACK_PP_NODE_53, MSGPACK_PP_NODE_55)
+# define MSGPACK_PP_NODE_53(p) MSGPACK_PP_IIF(p(53), 53, 54)
+# define MSGPACK_PP_NODE_55(p) MSGPACK_PP_IIF(p(55), 55, 56)
+# define MSGPACK_PP_NODE_60(p) MSGPACK_PP_IIF(p(60), MSGPACK_PP_NODE_58, MSGPACK_PP_NODE_62)
+# define MSGPACK_PP_NODE_58(p) MSGPACK_PP_IIF(p(58), MSGPACK_PP_NODE_57, MSGPACK_PP_NODE_59)
+# define MSGPACK_PP_NODE_57(p) MSGPACK_PP_IIF(p(57), 57, 58)
+# define MSGPACK_PP_NODE_59(p) MSGPACK_PP_IIF(p(59), 59, 60)
+# define MSGPACK_PP_NODE_62(p) MSGPACK_PP_IIF(p(62), MSGPACK_PP_NODE_61, MSGPACK_PP_NODE_63)
+# define MSGPACK_PP_NODE_61(p) MSGPACK_PP_IIF(p(61), 61, 62)
+# define MSGPACK_PP_NODE_63(p) MSGPACK_PP_IIF(p(63), 63, 64)
+# define MSGPACK_PP_NODE_96(p) MSGPACK_PP_IIF(p(96), MSGPACK_PP_NODE_80, MSGPACK_PP_NODE_112)
+# define MSGPACK_PP_NODE_80(p) MSGPACK_PP_IIF(p(80), MSGPACK_PP_NODE_72, MSGPACK_PP_NODE_88)
+# define MSGPACK_PP_NODE_72(p) MSGPACK_PP_IIF(p(72), MSGPACK_PP_NODE_68, MSGPACK_PP_NODE_76)
+# define MSGPACK_PP_NODE_68(p) MSGPACK_PP_IIF(p(68), MSGPACK_PP_NODE_66, MSGPACK_PP_NODE_70)
+# define MSGPACK_PP_NODE_66(p) MSGPACK_PP_IIF(p(66), MSGPACK_PP_NODE_65, MSGPACK_PP_NODE_67)
+# define MSGPACK_PP_NODE_65(p) MSGPACK_PP_IIF(p(65), 65, 66)
+# define MSGPACK_PP_NODE_67(p) MSGPACK_PP_IIF(p(67), 67, 68)
+# define MSGPACK_PP_NODE_70(p) MSGPACK_PP_IIF(p(70), MSGPACK_PP_NODE_69, MSGPACK_PP_NODE_71)
+# define MSGPACK_PP_NODE_69(p) MSGPACK_PP_IIF(p(69), 69, 70)
+# define MSGPACK_PP_NODE_71(p) MSGPACK_PP_IIF(p(71), 71, 72)
+# define MSGPACK_PP_NODE_76(p) MSGPACK_PP_IIF(p(76), MSGPACK_PP_NODE_74, MSGPACK_PP_NODE_78)
+# define MSGPACK_PP_NODE_74(p) MSGPACK_PP_IIF(p(74), MSGPACK_PP_NODE_73, MSGPACK_PP_NODE_75)
+# define MSGPACK_PP_NODE_73(p) MSGPACK_PP_IIF(p(73), 73, 74)
+# define MSGPACK_PP_NODE_75(p) MSGPACK_PP_IIF(p(75), 75, 76)
+# define MSGPACK_PP_NODE_78(p) MSGPACK_PP_IIF(p(78), MSGPACK_PP_NODE_77, MSGPACK_PP_NODE_79)
+# define MSGPACK_PP_NODE_77(p) MSGPACK_PP_IIF(p(77), 77, 78)
+# define MSGPACK_PP_NODE_79(p) MSGPACK_PP_IIF(p(79), 79, 80)
+# define MSGPACK_PP_NODE_88(p) MSGPACK_PP_IIF(p(88), MSGPACK_PP_NODE_84, MSGPACK_PP_NODE_92)
+# define MSGPACK_PP_NODE_84(p) MSGPACK_PP_IIF(p(84), MSGPACK_PP_NODE_82, MSGPACK_PP_NODE_86)
+# define MSGPACK_PP_NODE_82(p) MSGPACK_PP_IIF(p(82), MSGPACK_PP_NODE_81, MSGPACK_PP_NODE_83)
+# define MSGPACK_PP_NODE_81(p) MSGPACK_PP_IIF(p(81), 81, 82)
+# define MSGPACK_PP_NODE_83(p) MSGPACK_PP_IIF(p(83), 83, 84)
+# define MSGPACK_PP_NODE_86(p) MSGPACK_PP_IIF(p(86), MSGPACK_PP_NODE_85, MSGPACK_PP_NODE_87)
+# define MSGPACK_PP_NODE_85(p) MSGPACK_PP_IIF(p(85), 85, 86)
+# define MSGPACK_PP_NODE_87(p) MSGPACK_PP_IIF(p(87), 87, 88)
+# define MSGPACK_PP_NODE_92(p) MSGPACK_PP_IIF(p(92), MSGPACK_PP_NODE_90, MSGPACK_PP_NODE_94)
+# define MSGPACK_PP_NODE_90(p) MSGPACK_PP_IIF(p(90), MSGPACK_PP_NODE_89, MSGPACK_PP_NODE_91)
+# define MSGPACK_PP_NODE_89(p) MSGPACK_PP_IIF(p(89), 89, 90)
+# define MSGPACK_PP_NODE_91(p) MSGPACK_PP_IIF(p(91), 91, 92)
+# define MSGPACK_PP_NODE_94(p) MSGPACK_PP_IIF(p(94), MSGPACK_PP_NODE_93, MSGPACK_PP_NODE_95)
+# define MSGPACK_PP_NODE_93(p) MSGPACK_PP_IIF(p(93), 93, 94)
+# define MSGPACK_PP_NODE_95(p) MSGPACK_PP_IIF(p(95), 95, 96)
+# define MSGPACK_PP_NODE_112(p) MSGPACK_PP_IIF(p(112), MSGPACK_PP_NODE_104, MSGPACK_PP_NODE_120)
+# define MSGPACK_PP_NODE_104(p) MSGPACK_PP_IIF(p(104), MSGPACK_PP_NODE_100, MSGPACK_PP_NODE_108)
+# define MSGPACK_PP_NODE_100(p) MSGPACK_PP_IIF(p(100), MSGPACK_PP_NODE_98, MSGPACK_PP_NODE_102)
+# define MSGPACK_PP_NODE_98(p) MSGPACK_PP_IIF(p(98), MSGPACK_PP_NODE_97, MSGPACK_PP_NODE_99)
+# define MSGPACK_PP_NODE_97(p) MSGPACK_PP_IIF(p(97), 97, 98)
+# define MSGPACK_PP_NODE_99(p) MSGPACK_PP_IIF(p(99), 99, 100)
+# define MSGPACK_PP_NODE_102(p) MSGPACK_PP_IIF(p(102), MSGPACK_PP_NODE_101, MSGPACK_PP_NODE_103)
+# define MSGPACK_PP_NODE_101(p) MSGPACK_PP_IIF(p(101), 101, 102)
+# define MSGPACK_PP_NODE_103(p) MSGPACK_PP_IIF(p(103), 103, 104)
+# define MSGPACK_PP_NODE_108(p) MSGPACK_PP_IIF(p(108), MSGPACK_PP_NODE_106, MSGPACK_PP_NODE_110)
+# define MSGPACK_PP_NODE_106(p) MSGPACK_PP_IIF(p(106), MSGPACK_PP_NODE_105, MSGPACK_PP_NODE_107)
+# define MSGPACK_PP_NODE_105(p) MSGPACK_PP_IIF(p(105), 105, 106)
+# define MSGPACK_PP_NODE_107(p) MSGPACK_PP_IIF(p(107), 107, 108)
+# define MSGPACK_PP_NODE_110(p) MSGPACK_PP_IIF(p(110), MSGPACK_PP_NODE_109, MSGPACK_PP_NODE_111)
+# define MSGPACK_PP_NODE_109(p) MSGPACK_PP_IIF(p(109), 109, 110)
+# define MSGPACK_PP_NODE_111(p) MSGPACK_PP_IIF(p(111), 111, 112)
+# define MSGPACK_PP_NODE_120(p) MSGPACK_PP_IIF(p(120), MSGPACK_PP_NODE_116, MSGPACK_PP_NODE_124)
+# define MSGPACK_PP_NODE_116(p) MSGPACK_PP_IIF(p(116), MSGPACK_PP_NODE_114, MSGPACK_PP_NODE_118)
+# define MSGPACK_PP_NODE_114(p) MSGPACK_PP_IIF(p(114), MSGPACK_PP_NODE_113, MSGPACK_PP_NODE_115)
+# define MSGPACK_PP_NODE_113(p) MSGPACK_PP_IIF(p(113), 113, 114)
+# define MSGPACK_PP_NODE_115(p) MSGPACK_PP_IIF(p(115), 115, 116)
+# define MSGPACK_PP_NODE_118(p) MSGPACK_PP_IIF(p(118), MSGPACK_PP_NODE_117, MSGPACK_PP_NODE_119)
+# define MSGPACK_PP_NODE_117(p) MSGPACK_PP_IIF(p(117), 117, 118)
+# define MSGPACK_PP_NODE_119(p) MSGPACK_PP_IIF(p(119), 119, 120)
+# define MSGPACK_PP_NODE_124(p) MSGPACK_PP_IIF(p(124), MSGPACK_PP_NODE_122, MSGPACK_PP_NODE_126)
+# define MSGPACK_PP_NODE_122(p) MSGPACK_PP_IIF(p(122), MSGPACK_PP_NODE_121, MSGPACK_PP_NODE_123)
+# define MSGPACK_PP_NODE_121(p) MSGPACK_PP_IIF(p(121), 121, 122)
+# define MSGPACK_PP_NODE_123(p) MSGPACK_PP_IIF(p(123), 123, 124)
+# define MSGPACK_PP_NODE_126(p) MSGPACK_PP_IIF(p(126), MSGPACK_PP_NODE_125, MSGPACK_PP_NODE_127)
+# define MSGPACK_PP_NODE_125(p) MSGPACK_PP_IIF(p(125), 125, 126)
+# define MSGPACK_PP_NODE_127(p) MSGPACK_PP_IIF(p(127), 127, 128)
+# define MSGPACK_PP_NODE_192(p) MSGPACK_PP_IIF(p(192), MSGPACK_PP_NODE_160, MSGPACK_PP_NODE_224)
+# define MSGPACK_PP_NODE_160(p) MSGPACK_PP_IIF(p(160), MSGPACK_PP_NODE_144, MSGPACK_PP_NODE_176)
+# define MSGPACK_PP_NODE_144(p) MSGPACK_PP_IIF(p(144), MSGPACK_PP_NODE_136, MSGPACK_PP_NODE_152)
+# define MSGPACK_PP_NODE_136(p) MSGPACK_PP_IIF(p(136), MSGPACK_PP_NODE_132, MSGPACK_PP_NODE_140)
+# define MSGPACK_PP_NODE_132(p) MSGPACK_PP_IIF(p(132), MSGPACK_PP_NODE_130, MSGPACK_PP_NODE_134)
+# define MSGPACK_PP_NODE_130(p) MSGPACK_PP_IIF(p(130), MSGPACK_PP_NODE_129, MSGPACK_PP_NODE_131)
+# define MSGPACK_PP_NODE_129(p) MSGPACK_PP_IIF(p(129), 129, 130)
+# define MSGPACK_PP_NODE_131(p) MSGPACK_PP_IIF(p(131), 131, 132)
+# define MSGPACK_PP_NODE_134(p) MSGPACK_PP_IIF(p(134), MSGPACK_PP_NODE_133, MSGPACK_PP_NODE_135)
+# define MSGPACK_PP_NODE_133(p) MSGPACK_PP_IIF(p(133), 133, 134)
+# define MSGPACK_PP_NODE_135(p) MSGPACK_PP_IIF(p(135), 135, 136)
+# define MSGPACK_PP_NODE_140(p) MSGPACK_PP_IIF(p(140), MSGPACK_PP_NODE_138, MSGPACK_PP_NODE_142)
+# define MSGPACK_PP_NODE_138(p) MSGPACK_PP_IIF(p(138), MSGPACK_PP_NODE_137, MSGPACK_PP_NODE_139)
+# define MSGPACK_PP_NODE_137(p) MSGPACK_PP_IIF(p(137), 137, 138)
+# define MSGPACK_PP_NODE_139(p) MSGPACK_PP_IIF(p(139), 139, 140)
+# define MSGPACK_PP_NODE_142(p) MSGPACK_PP_IIF(p(142), MSGPACK_PP_NODE_141, MSGPACK_PP_NODE_143)
+# define MSGPACK_PP_NODE_141(p) MSGPACK_PP_IIF(p(141), 141, 142)
+# define MSGPACK_PP_NODE_143(p) MSGPACK_PP_IIF(p(143), 143, 144)
+# define MSGPACK_PP_NODE_152(p) MSGPACK_PP_IIF(p(152), MSGPACK_PP_NODE_148, MSGPACK_PP_NODE_156)
+# define MSGPACK_PP_NODE_148(p) MSGPACK_PP_IIF(p(148), MSGPACK_PP_NODE_146, MSGPACK_PP_NODE_150)
+# define MSGPACK_PP_NODE_146(p) MSGPACK_PP_IIF(p(146), MSGPACK_PP_NODE_145, MSGPACK_PP_NODE_147)
+# define MSGPACK_PP_NODE_145(p) MSGPACK_PP_IIF(p(145), 145, 146)
+# define MSGPACK_PP_NODE_147(p) MSGPACK_PP_IIF(p(147), 147, 148)
+# define MSGPACK_PP_NODE_150(p) MSGPACK_PP_IIF(p(150), MSGPACK_PP_NODE_149, MSGPACK_PP_NODE_151)
+# define MSGPACK_PP_NODE_149(p) MSGPACK_PP_IIF(p(149), 149, 150)
+# define MSGPACK_PP_NODE_151(p) MSGPACK_PP_IIF(p(151), 151, 152)
+# define MSGPACK_PP_NODE_156(p) MSGPACK_PP_IIF(p(156), MSGPACK_PP_NODE_154, MSGPACK_PP_NODE_158)
+# define MSGPACK_PP_NODE_154(p) MSGPACK_PP_IIF(p(154), MSGPACK_PP_NODE_153, MSGPACK_PP_NODE_155)
+# define MSGPACK_PP_NODE_153(p) MSGPACK_PP_IIF(p(153), 153, 154)
+# define MSGPACK_PP_NODE_155(p) MSGPACK_PP_IIF(p(155), 155, 156)
+# define MSGPACK_PP_NODE_158(p) MSGPACK_PP_IIF(p(158), MSGPACK_PP_NODE_157, MSGPACK_PP_NODE_159)
+# define MSGPACK_PP_NODE_157(p) MSGPACK_PP_IIF(p(157), 157, 158)
+# define MSGPACK_PP_NODE_159(p) MSGPACK_PP_IIF(p(159), 159, 160)
+# define MSGPACK_PP_NODE_176(p) MSGPACK_PP_IIF(p(176), MSGPACK_PP_NODE_168, MSGPACK_PP_NODE_184)
+# define MSGPACK_PP_NODE_168(p) MSGPACK_PP_IIF(p(168), MSGPACK_PP_NODE_164, MSGPACK_PP_NODE_172)
+# define MSGPACK_PP_NODE_164(p) MSGPACK_PP_IIF(p(164), MSGPACK_PP_NODE_162, MSGPACK_PP_NODE_166)
+# define MSGPACK_PP_NODE_162(p) MSGPACK_PP_IIF(p(162), MSGPACK_PP_NODE_161, MSGPACK_PP_NODE_163)
+# define MSGPACK_PP_NODE_161(p) MSGPACK_PP_IIF(p(161), 161, 162)
+# define MSGPACK_PP_NODE_163(p) MSGPACK_PP_IIF(p(163), 163, 164)
+# define MSGPACK_PP_NODE_166(p) MSGPACK_PP_IIF(p(166), MSGPACK_PP_NODE_165, MSGPACK_PP_NODE_167)
+# define MSGPACK_PP_NODE_165(p) MSGPACK_PP_IIF(p(165), 165, 166)
+# define MSGPACK_PP_NODE_167(p) MSGPACK_PP_IIF(p(167), 167, 168)
+# define MSGPACK_PP_NODE_172(p) MSGPACK_PP_IIF(p(172), MSGPACK_PP_NODE_170, MSGPACK_PP_NODE_174)
+# define MSGPACK_PP_NODE_170(p) MSGPACK_PP_IIF(p(170), MSGPACK_PP_NODE_169, MSGPACK_PP_NODE_171)
+# define MSGPACK_PP_NODE_169(p) MSGPACK_PP_IIF(p(169), 169, 170)
+# define MSGPACK_PP_NODE_171(p) MSGPACK_PP_IIF(p(171), 171, 172)
+# define MSGPACK_PP_NODE_174(p) MSGPACK_PP_IIF(p(174), MSGPACK_PP_NODE_173, MSGPACK_PP_NODE_175)
+# define MSGPACK_PP_NODE_173(p) MSGPACK_PP_IIF(p(173), 173, 174)
+# define MSGPACK_PP_NODE_175(p) MSGPACK_PP_IIF(p(175), 175, 176)
+# define MSGPACK_PP_NODE_184(p) MSGPACK_PP_IIF(p(184), MSGPACK_PP_NODE_180, MSGPACK_PP_NODE_188)
+# define MSGPACK_PP_NODE_180(p) MSGPACK_PP_IIF(p(180), MSGPACK_PP_NODE_178, MSGPACK_PP_NODE_182)
+# define MSGPACK_PP_NODE_178(p) MSGPACK_PP_IIF(p(178), MSGPACK_PP_NODE_177, MSGPACK_PP_NODE_179)
+# define MSGPACK_PP_NODE_177(p) MSGPACK_PP_IIF(p(177), 177, 178)
+# define MSGPACK_PP_NODE_179(p) MSGPACK_PP_IIF(p(179), 179, 180)
+# define MSGPACK_PP_NODE_182(p) MSGPACK_PP_IIF(p(182), MSGPACK_PP_NODE_181, MSGPACK_PP_NODE_183)
+# define MSGPACK_PP_NODE_181(p) MSGPACK_PP_IIF(p(181), 181, 182)
+# define MSGPACK_PP_NODE_183(p) MSGPACK_PP_IIF(p(183), 183, 184)
+# define MSGPACK_PP_NODE_188(p) MSGPACK_PP_IIF(p(188), MSGPACK_PP_NODE_186, MSGPACK_PP_NODE_190)
+# define MSGPACK_PP_NODE_186(p) MSGPACK_PP_IIF(p(186), MSGPACK_PP_NODE_185, MSGPACK_PP_NODE_187)
+# define MSGPACK_PP_NODE_185(p) MSGPACK_PP_IIF(p(185), 185, 186)
+# define MSGPACK_PP_NODE_187(p) MSGPACK_PP_IIF(p(187), 187, 188)
+# define MSGPACK_PP_NODE_190(p) MSGPACK_PP_IIF(p(190), MSGPACK_PP_NODE_189, MSGPACK_PP_NODE_191)
+# define MSGPACK_PP_NODE_189(p) MSGPACK_PP_IIF(p(189), 189, 190)
+# define MSGPACK_PP_NODE_191(p) MSGPACK_PP_IIF(p(191), 191, 192)
+# define MSGPACK_PP_NODE_224(p) MSGPACK_PP_IIF(p(224), MSGPACK_PP_NODE_208, MSGPACK_PP_NODE_240)
+# define MSGPACK_PP_NODE_208(p) MSGPACK_PP_IIF(p(208), MSGPACK_PP_NODE_200, MSGPACK_PP_NODE_216)
+# define MSGPACK_PP_NODE_200(p) MSGPACK_PP_IIF(p(200), MSGPACK_PP_NODE_196, MSGPACK_PP_NODE_204)
+# define MSGPACK_PP_NODE_196(p) MSGPACK_PP_IIF(p(196), MSGPACK_PP_NODE_194, MSGPACK_PP_NODE_198)
+# define MSGPACK_PP_NODE_194(p) MSGPACK_PP_IIF(p(194), MSGPACK_PP_NODE_193, MSGPACK_PP_NODE_195)
+# define MSGPACK_PP_NODE_193(p) MSGPACK_PP_IIF(p(193), 193, 194)
+# define MSGPACK_PP_NODE_195(p) MSGPACK_PP_IIF(p(195), 195, 196)
+# define MSGPACK_PP_NODE_198(p) MSGPACK_PP_IIF(p(198), MSGPACK_PP_NODE_197, MSGPACK_PP_NODE_199)
+# define MSGPACK_PP_NODE_197(p) MSGPACK_PP_IIF(p(197), 197, 198)
+# define MSGPACK_PP_NODE_199(p) MSGPACK_PP_IIF(p(199), 199, 200)
+# define MSGPACK_PP_NODE_204(p) MSGPACK_PP_IIF(p(204), MSGPACK_PP_NODE_202, MSGPACK_PP_NODE_206)
+# define MSGPACK_PP_NODE_202(p) MSGPACK_PP_IIF(p(202), MSGPACK_PP_NODE_201, MSGPACK_PP_NODE_203)
+# define MSGPACK_PP_NODE_201(p) MSGPACK_PP_IIF(p(201), 201, 202)
+# define MSGPACK_PP_NODE_203(p) MSGPACK_PP_IIF(p(203), 203, 204)
+# define MSGPACK_PP_NODE_206(p) MSGPACK_PP_IIF(p(206), MSGPACK_PP_NODE_205, MSGPACK_PP_NODE_207)
+# define MSGPACK_PP_NODE_205(p) MSGPACK_PP_IIF(p(205), 205, 206)
+# define MSGPACK_PP_NODE_207(p) MSGPACK_PP_IIF(p(207), 207, 208)
+# define MSGPACK_PP_NODE_216(p) MSGPACK_PP_IIF(p(216), MSGPACK_PP_NODE_212, MSGPACK_PP_NODE_220)
+# define MSGPACK_PP_NODE_212(p) MSGPACK_PP_IIF(p(212), MSGPACK_PP_NODE_210, MSGPACK_PP_NODE_214)
+# define MSGPACK_PP_NODE_210(p) MSGPACK_PP_IIF(p(210), MSGPACK_PP_NODE_209, MSGPACK_PP_NODE_211)
+# define MSGPACK_PP_NODE_209(p) MSGPACK_PP_IIF(p(209), 209, 210)
+# define MSGPACK_PP_NODE_211(p) MSGPACK_PP_IIF(p(211), 211, 212)
+# define MSGPACK_PP_NODE_214(p) MSGPACK_PP_IIF(p(214), MSGPACK_PP_NODE_213, MSGPACK_PP_NODE_215)
+# define MSGPACK_PP_NODE_213(p) MSGPACK_PP_IIF(p(213), 213, 214)
+# define MSGPACK_PP_NODE_215(p) MSGPACK_PP_IIF(p(215), 215, 216)
+# define MSGPACK_PP_NODE_220(p) MSGPACK_PP_IIF(p(220), MSGPACK_PP_NODE_218, MSGPACK_PP_NODE_222)
+# define MSGPACK_PP_NODE_218(p) MSGPACK_PP_IIF(p(218), MSGPACK_PP_NODE_217, MSGPACK_PP_NODE_219)
+# define MSGPACK_PP_NODE_217(p) MSGPACK_PP_IIF(p(217), 217, 218)
+# define MSGPACK_PP_NODE_219(p) MSGPACK_PP_IIF(p(219), 219, 220)
+# define MSGPACK_PP_NODE_222(p) MSGPACK_PP_IIF(p(222), MSGPACK_PP_NODE_221, MSGPACK_PP_NODE_223)
+# define MSGPACK_PP_NODE_221(p) MSGPACK_PP_IIF(p(221), 221, 222)
+# define MSGPACK_PP_NODE_223(p) MSGPACK_PP_IIF(p(223), 223, 224)
+# define MSGPACK_PP_NODE_240(p) MSGPACK_PP_IIF(p(240), MSGPACK_PP_NODE_232, MSGPACK_PP_NODE_248)
+# define MSGPACK_PP_NODE_232(p) MSGPACK_PP_IIF(p(232), MSGPACK_PP_NODE_228, MSGPACK_PP_NODE_236)
+# define MSGPACK_PP_NODE_228(p) MSGPACK_PP_IIF(p(228), MSGPACK_PP_NODE_226, MSGPACK_PP_NODE_230)
+# define MSGPACK_PP_NODE_226(p) MSGPACK_PP_IIF(p(226), MSGPACK_PP_NODE_225, MSGPACK_PP_NODE_227)
+# define MSGPACK_PP_NODE_225(p) MSGPACK_PP_IIF(p(225), 225, 226)
+# define MSGPACK_PP_NODE_227(p) MSGPACK_PP_IIF(p(227), 227, 228)
+# define MSGPACK_PP_NODE_230(p) MSGPACK_PP_IIF(p(230), MSGPACK_PP_NODE_229, MSGPACK_PP_NODE_231)
+# define MSGPACK_PP_NODE_229(p) MSGPACK_PP_IIF(p(229), 229, 230)
+# define MSGPACK_PP_NODE_231(p) MSGPACK_PP_IIF(p(231), 231, 232)
+# define MSGPACK_PP_NODE_236(p) MSGPACK_PP_IIF(p(236), MSGPACK_PP_NODE_234, MSGPACK_PP_NODE_238)
+# define MSGPACK_PP_NODE_234(p) MSGPACK_PP_IIF(p(234), MSGPACK_PP_NODE_233, MSGPACK_PP_NODE_235)
+# define MSGPACK_PP_NODE_233(p) MSGPACK_PP_IIF(p(233), 233, 234)
+# define MSGPACK_PP_NODE_235(p) MSGPACK_PP_IIF(p(235), 235, 236)
+# define MSGPACK_PP_NODE_238(p) MSGPACK_PP_IIF(p(238), MSGPACK_PP_NODE_237, MSGPACK_PP_NODE_239)
+# define MSGPACK_PP_NODE_237(p) MSGPACK_PP_IIF(p(237), 237, 238)
+# define MSGPACK_PP_NODE_239(p) MSGPACK_PP_IIF(p(239), 239, 240)
+# define MSGPACK_PP_NODE_248(p) MSGPACK_PP_IIF(p(248), MSGPACK_PP_NODE_244, MSGPACK_PP_NODE_252)
+# define MSGPACK_PP_NODE_244(p) MSGPACK_PP_IIF(p(244), MSGPACK_PP_NODE_242, MSGPACK_PP_NODE_246)
+# define MSGPACK_PP_NODE_242(p) MSGPACK_PP_IIF(p(242), MSGPACK_PP_NODE_241, MSGPACK_PP_NODE_243)
+# define MSGPACK_PP_NODE_241(p) MSGPACK_PP_IIF(p(241), 241, 242)
+# define MSGPACK_PP_NODE_243(p) MSGPACK_PP_IIF(p(243), 243, 244)
+# define MSGPACK_PP_NODE_246(p) MSGPACK_PP_IIF(p(246), MSGPACK_PP_NODE_245, MSGPACK_PP_NODE_247)
+# define MSGPACK_PP_NODE_245(p) MSGPACK_PP_IIF(p(245), 245, 246)
+# define MSGPACK_PP_NODE_247(p) MSGPACK_PP_IIF(p(247), 247, 248)
+# define MSGPACK_PP_NODE_252(p) MSGPACK_PP_IIF(p(252), MSGPACK_PP_NODE_250, MSGPACK_PP_NODE_254)
+# define MSGPACK_PP_NODE_250(p) MSGPACK_PP_IIF(p(250), MSGPACK_PP_NODE_249, MSGPACK_PP_NODE_251)
+# define MSGPACK_PP_NODE_249(p) MSGPACK_PP_IIF(p(249), 249, 250)
+# define MSGPACK_PP_NODE_251(p) MSGPACK_PP_IIF(p(251), 251, 252)
+# define MSGPACK_PP_NODE_254(p) MSGPACK_PP_IIF(p(254), MSGPACK_PP_NODE_253, MSGPACK_PP_NODE_255)
+# define MSGPACK_PP_NODE_253(p) MSGPACK_PP_IIF(p(253), 253, 254)
+# define MSGPACK_PP_NODE_255(p) MSGPACK_PP_IIF(p(255), 255, 256)
+#
+# endif
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/detail/check.hpp b/third_party/msgpack/include/msgpack/preprocessor/detail/check.hpp
new file mode 100644
index 0000000000..b1bb3aecda
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/detail/check.hpp
@@ -0,0 +1,48 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_DETAIL_CHECK_HPP
+# define MSGPACK_PREPROCESSOR_DETAIL_CHECK_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# /* MSGPACK_PP_CHECK */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_CHECK(x, type) MSGPACK_PP_CHECK_D(x, type)
+# else
+# define MSGPACK_PP_CHECK(x, type) MSGPACK_PP_CHECK_OO((x, type))
+# define MSGPACK_PP_CHECK_OO(par) MSGPACK_PP_CHECK_D ## par
+# endif
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MSVC() && ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_DMC()
+# define MSGPACK_PP_CHECK_D(x, type) MSGPACK_PP_CHECK_1(MSGPACK_PP_CAT(MSGPACK_PP_CHECK_RESULT_, type x))
+# define MSGPACK_PP_CHECK_1(chk) MSGPACK_PP_CHECK_2(chk)
+# define MSGPACK_PP_CHECK_2(res, _) res
+# elif MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MSVC()
+# define MSGPACK_PP_CHECK_D(x, type) MSGPACK_PP_CHECK_1(type x)
+# define MSGPACK_PP_CHECK_1(chk) MSGPACK_PP_CHECK_2(chk)
+# define MSGPACK_PP_CHECK_2(chk) MSGPACK_PP_CHECK_3((MSGPACK_PP_CHECK_RESULT_ ## chk))
+# define MSGPACK_PP_CHECK_3(im) MSGPACK_PP_CHECK_5(MSGPACK_PP_CHECK_4 im)
+# define MSGPACK_PP_CHECK_4(res, _) res
+# define MSGPACK_PP_CHECK_5(res) res
+# else /* DMC */
+# define MSGPACK_PP_CHECK_D(x, type) MSGPACK_PP_CHECK_OO((type x))
+# define MSGPACK_PP_CHECK_OO(par) MSGPACK_PP_CHECK_0 ## par
+# define MSGPACK_PP_CHECK_0(chk) MSGPACK_PP_CHECK_1(MSGPACK_PP_CAT(MSGPACK_PP_CHECK_RESULT_, chk))
+# define MSGPACK_PP_CHECK_1(chk) MSGPACK_PP_CHECK_2(chk)
+# define MSGPACK_PP_CHECK_2(res, _) res
+# endif
+#
+# define MSGPACK_PP_CHECK_RESULT_1 1, MSGPACK_PP_NIL
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/detail/dmc/auto_rec.hpp b/third_party/msgpack/include/msgpack/preprocessor/detail/dmc/auto_rec.hpp
new file mode 100644
index 0000000000..7600b3113d
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/detail/dmc/auto_rec.hpp
@@ -0,0 +1,286 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_DETAIL_AUTO_REC_HPP
+# define MSGPACK_PREPROCESSOR_DETAIL_AUTO_REC_HPP
+#
+# include <msgpack/preprocessor/control/iif.hpp>
+#
+# /* MSGPACK_PP_AUTO_REC */
+#
+# define MSGPACK_PP_AUTO_REC(pred, n) MSGPACK_PP_NODE_ENTRY_ ## n(pred)
+#
+# define MSGPACK_PP_NODE_ENTRY_256(p) MSGPACK_PP_NODE_128(p)(p)(p)(p)(p)(p)(p)(p)
+# define MSGPACK_PP_NODE_ENTRY_128(p) MSGPACK_PP_NODE_64(p)(p)(p)(p)(p)(p)(p)
+# define MSGPACK_PP_NODE_ENTRY_64(p) MSGPACK_PP_NODE_32(p)(p)(p)(p)(p)(p)
+# define MSGPACK_PP_NODE_ENTRY_32(p) MSGPACK_PP_NODE_16(p)(p)(p)(p)(p)
+# define MSGPACK_PP_NODE_ENTRY_16(p) MSGPACK_PP_NODE_8(p)(p)(p)(p)
+# define MSGPACK_PP_NODE_ENTRY_8(p) MSGPACK_PP_NODE_4(p)(p)(p)
+# define MSGPACK_PP_NODE_ENTRY_4(p) MSGPACK_PP_NODE_2(p)(p)
+# define MSGPACK_PP_NODE_ENTRY_2(p) MSGPACK_PP_NODE_1(p)
+#
+# define MSGPACK_PP_NODE_128(p) MSGPACK_PP_IIF(p##(128), MSGPACK_PP_NODE_64, MSGPACK_PP_NODE_192)
+# define MSGPACK_PP_NODE_64(p) MSGPACK_PP_IIF(p##(64), MSGPACK_PP_NODE_32, MSGPACK_PP_NODE_96)
+# define MSGPACK_PP_NODE_32(p) MSGPACK_PP_IIF(p##(32), MSGPACK_PP_NODE_16, MSGPACK_PP_NODE_48)
+# define MSGPACK_PP_NODE_16(p) MSGPACK_PP_IIF(p##(16), MSGPACK_PP_NODE_8, MSGPACK_PP_NODE_24)
+# define MSGPACK_PP_NODE_8(p) MSGPACK_PP_IIF(p##(8), MSGPACK_PP_NODE_4, MSGPACK_PP_NODE_12)
+# define MSGPACK_PP_NODE_4(p) MSGPACK_PP_IIF(p##(4), MSGPACK_PP_NODE_2, MSGPACK_PP_NODE_6)
+# define MSGPACK_PP_NODE_2(p) MSGPACK_PP_IIF(p##(2), MSGPACK_PP_NODE_1, MSGPACK_PP_NODE_3)
+# define MSGPACK_PP_NODE_1(p) MSGPACK_PP_IIF(p##(1), 1, 2)
+# define MSGPACK_PP_NODE_3(p) MSGPACK_PP_IIF(p##(3), 3, 4)
+# define MSGPACK_PP_NODE_6(p) MSGPACK_PP_IIF(p##(6), MSGPACK_PP_NODE_5, MSGPACK_PP_NODE_7)
+# define MSGPACK_PP_NODE_5(p) MSGPACK_PP_IIF(p##(5), 5, 6)
+# define MSGPACK_PP_NODE_7(p) MSGPACK_PP_IIF(p##(7), 7, 8)
+# define MSGPACK_PP_NODE_12(p) MSGPACK_PP_IIF(p##(12), MSGPACK_PP_NODE_10, MSGPACK_PP_NODE_14)
+# define MSGPACK_PP_NODE_10(p) MSGPACK_PP_IIF(p##(10), MSGPACK_PP_NODE_9, MSGPACK_PP_NODE_11)
+# define MSGPACK_PP_NODE_9(p) MSGPACK_PP_IIF(p##(9), 9, 10)
+# define MSGPACK_PP_NODE_11(p) MSGPACK_PP_IIF(p##(11), 11, 12)
+# define MSGPACK_PP_NODE_14(p) MSGPACK_PP_IIF(p##(14), MSGPACK_PP_NODE_13, MSGPACK_PP_NODE_15)
+# define MSGPACK_PP_NODE_13(p) MSGPACK_PP_IIF(p##(13), 13, 14)
+# define MSGPACK_PP_NODE_15(p) MSGPACK_PP_IIF(p##(15), 15, 16)
+# define MSGPACK_PP_NODE_24(p) MSGPACK_PP_IIF(p##(24), MSGPACK_PP_NODE_20, MSGPACK_PP_NODE_28)
+# define MSGPACK_PP_NODE_20(p) MSGPACK_PP_IIF(p##(20), MSGPACK_PP_NODE_18, MSGPACK_PP_NODE_22)
+# define MSGPACK_PP_NODE_18(p) MSGPACK_PP_IIF(p##(18), MSGPACK_PP_NODE_17, MSGPACK_PP_NODE_19)
+# define MSGPACK_PP_NODE_17(p) MSGPACK_PP_IIF(p##(17), 17, 18)
+# define MSGPACK_PP_NODE_19(p) MSGPACK_PP_IIF(p##(19), 19, 20)
+# define MSGPACK_PP_NODE_22(p) MSGPACK_PP_IIF(p##(22), MSGPACK_PP_NODE_21, MSGPACK_PP_NODE_23)
+# define MSGPACK_PP_NODE_21(p) MSGPACK_PP_IIF(p##(21), 21, 22)
+# define MSGPACK_PP_NODE_23(p) MSGPACK_PP_IIF(p##(23), 23, 24)
+# define MSGPACK_PP_NODE_28(p) MSGPACK_PP_IIF(p##(28), MSGPACK_PP_NODE_26, MSGPACK_PP_NODE_30)
+# define MSGPACK_PP_NODE_26(p) MSGPACK_PP_IIF(p##(26), MSGPACK_PP_NODE_25, MSGPACK_PP_NODE_27)
+# define MSGPACK_PP_NODE_25(p) MSGPACK_PP_IIF(p##(25), 25, 26)
+# define MSGPACK_PP_NODE_27(p) MSGPACK_PP_IIF(p##(27), 27, 28)
+# define MSGPACK_PP_NODE_30(p) MSGPACK_PP_IIF(p##(30), MSGPACK_PP_NODE_29, MSGPACK_PP_NODE_31)
+# define MSGPACK_PP_NODE_29(p) MSGPACK_PP_IIF(p##(29), 29, 30)
+# define MSGPACK_PP_NODE_31(p) MSGPACK_PP_IIF(p##(31), 31, 32)
+# define MSGPACK_PP_NODE_48(p) MSGPACK_PP_IIF(p##(48), MSGPACK_PP_NODE_40, MSGPACK_PP_NODE_56)
+# define MSGPACK_PP_NODE_40(p) MSGPACK_PP_IIF(p##(40), MSGPACK_PP_NODE_36, MSGPACK_PP_NODE_44)
+# define MSGPACK_PP_NODE_36(p) MSGPACK_PP_IIF(p##(36), MSGPACK_PP_NODE_34, MSGPACK_PP_NODE_38)
+# define MSGPACK_PP_NODE_34(p) MSGPACK_PP_IIF(p##(34), MSGPACK_PP_NODE_33, MSGPACK_PP_NODE_35)
+# define MSGPACK_PP_NODE_33(p) MSGPACK_PP_IIF(p##(33), 33, 34)
+# define MSGPACK_PP_NODE_35(p) MSGPACK_PP_IIF(p##(35), 35, 36)
+# define MSGPACK_PP_NODE_38(p) MSGPACK_PP_IIF(p##(38), MSGPACK_PP_NODE_37, MSGPACK_PP_NODE_39)
+# define MSGPACK_PP_NODE_37(p) MSGPACK_PP_IIF(p##(37), 37, 38)
+# define MSGPACK_PP_NODE_39(p) MSGPACK_PP_IIF(p##(39), 39, 40)
+# define MSGPACK_PP_NODE_44(p) MSGPACK_PP_IIF(p##(44), MSGPACK_PP_NODE_42, MSGPACK_PP_NODE_46)
+# define MSGPACK_PP_NODE_42(p) MSGPACK_PP_IIF(p##(42), MSGPACK_PP_NODE_41, MSGPACK_PP_NODE_43)
+# define MSGPACK_PP_NODE_41(p) MSGPACK_PP_IIF(p##(41), 41, 42)
+# define MSGPACK_PP_NODE_43(p) MSGPACK_PP_IIF(p##(43), 43, 44)
+# define MSGPACK_PP_NODE_46(p) MSGPACK_PP_IIF(p##(46), MSGPACK_PP_NODE_45, MSGPACK_PP_NODE_47)
+# define MSGPACK_PP_NODE_45(p) MSGPACK_PP_IIF(p##(45), 45, 46)
+# define MSGPACK_PP_NODE_47(p) MSGPACK_PP_IIF(p##(47), 47, 48)
+# define MSGPACK_PP_NODE_56(p) MSGPACK_PP_IIF(p##(56), MSGPACK_PP_NODE_52, MSGPACK_PP_NODE_60)
+# define MSGPACK_PP_NODE_52(p) MSGPACK_PP_IIF(p##(52), MSGPACK_PP_NODE_50, MSGPACK_PP_NODE_54)
+# define MSGPACK_PP_NODE_50(p) MSGPACK_PP_IIF(p##(50), MSGPACK_PP_NODE_49, MSGPACK_PP_NODE_51)
+# define MSGPACK_PP_NODE_49(p) MSGPACK_PP_IIF(p##(49), 49, 50)
+# define MSGPACK_PP_NODE_51(p) MSGPACK_PP_IIF(p##(51), 51, 52)
+# define MSGPACK_PP_NODE_54(p) MSGPACK_PP_IIF(p##(54), MSGPACK_PP_NODE_53, MSGPACK_PP_NODE_55)
+# define MSGPACK_PP_NODE_53(p) MSGPACK_PP_IIF(p##(53), 53, 54)
+# define MSGPACK_PP_NODE_55(p) MSGPACK_PP_IIF(p##(55), 55, 56)
+# define MSGPACK_PP_NODE_60(p) MSGPACK_PP_IIF(p##(60), MSGPACK_PP_NODE_58, MSGPACK_PP_NODE_62)
+# define MSGPACK_PP_NODE_58(p) MSGPACK_PP_IIF(p##(58), MSGPACK_PP_NODE_57, MSGPACK_PP_NODE_59)
+# define MSGPACK_PP_NODE_57(p) MSGPACK_PP_IIF(p##(57), 57, 58)
+# define MSGPACK_PP_NODE_59(p) MSGPACK_PP_IIF(p##(59), 59, 60)
+# define MSGPACK_PP_NODE_62(p) MSGPACK_PP_IIF(p##(62), MSGPACK_PP_NODE_61, MSGPACK_PP_NODE_63)
+# define MSGPACK_PP_NODE_61(p) MSGPACK_PP_IIF(p##(61), 61, 62)
+# define MSGPACK_PP_NODE_63(p) MSGPACK_PP_IIF(p##(63), 63, 64)
+# define MSGPACK_PP_NODE_96(p) MSGPACK_PP_IIF(p##(96), MSGPACK_PP_NODE_80, MSGPACK_PP_NODE_112)
+# define MSGPACK_PP_NODE_80(p) MSGPACK_PP_IIF(p##(80), MSGPACK_PP_NODE_72, MSGPACK_PP_NODE_88)
+# define MSGPACK_PP_NODE_72(p) MSGPACK_PP_IIF(p##(72), MSGPACK_PP_NODE_68, MSGPACK_PP_NODE_76)
+# define MSGPACK_PP_NODE_68(p) MSGPACK_PP_IIF(p##(68), MSGPACK_PP_NODE_66, MSGPACK_PP_NODE_70)
+# define MSGPACK_PP_NODE_66(p) MSGPACK_PP_IIF(p##(66), MSGPACK_PP_NODE_65, MSGPACK_PP_NODE_67)
+# define MSGPACK_PP_NODE_65(p) MSGPACK_PP_IIF(p##(65), 65, 66)
+# define MSGPACK_PP_NODE_67(p) MSGPACK_PP_IIF(p##(67), 67, 68)
+# define MSGPACK_PP_NODE_70(p) MSGPACK_PP_IIF(p##(70), MSGPACK_PP_NODE_69, MSGPACK_PP_NODE_71)
+# define MSGPACK_PP_NODE_69(p) MSGPACK_PP_IIF(p##(69), 69, 70)
+# define MSGPACK_PP_NODE_71(p) MSGPACK_PP_IIF(p##(71), 71, 72)
+# define MSGPACK_PP_NODE_76(p) MSGPACK_PP_IIF(p##(76), MSGPACK_PP_NODE_74, MSGPACK_PP_NODE_78)
+# define MSGPACK_PP_NODE_74(p) MSGPACK_PP_IIF(p##(74), MSGPACK_PP_NODE_73, MSGPACK_PP_NODE_75)
+# define MSGPACK_PP_NODE_73(p) MSGPACK_PP_IIF(p##(73), 73, 74)
+# define MSGPACK_PP_NODE_75(p) MSGPACK_PP_IIF(p##(75), 75, 76)
+# define MSGPACK_PP_NODE_78(p) MSGPACK_PP_IIF(p##(78), MSGPACK_PP_NODE_77, MSGPACK_PP_NODE_79)
+# define MSGPACK_PP_NODE_77(p) MSGPACK_PP_IIF(p##(77), 77, 78)
+# define MSGPACK_PP_NODE_79(p) MSGPACK_PP_IIF(p##(79), 79, 80)
+# define MSGPACK_PP_NODE_88(p) MSGPACK_PP_IIF(p##(88), MSGPACK_PP_NODE_84, MSGPACK_PP_NODE_92)
+# define MSGPACK_PP_NODE_84(p) MSGPACK_PP_IIF(p##(84), MSGPACK_PP_NODE_82, MSGPACK_PP_NODE_86)
+# define MSGPACK_PP_NODE_82(p) MSGPACK_PP_IIF(p##(82), MSGPACK_PP_NODE_81, MSGPACK_PP_NODE_83)
+# define MSGPACK_PP_NODE_81(p) MSGPACK_PP_IIF(p##(81), 81, 82)
+# define MSGPACK_PP_NODE_83(p) MSGPACK_PP_IIF(p##(83), 83, 84)
+# define MSGPACK_PP_NODE_86(p) MSGPACK_PP_IIF(p##(86), MSGPACK_PP_NODE_85, MSGPACK_PP_NODE_87)
+# define MSGPACK_PP_NODE_85(p) MSGPACK_PP_IIF(p##(85), 85, 86)
+# define MSGPACK_PP_NODE_87(p) MSGPACK_PP_IIF(p##(87), 87, 88)
+# define MSGPACK_PP_NODE_92(p) MSGPACK_PP_IIF(p##(92), MSGPACK_PP_NODE_90, MSGPACK_PP_NODE_94)
+# define MSGPACK_PP_NODE_90(p) MSGPACK_PP_IIF(p##(90), MSGPACK_PP_NODE_89, MSGPACK_PP_NODE_91)
+# define MSGPACK_PP_NODE_89(p) MSGPACK_PP_IIF(p##(89), 89, 90)
+# define MSGPACK_PP_NODE_91(p) MSGPACK_PP_IIF(p##(91), 91, 92)
+# define MSGPACK_PP_NODE_94(p) MSGPACK_PP_IIF(p##(94), MSGPACK_PP_NODE_93, MSGPACK_PP_NODE_95)
+# define MSGPACK_PP_NODE_93(p) MSGPACK_PP_IIF(p##(93), 93, 94)
+# define MSGPACK_PP_NODE_95(p) MSGPACK_PP_IIF(p##(95), 95, 96)
+# define MSGPACK_PP_NODE_112(p) MSGPACK_PP_IIF(p##(112), MSGPACK_PP_NODE_104, MSGPACK_PP_NODE_120)
+# define MSGPACK_PP_NODE_104(p) MSGPACK_PP_IIF(p##(104), MSGPACK_PP_NODE_100, MSGPACK_PP_NODE_108)
+# define MSGPACK_PP_NODE_100(p) MSGPACK_PP_IIF(p##(100), MSGPACK_PP_NODE_98, MSGPACK_PP_NODE_102)
+# define MSGPACK_PP_NODE_98(p) MSGPACK_PP_IIF(p##(98), MSGPACK_PP_NODE_97, MSGPACK_PP_NODE_99)
+# define MSGPACK_PP_NODE_97(p) MSGPACK_PP_IIF(p##(97), 97, 98)
+# define MSGPACK_PP_NODE_99(p) MSGPACK_PP_IIF(p##(99), 99, 100)
+# define MSGPACK_PP_NODE_102(p) MSGPACK_PP_IIF(p##(102), MSGPACK_PP_NODE_101, MSGPACK_PP_NODE_103)
+# define MSGPACK_PP_NODE_101(p) MSGPACK_PP_IIF(p##(101), 101, 102)
+# define MSGPACK_PP_NODE_103(p) MSGPACK_PP_IIF(p##(103), 103, 104)
+# define MSGPACK_PP_NODE_108(p) MSGPACK_PP_IIF(p##(108), MSGPACK_PP_NODE_106, MSGPACK_PP_NODE_110)
+# define MSGPACK_PP_NODE_106(p) MSGPACK_PP_IIF(p##(106), MSGPACK_PP_NODE_105, MSGPACK_PP_NODE_107)
+# define MSGPACK_PP_NODE_105(p) MSGPACK_PP_IIF(p##(105), 105, 106)
+# define MSGPACK_PP_NODE_107(p) MSGPACK_PP_IIF(p##(107), 107, 108)
+# define MSGPACK_PP_NODE_110(p) MSGPACK_PP_IIF(p##(110), MSGPACK_PP_NODE_109, MSGPACK_PP_NODE_111)
+# define MSGPACK_PP_NODE_109(p) MSGPACK_PP_IIF(p##(109), 109, 110)
+# define MSGPACK_PP_NODE_111(p) MSGPACK_PP_IIF(p##(111), 111, 112)
+# define MSGPACK_PP_NODE_120(p) MSGPACK_PP_IIF(p##(120), MSGPACK_PP_NODE_116, MSGPACK_PP_NODE_124)
+# define MSGPACK_PP_NODE_116(p) MSGPACK_PP_IIF(p##(116), MSGPACK_PP_NODE_114, MSGPACK_PP_NODE_118)
+# define MSGPACK_PP_NODE_114(p) MSGPACK_PP_IIF(p##(114), MSGPACK_PP_NODE_113, MSGPACK_PP_NODE_115)
+# define MSGPACK_PP_NODE_113(p) MSGPACK_PP_IIF(p##(113), 113, 114)
+# define MSGPACK_PP_NODE_115(p) MSGPACK_PP_IIF(p##(115), 115, 116)
+# define MSGPACK_PP_NODE_118(p) MSGPACK_PP_IIF(p##(118), MSGPACK_PP_NODE_117, MSGPACK_PP_NODE_119)
+# define MSGPACK_PP_NODE_117(p) MSGPACK_PP_IIF(p##(117), 117, 118)
+# define MSGPACK_PP_NODE_119(p) MSGPACK_PP_IIF(p##(119), 119, 120)
+# define MSGPACK_PP_NODE_124(p) MSGPACK_PP_IIF(p##(124), MSGPACK_PP_NODE_122, MSGPACK_PP_NODE_126)
+# define MSGPACK_PP_NODE_122(p) MSGPACK_PP_IIF(p##(122), MSGPACK_PP_NODE_121, MSGPACK_PP_NODE_123)
+# define MSGPACK_PP_NODE_121(p) MSGPACK_PP_IIF(p##(121), 121, 122)
+# define MSGPACK_PP_NODE_123(p) MSGPACK_PP_IIF(p##(123), 123, 124)
+# define MSGPACK_PP_NODE_126(p) MSGPACK_PP_IIF(p##(126), MSGPACK_PP_NODE_125, MSGPACK_PP_NODE_127)
+# define MSGPACK_PP_NODE_125(p) MSGPACK_PP_IIF(p##(125), 125, 126)
+# define MSGPACK_PP_NODE_127(p) MSGPACK_PP_IIF(p##(127), 127, 128)
+# define MSGPACK_PP_NODE_192(p) MSGPACK_PP_IIF(p##(192), MSGPACK_PP_NODE_160, MSGPACK_PP_NODE_224)
+# define MSGPACK_PP_NODE_160(p) MSGPACK_PP_IIF(p##(160), MSGPACK_PP_NODE_144, MSGPACK_PP_NODE_176)
+# define MSGPACK_PP_NODE_144(p) MSGPACK_PP_IIF(p##(144), MSGPACK_PP_NODE_136, MSGPACK_PP_NODE_152)
+# define MSGPACK_PP_NODE_136(p) MSGPACK_PP_IIF(p##(136), MSGPACK_PP_NODE_132, MSGPACK_PP_NODE_140)
+# define MSGPACK_PP_NODE_132(p) MSGPACK_PP_IIF(p##(132), MSGPACK_PP_NODE_130, MSGPACK_PP_NODE_134)
+# define MSGPACK_PP_NODE_130(p) MSGPACK_PP_IIF(p##(130), MSGPACK_PP_NODE_129, MSGPACK_PP_NODE_131)
+# define MSGPACK_PP_NODE_129(p) MSGPACK_PP_IIF(p##(129), 129, 130)
+# define MSGPACK_PP_NODE_131(p) MSGPACK_PP_IIF(p##(131), 131, 132)
+# define MSGPACK_PP_NODE_134(p) MSGPACK_PP_IIF(p##(134), MSGPACK_PP_NODE_133, MSGPACK_PP_NODE_135)
+# define MSGPACK_PP_NODE_133(p) MSGPACK_PP_IIF(p##(133), 133, 134)
+# define MSGPACK_PP_NODE_135(p) MSGPACK_PP_IIF(p##(135), 135, 136)
+# define MSGPACK_PP_NODE_140(p) MSGPACK_PP_IIF(p##(140), MSGPACK_PP_NODE_138, MSGPACK_PP_NODE_142)
+# define MSGPACK_PP_NODE_138(p) MSGPACK_PP_IIF(p##(138), MSGPACK_PP_NODE_137, MSGPACK_PP_NODE_139)
+# define MSGPACK_PP_NODE_137(p) MSGPACK_PP_IIF(p##(137), 137, 138)
+# define MSGPACK_PP_NODE_139(p) MSGPACK_PP_IIF(p##(139), 139, 140)
+# define MSGPACK_PP_NODE_142(p) MSGPACK_PP_IIF(p##(142), MSGPACK_PP_NODE_141, MSGPACK_PP_NODE_143)
+# define MSGPACK_PP_NODE_141(p) MSGPACK_PP_IIF(p##(141), 141, 142)
+# define MSGPACK_PP_NODE_143(p) MSGPACK_PP_IIF(p##(143), 143, 144)
+# define MSGPACK_PP_NODE_152(p) MSGPACK_PP_IIF(p##(152), MSGPACK_PP_NODE_148, MSGPACK_PP_NODE_156)
+# define MSGPACK_PP_NODE_148(p) MSGPACK_PP_IIF(p##(148), MSGPACK_PP_NODE_146, MSGPACK_PP_NODE_150)
+# define MSGPACK_PP_NODE_146(p) MSGPACK_PP_IIF(p##(146), MSGPACK_PP_NODE_145, MSGPACK_PP_NODE_147)
+# define MSGPACK_PP_NODE_145(p) MSGPACK_PP_IIF(p##(145), 145, 146)
+# define MSGPACK_PP_NODE_147(p) MSGPACK_PP_IIF(p##(147), 147, 148)
+# define MSGPACK_PP_NODE_150(p) MSGPACK_PP_IIF(p##(150), MSGPACK_PP_NODE_149, MSGPACK_PP_NODE_151)
+# define MSGPACK_PP_NODE_149(p) MSGPACK_PP_IIF(p##(149), 149, 150)
+# define MSGPACK_PP_NODE_151(p) MSGPACK_PP_IIF(p##(151), 151, 152)
+# define MSGPACK_PP_NODE_156(p) MSGPACK_PP_IIF(p##(156), MSGPACK_PP_NODE_154, MSGPACK_PP_NODE_158)
+# define MSGPACK_PP_NODE_154(p) MSGPACK_PP_IIF(p##(154), MSGPACK_PP_NODE_153, MSGPACK_PP_NODE_155)
+# define MSGPACK_PP_NODE_153(p) MSGPACK_PP_IIF(p##(153), 153, 154)
+# define MSGPACK_PP_NODE_155(p) MSGPACK_PP_IIF(p##(155), 155, 156)
+# define MSGPACK_PP_NODE_158(p) MSGPACK_PP_IIF(p##(158), MSGPACK_PP_NODE_157, MSGPACK_PP_NODE_159)
+# define MSGPACK_PP_NODE_157(p) MSGPACK_PP_IIF(p##(157), 157, 158)
+# define MSGPACK_PP_NODE_159(p) MSGPACK_PP_IIF(p##(159), 159, 160)
+# define MSGPACK_PP_NODE_176(p) MSGPACK_PP_IIF(p##(176), MSGPACK_PP_NODE_168, MSGPACK_PP_NODE_184)
+# define MSGPACK_PP_NODE_168(p) MSGPACK_PP_IIF(p##(168), MSGPACK_PP_NODE_164, MSGPACK_PP_NODE_172)
+# define MSGPACK_PP_NODE_164(p) MSGPACK_PP_IIF(p##(164), MSGPACK_PP_NODE_162, MSGPACK_PP_NODE_166)
+# define MSGPACK_PP_NODE_162(p) MSGPACK_PP_IIF(p##(162), MSGPACK_PP_NODE_161, MSGPACK_PP_NODE_163)
+# define MSGPACK_PP_NODE_161(p) MSGPACK_PP_IIF(p##(161), 161, 162)
+# define MSGPACK_PP_NODE_163(p) MSGPACK_PP_IIF(p##(163), 163, 164)
+# define MSGPACK_PP_NODE_166(p) MSGPACK_PP_IIF(p##(166), MSGPACK_PP_NODE_165, MSGPACK_PP_NODE_167)
+# define MSGPACK_PP_NODE_165(p) MSGPACK_PP_IIF(p##(165), 165, 166)
+# define MSGPACK_PP_NODE_167(p) MSGPACK_PP_IIF(p##(167), 167, 168)
+# define MSGPACK_PP_NODE_172(p) MSGPACK_PP_IIF(p##(172), MSGPACK_PP_NODE_170, MSGPACK_PP_NODE_174)
+# define MSGPACK_PP_NODE_170(p) MSGPACK_PP_IIF(p##(170), MSGPACK_PP_NODE_169, MSGPACK_PP_NODE_171)
+# define MSGPACK_PP_NODE_169(p) MSGPACK_PP_IIF(p##(169), 169, 170)
+# define MSGPACK_PP_NODE_171(p) MSGPACK_PP_IIF(p##(171), 171, 172)
+# define MSGPACK_PP_NODE_174(p) MSGPACK_PP_IIF(p##(174), MSGPACK_PP_NODE_173, MSGPACK_PP_NODE_175)
+# define MSGPACK_PP_NODE_173(p) MSGPACK_PP_IIF(p##(173), 173, 174)
+# define MSGPACK_PP_NODE_175(p) MSGPACK_PP_IIF(p##(175), 175, 176)
+# define MSGPACK_PP_NODE_184(p) MSGPACK_PP_IIF(p##(184), MSGPACK_PP_NODE_180, MSGPACK_PP_NODE_188)
+# define MSGPACK_PP_NODE_180(p) MSGPACK_PP_IIF(p##(180), MSGPACK_PP_NODE_178, MSGPACK_PP_NODE_182)
+# define MSGPACK_PP_NODE_178(p) MSGPACK_PP_IIF(p##(178), MSGPACK_PP_NODE_177, MSGPACK_PP_NODE_179)
+# define MSGPACK_PP_NODE_177(p) MSGPACK_PP_IIF(p##(177), 177, 178)
+# define MSGPACK_PP_NODE_179(p) MSGPACK_PP_IIF(p##(179), 179, 180)
+# define MSGPACK_PP_NODE_182(p) MSGPACK_PP_IIF(p##(182), MSGPACK_PP_NODE_181, MSGPACK_PP_NODE_183)
+# define MSGPACK_PP_NODE_181(p) MSGPACK_PP_IIF(p##(181), 181, 182)
+# define MSGPACK_PP_NODE_183(p) MSGPACK_PP_IIF(p##(183), 183, 184)
+# define MSGPACK_PP_NODE_188(p) MSGPACK_PP_IIF(p##(188), MSGPACK_PP_NODE_186, MSGPACK_PP_NODE_190)
+# define MSGPACK_PP_NODE_186(p) MSGPACK_PP_IIF(p##(186), MSGPACK_PP_NODE_185, MSGPACK_PP_NODE_187)
+# define MSGPACK_PP_NODE_185(p) MSGPACK_PP_IIF(p##(185), 185, 186)
+# define MSGPACK_PP_NODE_187(p) MSGPACK_PP_IIF(p##(187), 187, 188)
+# define MSGPACK_PP_NODE_190(p) MSGPACK_PP_IIF(p##(190), MSGPACK_PP_NODE_189, MSGPACK_PP_NODE_191)
+# define MSGPACK_PP_NODE_189(p) MSGPACK_PP_IIF(p##(189), 189, 190)
+# define MSGPACK_PP_NODE_191(p) MSGPACK_PP_IIF(p##(191), 191, 192)
+# define MSGPACK_PP_NODE_224(p) MSGPACK_PP_IIF(p##(224), MSGPACK_PP_NODE_208, MSGPACK_PP_NODE_240)
+# define MSGPACK_PP_NODE_208(p) MSGPACK_PP_IIF(p##(208), MSGPACK_PP_NODE_200, MSGPACK_PP_NODE_216)
+# define MSGPACK_PP_NODE_200(p) MSGPACK_PP_IIF(p##(200), MSGPACK_PP_NODE_196, MSGPACK_PP_NODE_204)
+# define MSGPACK_PP_NODE_196(p) MSGPACK_PP_IIF(p##(196), MSGPACK_PP_NODE_194, MSGPACK_PP_NODE_198)
+# define MSGPACK_PP_NODE_194(p) MSGPACK_PP_IIF(p##(194), MSGPACK_PP_NODE_193, MSGPACK_PP_NODE_195)
+# define MSGPACK_PP_NODE_193(p) MSGPACK_PP_IIF(p##(193), 193, 194)
+# define MSGPACK_PP_NODE_195(p) MSGPACK_PP_IIF(p##(195), 195, 196)
+# define MSGPACK_PP_NODE_198(p) MSGPACK_PP_IIF(p##(198), MSGPACK_PP_NODE_197, MSGPACK_PP_NODE_199)
+# define MSGPACK_PP_NODE_197(p) MSGPACK_PP_IIF(p##(197), 197, 198)
+# define MSGPACK_PP_NODE_199(p) MSGPACK_PP_IIF(p##(199), 199, 200)
+# define MSGPACK_PP_NODE_204(p) MSGPACK_PP_IIF(p##(204), MSGPACK_PP_NODE_202, MSGPACK_PP_NODE_206)
+# define MSGPACK_PP_NODE_202(p) MSGPACK_PP_IIF(p##(202), MSGPACK_PP_NODE_201, MSGPACK_PP_NODE_203)
+# define MSGPACK_PP_NODE_201(p) MSGPACK_PP_IIF(p##(201), 201, 202)
+# define MSGPACK_PP_NODE_203(p) MSGPACK_PP_IIF(p##(203), 203, 204)
+# define MSGPACK_PP_NODE_206(p) MSGPACK_PP_IIF(p##(206), MSGPACK_PP_NODE_205, MSGPACK_PP_NODE_207)
+# define MSGPACK_PP_NODE_205(p) MSGPACK_PP_IIF(p##(205), 205, 206)
+# define MSGPACK_PP_NODE_207(p) MSGPACK_PP_IIF(p##(207), 207, 208)
+# define MSGPACK_PP_NODE_216(p) MSGPACK_PP_IIF(p##(216), MSGPACK_PP_NODE_212, MSGPACK_PP_NODE_220)
+# define MSGPACK_PP_NODE_212(p) MSGPACK_PP_IIF(p##(212), MSGPACK_PP_NODE_210, MSGPACK_PP_NODE_214)
+# define MSGPACK_PP_NODE_210(p) MSGPACK_PP_IIF(p##(210), MSGPACK_PP_NODE_209, MSGPACK_PP_NODE_211)
+# define MSGPACK_PP_NODE_209(p) MSGPACK_PP_IIF(p##(209), 209, 210)
+# define MSGPACK_PP_NODE_211(p) MSGPACK_PP_IIF(p##(211), 211, 212)
+# define MSGPACK_PP_NODE_214(p) MSGPACK_PP_IIF(p##(214), MSGPACK_PP_NODE_213, MSGPACK_PP_NODE_215)
+# define MSGPACK_PP_NODE_213(p) MSGPACK_PP_IIF(p##(213), 213, 214)
+# define MSGPACK_PP_NODE_215(p) MSGPACK_PP_IIF(p##(215), 215, 216)
+# define MSGPACK_PP_NODE_220(p) MSGPACK_PP_IIF(p##(220), MSGPACK_PP_NODE_218, MSGPACK_PP_NODE_222)
+# define MSGPACK_PP_NODE_218(p) MSGPACK_PP_IIF(p##(218), MSGPACK_PP_NODE_217, MSGPACK_PP_NODE_219)
+# define MSGPACK_PP_NODE_217(p) MSGPACK_PP_IIF(p##(217), 217, 218)
+# define MSGPACK_PP_NODE_219(p) MSGPACK_PP_IIF(p##(219), 219, 220)
+# define MSGPACK_PP_NODE_222(p) MSGPACK_PP_IIF(p##(222), MSGPACK_PP_NODE_221, MSGPACK_PP_NODE_223)
+# define MSGPACK_PP_NODE_221(p) MSGPACK_PP_IIF(p##(221), 221, 222)
+# define MSGPACK_PP_NODE_223(p) MSGPACK_PP_IIF(p##(223), 223, 224)
+# define MSGPACK_PP_NODE_240(p) MSGPACK_PP_IIF(p##(240), MSGPACK_PP_NODE_232, MSGPACK_PP_NODE_248)
+# define MSGPACK_PP_NODE_232(p) MSGPACK_PP_IIF(p##(232), MSGPACK_PP_NODE_228, MSGPACK_PP_NODE_236)
+# define MSGPACK_PP_NODE_228(p) MSGPACK_PP_IIF(p##(228), MSGPACK_PP_NODE_226, MSGPACK_PP_NODE_230)
+# define MSGPACK_PP_NODE_226(p) MSGPACK_PP_IIF(p##(226), MSGPACK_PP_NODE_225, MSGPACK_PP_NODE_227)
+# define MSGPACK_PP_NODE_225(p) MSGPACK_PP_IIF(p##(225), 225, 226)
+# define MSGPACK_PP_NODE_227(p) MSGPACK_PP_IIF(p##(227), 227, 228)
+# define MSGPACK_PP_NODE_230(p) MSGPACK_PP_IIF(p##(230), MSGPACK_PP_NODE_229, MSGPACK_PP_NODE_231)
+# define MSGPACK_PP_NODE_229(p) MSGPACK_PP_IIF(p##(229), 229, 230)
+# define MSGPACK_PP_NODE_231(p) MSGPACK_PP_IIF(p##(231), 231, 232)
+# define MSGPACK_PP_NODE_236(p) MSGPACK_PP_IIF(p##(236), MSGPACK_PP_NODE_234, MSGPACK_PP_NODE_238)
+# define MSGPACK_PP_NODE_234(p) MSGPACK_PP_IIF(p##(234), MSGPACK_PP_NODE_233, MSGPACK_PP_NODE_235)
+# define MSGPACK_PP_NODE_233(p) MSGPACK_PP_IIF(p##(233), 233, 234)
+# define MSGPACK_PP_NODE_235(p) MSGPACK_PP_IIF(p##(235), 235, 236)
+# define MSGPACK_PP_NODE_238(p) MSGPACK_PP_IIF(p##(238), MSGPACK_PP_NODE_237, MSGPACK_PP_NODE_239)
+# define MSGPACK_PP_NODE_237(p) MSGPACK_PP_IIF(p##(237), 237, 238)
+# define MSGPACK_PP_NODE_239(p) MSGPACK_PP_IIF(p##(239), 239, 240)
+# define MSGPACK_PP_NODE_248(p) MSGPACK_PP_IIF(p##(248), MSGPACK_PP_NODE_244, MSGPACK_PP_NODE_252)
+# define MSGPACK_PP_NODE_244(p) MSGPACK_PP_IIF(p##(244), MSGPACK_PP_NODE_242, MSGPACK_PP_NODE_246)
+# define MSGPACK_PP_NODE_242(p) MSGPACK_PP_IIF(p##(242), MSGPACK_PP_NODE_241, MSGPACK_PP_NODE_243)
+# define MSGPACK_PP_NODE_241(p) MSGPACK_PP_IIF(p##(241), 241, 242)
+# define MSGPACK_PP_NODE_243(p) MSGPACK_PP_IIF(p##(243), 243, 244)
+# define MSGPACK_PP_NODE_246(p) MSGPACK_PP_IIF(p##(246), MSGPACK_PP_NODE_245, MSGPACK_PP_NODE_247)
+# define MSGPACK_PP_NODE_245(p) MSGPACK_PP_IIF(p##(245), 245, 246)
+# define MSGPACK_PP_NODE_247(p) MSGPACK_PP_IIF(p##(247), 247, 248)
+# define MSGPACK_PP_NODE_252(p) MSGPACK_PP_IIF(p##(252), MSGPACK_PP_NODE_250, MSGPACK_PP_NODE_254)
+# define MSGPACK_PP_NODE_250(p) MSGPACK_PP_IIF(p##(250), MSGPACK_PP_NODE_249, MSGPACK_PP_NODE_251)
+# define MSGPACK_PP_NODE_249(p) MSGPACK_PP_IIF(p##(249), 249, 250)
+# define MSGPACK_PP_NODE_251(p) MSGPACK_PP_IIF(p##(251), 251, 252)
+# define MSGPACK_PP_NODE_254(p) MSGPACK_PP_IIF(p##(254), MSGPACK_PP_NODE_253, MSGPACK_PP_NODE_255)
+# define MSGPACK_PP_NODE_253(p) MSGPACK_PP_IIF(p##(253), 253, 254)
+# define MSGPACK_PP_NODE_255(p) MSGPACK_PP_IIF(p##(255), 255, 256)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/detail/is_binary.hpp b/third_party/msgpack/include/msgpack/preprocessor/detail/is_binary.hpp
new file mode 100644
index 0000000000..7fb3d173cb
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/detail/is_binary.hpp
@@ -0,0 +1,30 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_DETAIL_IS_BINARY_HPP
+# define MSGPACK_PREPROCESSOR_DETAIL_IS_BINARY_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/detail/check.hpp>
+#
+# /* MSGPACK_PP_IS_BINARY */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_IS_BINARY(x) MSGPACK_PP_CHECK(x, MSGPACK_PP_IS_BINARY_CHECK)
+# else
+# define MSGPACK_PP_IS_BINARY(x) MSGPACK_PP_IS_BINARY_I(x)
+# define MSGPACK_PP_IS_BINARY_I(x) MSGPACK_PP_CHECK(x, MSGPACK_PP_IS_BINARY_CHECK)
+# endif
+#
+# define MSGPACK_PP_IS_BINARY_CHECK(a, b) 1
+# define MSGPACK_PP_CHECK_RESULT_MSGPACK_PP_IS_BINARY_CHECK 0, MSGPACK_PP_NIL
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/detail/is_nullary.hpp b/third_party/msgpack/include/msgpack/preprocessor/detail/is_nullary.hpp
new file mode 100644
index 0000000000..43a22074f3
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/detail/is_nullary.hpp
@@ -0,0 +1,30 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_DETAIL_IS_NULLARY_HPP
+# define MSGPACK_PREPROCESSOR_DETAIL_IS_NULLARY_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/detail/check.hpp>
+#
+# /* MSGPACK_PP_IS_NULLARY */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_IS_NULLARY(x) MSGPACK_PP_CHECK(x, MSGPACK_PP_IS_NULLARY_CHECK)
+# else
+# define MSGPACK_PP_IS_NULLARY(x) MSGPACK_PP_IS_NULLARY_I(x)
+# define MSGPACK_PP_IS_NULLARY_I(x) MSGPACK_PP_CHECK(x, MSGPACK_PP_IS_NULLARY_CHECK)
+# endif
+#
+# define MSGPACK_PP_IS_NULLARY_CHECK() 1
+# define MSGPACK_PP_CHECK_RESULT_MSGPACK_PP_IS_NULLARY_CHECK 0, MSGPACK_PP_NIL
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/detail/is_unary.hpp b/third_party/msgpack/include/msgpack/preprocessor/detail/is_unary.hpp
new file mode 100644
index 0000000000..d4698aa3ae
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/detail/is_unary.hpp
@@ -0,0 +1,30 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_DETAIL_IS_UNARY_HPP
+# define MSGPACK_PREPROCESSOR_DETAIL_IS_UNARY_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/detail/check.hpp>
+#
+# /* MSGPACK_PP_IS_UNARY */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_IS_UNARY(x) MSGPACK_PP_CHECK(x, MSGPACK_PP_IS_UNARY_CHECK)
+# else
+# define MSGPACK_PP_IS_UNARY(x) MSGPACK_PP_IS_UNARY_I(x)
+# define MSGPACK_PP_IS_UNARY_I(x) MSGPACK_PP_CHECK(x, MSGPACK_PP_IS_UNARY_CHECK)
+# endif
+#
+# define MSGPACK_PP_IS_UNARY_CHECK(a) 1
+# define MSGPACK_PP_CHECK_RESULT_MSGPACK_PP_IS_UNARY_CHECK 0, MSGPACK_PP_NIL
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/detail/null.hpp b/third_party/msgpack/include/msgpack/preprocessor/detail/null.hpp
new file mode 100644
index 0000000000..a4ffe2aba8
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/detail/null.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_DETAIL_NULL_HPP
+# define MSGPACK_PREPROCESSOR_DETAIL_NULL_HPP
+#
+# /* empty file */
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/detail/split.hpp b/third_party/msgpack/include/msgpack/preprocessor/detail/split.hpp
new file mode 100644
index 0000000000..6aced7802b
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/detail/split.hpp
@@ -0,0 +1,35 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# ifndef MSGPACK_PREPROCESSOR_DETAIL_SPLIT_HPP
+# define MSGPACK_PREPROCESSOR_DETAIL_SPLIT_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# /* MSGPACK_PP_SPLIT */
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_SPLIT(n, im) MSGPACK_PP_SPLIT_I((n, im))
+# define MSGPACK_PP_SPLIT_I(par) MSGPACK_PP_SPLIT_II ## par
+# define MSGPACK_PP_SPLIT_II(n, a, b) MSGPACK_PP_SPLIT_ ## n(a, b)
+# elif MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MSVC()
+# define MSGPACK_PP_SPLIT(n, im) MSGPACK_PP_SPLIT_I(n((im)))
+# define MSGPACK_PP_SPLIT_I(n) MSGPACK_PP_SPLIT_ID(MSGPACK_PP_SPLIT_II_ ## n)
+# define MSGPACK_PP_SPLIT_II_0(s) MSGPACK_PP_SPLIT_ID(MSGPACK_PP_SPLIT_0 s)
+# define MSGPACK_PP_SPLIT_II_1(s) MSGPACK_PP_SPLIT_ID(MSGPACK_PP_SPLIT_1 s)
+# define MSGPACK_PP_SPLIT_ID(id) id
+# else
+# define MSGPACK_PP_SPLIT(n, im) MSGPACK_PP_SPLIT_I(n)(im)
+# define MSGPACK_PP_SPLIT_I(n) MSGPACK_PP_SPLIT_ ## n
+# endif
+#
+# define MSGPACK_PP_SPLIT_0(a, b) a
+# define MSGPACK_PP_SPLIT_1(a, b) b
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/empty.hpp b/third_party/msgpack/include/msgpack/preprocessor/empty.hpp
new file mode 100644
index 0000000000..f04c75eaf4
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/empty.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_EMPTY_HPP
+# define MSGPACK_PREPROCESSOR_EMPTY_HPP
+#
+# include <msgpack/preprocessor/facilities/empty.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/enum.hpp b/third_party/msgpack/include/msgpack/preprocessor/enum.hpp
new file mode 100644
index 0000000000..da2a7bd2b9
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/enum.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ENUM_HPP
+# define MSGPACK_PREPROCESSOR_ENUM_HPP
+#
+# include <msgpack/preprocessor/repetition/enum.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/enum_params.hpp b/third_party/msgpack/include/msgpack/preprocessor/enum_params.hpp
new file mode 100644
index 0000000000..58e9b41be9
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/enum_params.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ENUM_PARAMS_HPP
+# define MSGPACK_PREPROCESSOR_ENUM_PARAMS_HPP
+#
+# include <msgpack/preprocessor/repetition/enum_params.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/enum_params_with_a_default.hpp b/third_party/msgpack/include/msgpack/preprocessor/enum_params_with_a_default.hpp
new file mode 100644
index 0000000000..92cf92f28e
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/enum_params_with_a_default.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ENUM_PARAMS_WITH_A_DEFAULT_HPP
+# define MSGPACK_PREPROCESSOR_ENUM_PARAMS_WITH_A_DEFAULT_HPP
+#
+# include <msgpack/preprocessor/repetition/enum_params_with_a_default.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/enum_params_with_defaults.hpp b/third_party/msgpack/include/msgpack/preprocessor/enum_params_with_defaults.hpp
new file mode 100644
index 0000000000..af445d4b23
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/enum_params_with_defaults.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ENUM_PARAMS_WITH_DEFAULTS_HPP
+# define MSGPACK_PREPROCESSOR_ENUM_PARAMS_WITH_DEFAULTS_HPP
+#
+# include <msgpack/preprocessor/repetition/enum_params_with_defaults.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/enum_shifted.hpp b/third_party/msgpack/include/msgpack/preprocessor/enum_shifted.hpp
new file mode 100644
index 0000000000..8429c5119f
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/enum_shifted.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ENUM_SHIFTED_HPP
+# define MSGPACK_PREPROCESSOR_ENUM_SHIFTED_HPP
+#
+# include <msgpack/preprocessor/repetition/enum_shifted.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/enum_shifted_params.hpp b/third_party/msgpack/include/msgpack/preprocessor/enum_shifted_params.hpp
new file mode 100644
index 0000000000..3822430312
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/enum_shifted_params.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ENUM_SHIFTED_PARAMS_HPP
+# define MSGPACK_PREPROCESSOR_ENUM_SHIFTED_PARAMS_HPP
+#
+# include <msgpack/preprocessor/repetition/enum_shifted_params.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/expand.hpp b/third_party/msgpack/include/msgpack/preprocessor/expand.hpp
new file mode 100644
index 0000000000..17ff97a236
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/expand.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_EXPAND_HPP
+# define MSGPACK_PREPROCESSOR_EXPAND_HPP
+#
+# include <msgpack/preprocessor/facilities/expand.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/expr_if.hpp b/third_party/msgpack/include/msgpack/preprocessor/expr_if.hpp
new file mode 100644
index 0000000000..2216543dd6
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/expr_if.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_EXPR_IF_HPP
+# define MSGPACK_PREPROCESSOR_EXPR_IF_HPP
+#
+# include <msgpack/preprocessor/control/expr_if.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/facilities.hpp b/third_party/msgpack/include/msgpack/preprocessor/facilities.hpp
new file mode 100644
index 0000000000..01bc4dcf8f
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/facilities.hpp
@@ -0,0 +1,23 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002-2011. *
+# * (C) Copyright Edward Diener 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_FACILITIES_HPP
+# define MSGPACK_PREPROCESSOR_FACILITIES_HPP
+#
+# include <msgpack/preprocessor/facilities/apply.hpp>
+# include <msgpack/preprocessor/facilities/empty.hpp>
+# include <msgpack/preprocessor/facilities/expand.hpp>
+# include <msgpack/preprocessor/facilities/identity.hpp>
+# include <msgpack/preprocessor/facilities/intercept.hpp>
+# include <msgpack/preprocessor/facilities/overload.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/facilities/apply.hpp b/third_party/msgpack/include/msgpack/preprocessor/facilities/apply.hpp
new file mode 100644
index 0000000000..c4f8db17b2
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/facilities/apply.hpp
@@ -0,0 +1,34 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_FACILITIES_APPLY_HPP
+# define MSGPACK_PREPROCESSOR_FACILITIES_APPLY_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/control/expr_iif.hpp>
+# include <msgpack/preprocessor/detail/is_unary.hpp>
+# include <msgpack/preprocessor/tuple/rem.hpp>
+#
+# /* MSGPACK_PP_APPLY */
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_APPLY(x) MSGPACK_PP_APPLY_I(x)
+# define MSGPACK_PP_APPLY_I(x) MSGPACK_PP_EXPR_IIF(MSGPACK_PP_IS_UNARY(x), MSGPACK_PP_TUPLE_REM_1 x)
+# elif MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_BCC()
+# define MSGPACK_PP_APPLY(x) MSGPACK_PP_APPLY_I(x)
+# define MSGPACK_PP_APPLY_I(x) MSGPACK_PP_APPLY_ ## x
+# define MSGPACK_PP_APPLY_(x) x
+# define MSGPACK_PP_APPLY_MSGPACK_PP_NIL
+# else
+# define MSGPACK_PP_APPLY(x) MSGPACK_PP_EXPR_IIF(MSGPACK_PP_IS_UNARY(x), MSGPACK_PP_TUPLE_REM_1 x)
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/facilities/detail/is_empty.hpp b/third_party/msgpack/include/msgpack/preprocessor/facilities/detail/is_empty.hpp
new file mode 100644
index 0000000000..b7102381d8
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/facilities/detail/is_empty.hpp
@@ -0,0 +1,55 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2014.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+#ifndef MSGPACK_PREPROCESSOR_DETAIL_IS_EMPTY_HPP
+#define MSGPACK_PREPROCESSOR_DETAIL_IS_EMPTY_HPP
+
+#include <msgpack/preprocessor/punctuation/is_begin_parens.hpp>
+
+#if MSGPACK_PP_VARIADICS_MSVC
+
+# pragma warning(once:4002)
+
+#define MSGPACK_PP_DETAIL_IS_EMPTY_IIF_0(t, b) b
+#define MSGPACK_PP_DETAIL_IS_EMPTY_IIF_1(t, b) t
+
+#else
+
+#define MSGPACK_PP_DETAIL_IS_EMPTY_IIF_0(t, ...) __VA_ARGS__
+#define MSGPACK_PP_DETAIL_IS_EMPTY_IIF_1(t, ...) t
+
+#endif
+
+#if MSGPACK_PP_VARIADICS_MSVC && _MSC_VER <= 1400
+
+#define MSGPACK_PP_DETAIL_IS_EMPTY_PROCESS(param) \
+ MSGPACK_PP_IS_BEGIN_PARENS \
+ ( \
+ MSGPACK_PP_DETAIL_IS_EMPTY_NON_FUNCTION_C param () \
+ ) \
+/**/
+
+#else
+
+#define MSGPACK_PP_DETAIL_IS_EMPTY_PROCESS(...) \
+ MSGPACK_PP_IS_BEGIN_PARENS \
+ ( \
+ MSGPACK_PP_DETAIL_IS_EMPTY_NON_FUNCTION_C __VA_ARGS__ () \
+ ) \
+/**/
+
+#endif
+
+#define MSGPACK_PP_DETAIL_IS_EMPTY_PRIMITIVE_CAT(a, b) a ## b
+#define MSGPACK_PP_DETAIL_IS_EMPTY_IIF(bit) MSGPACK_PP_DETAIL_IS_EMPTY_PRIMITIVE_CAT(MSGPACK_PP_DETAIL_IS_EMPTY_IIF_,bit)
+#define MSGPACK_PP_DETAIL_IS_EMPTY_NON_FUNCTION_C(...) ()
+
+#endif /* MSGPACK_PREPROCESSOR_DETAIL_IS_EMPTY_HPP */
diff --git a/third_party/msgpack/include/msgpack/preprocessor/facilities/empty.hpp b/third_party/msgpack/include/msgpack/preprocessor/facilities/empty.hpp
new file mode 100644
index 0000000000..c4a4ee851a
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/facilities/empty.hpp
@@ -0,0 +1,23 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_FACILITIES_EMPTY_HPP
+# define MSGPACK_PREPROCESSOR_FACILITIES_EMPTY_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# /* MSGPACK_PP_EMPTY */
+#
+# define MSGPACK_PP_EMPTY()
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/facilities/expand.hpp b/third_party/msgpack/include/msgpack/preprocessor/facilities/expand.hpp
new file mode 100644
index 0000000000..d124862601
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/facilities/expand.hpp
@@ -0,0 +1,28 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_FACILITIES_EXPAND_HPP
+# define MSGPACK_PREPROCESSOR_FACILITIES_EXPAND_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC() && ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_DMC()
+# define MSGPACK_PP_EXPAND(x) MSGPACK_PP_EXPAND_I(x)
+# else
+# define MSGPACK_PP_EXPAND(x) MSGPACK_PP_EXPAND_OO((x))
+# define MSGPACK_PP_EXPAND_OO(par) MSGPACK_PP_EXPAND_I ## par
+# endif
+#
+# define MSGPACK_PP_EXPAND_I(x) x
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/facilities/identity.hpp b/third_party/msgpack/include/msgpack/preprocessor/facilities/identity.hpp
new file mode 100644
index 0000000000..9fbe1d305a
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/facilities/identity.hpp
@@ -0,0 +1,27 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+# /* Revised by Edward Diener (2015) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_FACILITIES_IDENTITY_HPP
+# define MSGPACK_PREPROCESSOR_FACILITIES_IDENTITY_HPP
+#
+# include <msgpack/preprocessor/facilities/empty.hpp>
+# include <msgpack/preprocessor/tuple/eat.hpp>
+#
+# /* MSGPACK_PP_IDENTITY */
+#
+# define MSGPACK_PP_IDENTITY(item) item MSGPACK_PP_EMPTY
+#
+# define MSGPACK_PP_IDENTITY_N(item,n) item MSGPACK_PP_TUPLE_EAT_N(n)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/facilities/intercept.hpp b/third_party/msgpack/include/msgpack/preprocessor/facilities/intercept.hpp
new file mode 100644
index 0000000000..048d861762
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/facilities/intercept.hpp
@@ -0,0 +1,277 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_FACILITIES_INTERCEPT_HPP
+# define MSGPACK_PREPROCESSOR_FACILITIES_INTERCEPT_HPP
+#
+# /* MSGPACK_PP_INTERCEPT */
+#
+# define MSGPACK_PP_INTERCEPT MSGPACK_PP_INTERCEPT_
+#
+# define MSGPACK_PP_INTERCEPT_0
+# define MSGPACK_PP_INTERCEPT_1
+# define MSGPACK_PP_INTERCEPT_2
+# define MSGPACK_PP_INTERCEPT_3
+# define MSGPACK_PP_INTERCEPT_4
+# define MSGPACK_PP_INTERCEPT_5
+# define MSGPACK_PP_INTERCEPT_6
+# define MSGPACK_PP_INTERCEPT_7
+# define MSGPACK_PP_INTERCEPT_8
+# define MSGPACK_PP_INTERCEPT_9
+# define MSGPACK_PP_INTERCEPT_10
+# define MSGPACK_PP_INTERCEPT_11
+# define MSGPACK_PP_INTERCEPT_12
+# define MSGPACK_PP_INTERCEPT_13
+# define MSGPACK_PP_INTERCEPT_14
+# define MSGPACK_PP_INTERCEPT_15
+# define MSGPACK_PP_INTERCEPT_16
+# define MSGPACK_PP_INTERCEPT_17
+# define MSGPACK_PP_INTERCEPT_18
+# define MSGPACK_PP_INTERCEPT_19
+# define MSGPACK_PP_INTERCEPT_20
+# define MSGPACK_PP_INTERCEPT_21
+# define MSGPACK_PP_INTERCEPT_22
+# define MSGPACK_PP_INTERCEPT_23
+# define MSGPACK_PP_INTERCEPT_24
+# define MSGPACK_PP_INTERCEPT_25
+# define MSGPACK_PP_INTERCEPT_26
+# define MSGPACK_PP_INTERCEPT_27
+# define MSGPACK_PP_INTERCEPT_28
+# define MSGPACK_PP_INTERCEPT_29
+# define MSGPACK_PP_INTERCEPT_30
+# define MSGPACK_PP_INTERCEPT_31
+# define MSGPACK_PP_INTERCEPT_32
+# define MSGPACK_PP_INTERCEPT_33
+# define MSGPACK_PP_INTERCEPT_34
+# define MSGPACK_PP_INTERCEPT_35
+# define MSGPACK_PP_INTERCEPT_36
+# define MSGPACK_PP_INTERCEPT_37
+# define MSGPACK_PP_INTERCEPT_38
+# define MSGPACK_PP_INTERCEPT_39
+# define MSGPACK_PP_INTERCEPT_40
+# define MSGPACK_PP_INTERCEPT_41
+# define MSGPACK_PP_INTERCEPT_42
+# define MSGPACK_PP_INTERCEPT_43
+# define MSGPACK_PP_INTERCEPT_44
+# define MSGPACK_PP_INTERCEPT_45
+# define MSGPACK_PP_INTERCEPT_46
+# define MSGPACK_PP_INTERCEPT_47
+# define MSGPACK_PP_INTERCEPT_48
+# define MSGPACK_PP_INTERCEPT_49
+# define MSGPACK_PP_INTERCEPT_50
+# define MSGPACK_PP_INTERCEPT_51
+# define MSGPACK_PP_INTERCEPT_52
+# define MSGPACK_PP_INTERCEPT_53
+# define MSGPACK_PP_INTERCEPT_54
+# define MSGPACK_PP_INTERCEPT_55
+# define MSGPACK_PP_INTERCEPT_56
+# define MSGPACK_PP_INTERCEPT_57
+# define MSGPACK_PP_INTERCEPT_58
+# define MSGPACK_PP_INTERCEPT_59
+# define MSGPACK_PP_INTERCEPT_60
+# define MSGPACK_PP_INTERCEPT_61
+# define MSGPACK_PP_INTERCEPT_62
+# define MSGPACK_PP_INTERCEPT_63
+# define MSGPACK_PP_INTERCEPT_64
+# define MSGPACK_PP_INTERCEPT_65
+# define MSGPACK_PP_INTERCEPT_66
+# define MSGPACK_PP_INTERCEPT_67
+# define MSGPACK_PP_INTERCEPT_68
+# define MSGPACK_PP_INTERCEPT_69
+# define MSGPACK_PP_INTERCEPT_70
+# define MSGPACK_PP_INTERCEPT_71
+# define MSGPACK_PP_INTERCEPT_72
+# define MSGPACK_PP_INTERCEPT_73
+# define MSGPACK_PP_INTERCEPT_74
+# define MSGPACK_PP_INTERCEPT_75
+# define MSGPACK_PP_INTERCEPT_76
+# define MSGPACK_PP_INTERCEPT_77
+# define MSGPACK_PP_INTERCEPT_78
+# define MSGPACK_PP_INTERCEPT_79
+# define MSGPACK_PP_INTERCEPT_80
+# define MSGPACK_PP_INTERCEPT_81
+# define MSGPACK_PP_INTERCEPT_82
+# define MSGPACK_PP_INTERCEPT_83
+# define MSGPACK_PP_INTERCEPT_84
+# define MSGPACK_PP_INTERCEPT_85
+# define MSGPACK_PP_INTERCEPT_86
+# define MSGPACK_PP_INTERCEPT_87
+# define MSGPACK_PP_INTERCEPT_88
+# define MSGPACK_PP_INTERCEPT_89
+# define MSGPACK_PP_INTERCEPT_90
+# define MSGPACK_PP_INTERCEPT_91
+# define MSGPACK_PP_INTERCEPT_92
+# define MSGPACK_PP_INTERCEPT_93
+# define MSGPACK_PP_INTERCEPT_94
+# define MSGPACK_PP_INTERCEPT_95
+# define MSGPACK_PP_INTERCEPT_96
+# define MSGPACK_PP_INTERCEPT_97
+# define MSGPACK_PP_INTERCEPT_98
+# define MSGPACK_PP_INTERCEPT_99
+# define MSGPACK_PP_INTERCEPT_100
+# define MSGPACK_PP_INTERCEPT_101
+# define MSGPACK_PP_INTERCEPT_102
+# define MSGPACK_PP_INTERCEPT_103
+# define MSGPACK_PP_INTERCEPT_104
+# define MSGPACK_PP_INTERCEPT_105
+# define MSGPACK_PP_INTERCEPT_106
+# define MSGPACK_PP_INTERCEPT_107
+# define MSGPACK_PP_INTERCEPT_108
+# define MSGPACK_PP_INTERCEPT_109
+# define MSGPACK_PP_INTERCEPT_110
+# define MSGPACK_PP_INTERCEPT_111
+# define MSGPACK_PP_INTERCEPT_112
+# define MSGPACK_PP_INTERCEPT_113
+# define MSGPACK_PP_INTERCEPT_114
+# define MSGPACK_PP_INTERCEPT_115
+# define MSGPACK_PP_INTERCEPT_116
+# define MSGPACK_PP_INTERCEPT_117
+# define MSGPACK_PP_INTERCEPT_118
+# define MSGPACK_PP_INTERCEPT_119
+# define MSGPACK_PP_INTERCEPT_120
+# define MSGPACK_PP_INTERCEPT_121
+# define MSGPACK_PP_INTERCEPT_122
+# define MSGPACK_PP_INTERCEPT_123
+# define MSGPACK_PP_INTERCEPT_124
+# define MSGPACK_PP_INTERCEPT_125
+# define MSGPACK_PP_INTERCEPT_126
+# define MSGPACK_PP_INTERCEPT_127
+# define MSGPACK_PP_INTERCEPT_128
+# define MSGPACK_PP_INTERCEPT_129
+# define MSGPACK_PP_INTERCEPT_130
+# define MSGPACK_PP_INTERCEPT_131
+# define MSGPACK_PP_INTERCEPT_132
+# define MSGPACK_PP_INTERCEPT_133
+# define MSGPACK_PP_INTERCEPT_134
+# define MSGPACK_PP_INTERCEPT_135
+# define MSGPACK_PP_INTERCEPT_136
+# define MSGPACK_PP_INTERCEPT_137
+# define MSGPACK_PP_INTERCEPT_138
+# define MSGPACK_PP_INTERCEPT_139
+# define MSGPACK_PP_INTERCEPT_140
+# define MSGPACK_PP_INTERCEPT_141
+# define MSGPACK_PP_INTERCEPT_142
+# define MSGPACK_PP_INTERCEPT_143
+# define MSGPACK_PP_INTERCEPT_144
+# define MSGPACK_PP_INTERCEPT_145
+# define MSGPACK_PP_INTERCEPT_146
+# define MSGPACK_PP_INTERCEPT_147
+# define MSGPACK_PP_INTERCEPT_148
+# define MSGPACK_PP_INTERCEPT_149
+# define MSGPACK_PP_INTERCEPT_150
+# define MSGPACK_PP_INTERCEPT_151
+# define MSGPACK_PP_INTERCEPT_152
+# define MSGPACK_PP_INTERCEPT_153
+# define MSGPACK_PP_INTERCEPT_154
+# define MSGPACK_PP_INTERCEPT_155
+# define MSGPACK_PP_INTERCEPT_156
+# define MSGPACK_PP_INTERCEPT_157
+# define MSGPACK_PP_INTERCEPT_158
+# define MSGPACK_PP_INTERCEPT_159
+# define MSGPACK_PP_INTERCEPT_160
+# define MSGPACK_PP_INTERCEPT_161
+# define MSGPACK_PP_INTERCEPT_162
+# define MSGPACK_PP_INTERCEPT_163
+# define MSGPACK_PP_INTERCEPT_164
+# define MSGPACK_PP_INTERCEPT_165
+# define MSGPACK_PP_INTERCEPT_166
+# define MSGPACK_PP_INTERCEPT_167
+# define MSGPACK_PP_INTERCEPT_168
+# define MSGPACK_PP_INTERCEPT_169
+# define MSGPACK_PP_INTERCEPT_170
+# define MSGPACK_PP_INTERCEPT_171
+# define MSGPACK_PP_INTERCEPT_172
+# define MSGPACK_PP_INTERCEPT_173
+# define MSGPACK_PP_INTERCEPT_174
+# define MSGPACK_PP_INTERCEPT_175
+# define MSGPACK_PP_INTERCEPT_176
+# define MSGPACK_PP_INTERCEPT_177
+# define MSGPACK_PP_INTERCEPT_178
+# define MSGPACK_PP_INTERCEPT_179
+# define MSGPACK_PP_INTERCEPT_180
+# define MSGPACK_PP_INTERCEPT_181
+# define MSGPACK_PP_INTERCEPT_182
+# define MSGPACK_PP_INTERCEPT_183
+# define MSGPACK_PP_INTERCEPT_184
+# define MSGPACK_PP_INTERCEPT_185
+# define MSGPACK_PP_INTERCEPT_186
+# define MSGPACK_PP_INTERCEPT_187
+# define MSGPACK_PP_INTERCEPT_188
+# define MSGPACK_PP_INTERCEPT_189
+# define MSGPACK_PP_INTERCEPT_190
+# define MSGPACK_PP_INTERCEPT_191
+# define MSGPACK_PP_INTERCEPT_192
+# define MSGPACK_PP_INTERCEPT_193
+# define MSGPACK_PP_INTERCEPT_194
+# define MSGPACK_PP_INTERCEPT_195
+# define MSGPACK_PP_INTERCEPT_196
+# define MSGPACK_PP_INTERCEPT_197
+# define MSGPACK_PP_INTERCEPT_198
+# define MSGPACK_PP_INTERCEPT_199
+# define MSGPACK_PP_INTERCEPT_200
+# define MSGPACK_PP_INTERCEPT_201
+# define MSGPACK_PP_INTERCEPT_202
+# define MSGPACK_PP_INTERCEPT_203
+# define MSGPACK_PP_INTERCEPT_204
+# define MSGPACK_PP_INTERCEPT_205
+# define MSGPACK_PP_INTERCEPT_206
+# define MSGPACK_PP_INTERCEPT_207
+# define MSGPACK_PP_INTERCEPT_208
+# define MSGPACK_PP_INTERCEPT_209
+# define MSGPACK_PP_INTERCEPT_210
+# define MSGPACK_PP_INTERCEPT_211
+# define MSGPACK_PP_INTERCEPT_212
+# define MSGPACK_PP_INTERCEPT_213
+# define MSGPACK_PP_INTERCEPT_214
+# define MSGPACK_PP_INTERCEPT_215
+# define MSGPACK_PP_INTERCEPT_216
+# define MSGPACK_PP_INTERCEPT_217
+# define MSGPACK_PP_INTERCEPT_218
+# define MSGPACK_PP_INTERCEPT_219
+# define MSGPACK_PP_INTERCEPT_220
+# define MSGPACK_PP_INTERCEPT_221
+# define MSGPACK_PP_INTERCEPT_222
+# define MSGPACK_PP_INTERCEPT_223
+# define MSGPACK_PP_INTERCEPT_224
+# define MSGPACK_PP_INTERCEPT_225
+# define MSGPACK_PP_INTERCEPT_226
+# define MSGPACK_PP_INTERCEPT_227
+# define MSGPACK_PP_INTERCEPT_228
+# define MSGPACK_PP_INTERCEPT_229
+# define MSGPACK_PP_INTERCEPT_230
+# define MSGPACK_PP_INTERCEPT_231
+# define MSGPACK_PP_INTERCEPT_232
+# define MSGPACK_PP_INTERCEPT_233
+# define MSGPACK_PP_INTERCEPT_234
+# define MSGPACK_PP_INTERCEPT_235
+# define MSGPACK_PP_INTERCEPT_236
+# define MSGPACK_PP_INTERCEPT_237
+# define MSGPACK_PP_INTERCEPT_238
+# define MSGPACK_PP_INTERCEPT_239
+# define MSGPACK_PP_INTERCEPT_240
+# define MSGPACK_PP_INTERCEPT_241
+# define MSGPACK_PP_INTERCEPT_242
+# define MSGPACK_PP_INTERCEPT_243
+# define MSGPACK_PP_INTERCEPT_244
+# define MSGPACK_PP_INTERCEPT_245
+# define MSGPACK_PP_INTERCEPT_246
+# define MSGPACK_PP_INTERCEPT_247
+# define MSGPACK_PP_INTERCEPT_248
+# define MSGPACK_PP_INTERCEPT_249
+# define MSGPACK_PP_INTERCEPT_250
+# define MSGPACK_PP_INTERCEPT_251
+# define MSGPACK_PP_INTERCEPT_252
+# define MSGPACK_PP_INTERCEPT_253
+# define MSGPACK_PP_INTERCEPT_254
+# define MSGPACK_PP_INTERCEPT_255
+# define MSGPACK_PP_INTERCEPT_256
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/facilities/is_1.hpp b/third_party/msgpack/include/msgpack/preprocessor/facilities/is_1.hpp
new file mode 100644
index 0000000000..0a85076e31
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/facilities/is_1.hpp
@@ -0,0 +1,23 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2003.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_FACILITIES_IS_1_HPP
+# define MSGPACK_PREPROCESSOR_FACILITIES_IS_1_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/facilities/is_empty.hpp>
+#
+# /* MSGPACK_PP_IS_1 */
+#
+# define MSGPACK_PP_IS_1(x) MSGPACK_PP_IS_EMPTY(MSGPACK_PP_CAT(MSGPACK_PP_IS_1_HELPER_, x))
+# define MSGPACK_PP_IS_1_HELPER_1
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/facilities/is_empty.hpp b/third_party/msgpack/include/msgpack/preprocessor/facilities/is_empty.hpp
new file mode 100644
index 0000000000..32d3bfbd12
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/facilities/is_empty.hpp
@@ -0,0 +1,56 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2003.
+# * (C) Copyright Edward Diener 2014.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_FACILITIES_IS_EMPTY_HPP
+# define MSGPACK_PREPROCESSOR_FACILITIES_IS_EMPTY_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# if MSGPACK_PP_VARIADICS
+#
+# include <msgpack/preprocessor/facilities/is_empty_variadic.hpp>
+#
+# else
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MSVC() && ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# include <msgpack/preprocessor/tuple/elem.hpp>
+# include <msgpack/preprocessor/facilities/identity.hpp>
+# else
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/detail/split.hpp>
+# endif
+#
+# /* MSGPACK_PP_IS_EMPTY */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MSVC() && ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_IS_EMPTY(x) MSGPACK_PP_IS_EMPTY_I(x MSGPACK_PP_IS_EMPTY_HELPER)
+# define MSGPACK_PP_IS_EMPTY_I(contents) MSGPACK_PP_TUPLE_ELEM(2, 1, (MSGPACK_PP_IS_EMPTY_DEF_ ## contents()))
+# define MSGPACK_PP_IS_EMPTY_DEF_MSGPACK_PP_IS_EMPTY_HELPER 1, MSGPACK_PP_IDENTITY(1)
+# define MSGPACK_PP_IS_EMPTY_HELPER() , 0
+# else
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MSVC()
+# define MSGPACK_PP_IS_EMPTY(x) MSGPACK_PP_IS_EMPTY_I(MSGPACK_PP_IS_EMPTY_HELPER x ())
+# define MSGPACK_PP_IS_EMPTY_I(test) MSGPACK_PP_IS_EMPTY_II(MSGPACK_PP_SPLIT(0, MSGPACK_PP_CAT(MSGPACK_PP_IS_EMPTY_DEF_, test)))
+# define MSGPACK_PP_IS_EMPTY_II(id) id
+# else
+# define MSGPACK_PP_IS_EMPTY(x) MSGPACK_PP_IS_EMPTY_I((MSGPACK_PP_IS_EMPTY_HELPER x ()))
+# define MSGPACK_PP_IS_EMPTY_I(par) MSGPACK_PP_IS_EMPTY_II ## par
+# define MSGPACK_PP_IS_EMPTY_II(test) MSGPACK_PP_SPLIT(0, MSGPACK_PP_CAT(MSGPACK_PP_IS_EMPTY_DEF_, test))
+# endif
+# define MSGPACK_PP_IS_EMPTY_HELPER() 1
+# define MSGPACK_PP_IS_EMPTY_DEF_1 1, MSGPACK_PP_NIL
+# define MSGPACK_PP_IS_EMPTY_DEF_MSGPACK_PP_IS_EMPTY_HELPER 0, MSGPACK_PP_NIL
+# endif
+#
+# endif /* MSGPACK_PP_VARIADICS */
+#
+# endif /* MSGPACK_PREPROCESSOR_FACILITIES_IS_EMPTY_HPP */
diff --git a/third_party/msgpack/include/msgpack/preprocessor/facilities/is_empty_or_1.hpp b/third_party/msgpack/include/msgpack/preprocessor/facilities/is_empty_or_1.hpp
new file mode 100644
index 0000000000..7fc5bb09e5
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/facilities/is_empty_or_1.hpp
@@ -0,0 +1,31 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2003.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_FACILITIES_IS_EMPTY_OR_1_HPP
+# define MSGPACK_PREPROCESSOR_FACILITIES_IS_EMPTY_OR_1_HPP
+#
+# include <msgpack/preprocessor/control/iif.hpp>
+# include <msgpack/preprocessor/facilities/empty.hpp>
+# include <msgpack/preprocessor/facilities/identity.hpp>
+# include <msgpack/preprocessor/facilities/is_1.hpp>
+# include <msgpack/preprocessor/facilities/is_empty.hpp>
+#
+# /* MSGPACK_PP_IS_EMPTY_OR_1 */
+#
+# define MSGPACK_PP_IS_EMPTY_OR_1(x) \
+ MSGPACK_PP_IIF( \
+ MSGPACK_PP_IS_EMPTY(x MSGPACK_PP_EMPTY()), \
+ MSGPACK_PP_IDENTITY(1), \
+ MSGPACK_PP_IS_1 \
+ )(x) \
+ /**/
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/facilities/is_empty_variadic.hpp b/third_party/msgpack/include/msgpack/preprocessor/facilities/is_empty_variadic.hpp
new file mode 100644
index 0000000000..8a39d44d3c
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/facilities/is_empty_variadic.hpp
@@ -0,0 +1,57 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2014.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_FACILITIES_IS_EMPTY_VARIADIC_HPP
+# define MSGPACK_PREPROCESSOR_FACILITIES_IS_EMPTY_VARIADIC_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# if MSGPACK_PP_VARIADICS
+#
+# include <msgpack/preprocessor/punctuation/is_begin_parens.hpp>
+# include <msgpack/preprocessor/facilities/detail/is_empty.hpp>
+#
+#if MSGPACK_PP_VARIADICS_MSVC && _MSC_VER <= 1400
+#
+#define MSGPACK_PP_IS_EMPTY(param) \
+ MSGPACK_PP_DETAIL_IS_EMPTY_IIF \
+ ( \
+ MSGPACK_PP_IS_BEGIN_PARENS \
+ ( \
+ param \
+ ) \
+ ) \
+ ( \
+ MSGPACK_PP_IS_EMPTY_ZERO, \
+ MSGPACK_PP_DETAIL_IS_EMPTY_PROCESS \
+ ) \
+ (param) \
+/**/
+#define MSGPACK_PP_IS_EMPTY_ZERO(param) 0
+# else
+#define MSGPACK_PP_IS_EMPTY(...) \
+ MSGPACK_PP_DETAIL_IS_EMPTY_IIF \
+ ( \
+ MSGPACK_PP_IS_BEGIN_PARENS \
+ ( \
+ __VA_ARGS__ \
+ ) \
+ ) \
+ ( \
+ MSGPACK_PP_IS_EMPTY_ZERO, \
+ MSGPACK_PP_DETAIL_IS_EMPTY_PROCESS \
+ ) \
+ (__VA_ARGS__) \
+/**/
+#define MSGPACK_PP_IS_EMPTY_ZERO(...) 0
+# endif /* MSGPACK_PP_VARIADICS_MSVC && _MSC_VER <= 1400 */
+# endif /* MSGPACK_PP_VARIADICS */
+# endif /* MSGPACK_PREPROCESSOR_FACILITIES_IS_EMPTY_VARIADIC_HPP */
diff --git a/third_party/msgpack/include/msgpack/preprocessor/facilities/overload.hpp b/third_party/msgpack/include/msgpack/preprocessor/facilities/overload.hpp
new file mode 100644
index 0000000000..58d40dcf69
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/facilities/overload.hpp
@@ -0,0 +1,25 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2011. *
+# * (C) Copyright Edward Diener 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_FACILITIES_OVERLOAD_HPP
+# define MSGPACK_PREPROCESSOR_FACILITIES_OVERLOAD_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/variadic/size.hpp>
+#
+# /* MSGPACK_PP_OVERLOAD */
+#
+# if MSGPACK_PP_VARIADICS
+# define MSGPACK_PP_OVERLOAD(prefix, ...) MSGPACK_PP_CAT(prefix, MSGPACK_PP_VARIADIC_SIZE(__VA_ARGS__))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/for.hpp b/third_party/msgpack/include/msgpack/preprocessor/for.hpp
new file mode 100644
index 0000000000..8111a38733
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/for.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_FOR_HPP
+# define MSGPACK_PREPROCESSOR_FOR_HPP
+#
+# include <msgpack/preprocessor/repetition/for.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/identity.hpp b/third_party/msgpack/include/msgpack/preprocessor/identity.hpp
new file mode 100644
index 0000000000..e22bd1318d
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/identity.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_IDENTITY_HPP
+# define MSGPACK_PREPROCESSOR_IDENTITY_HPP
+#
+# include <msgpack/preprocessor/facilities/identity.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/if.hpp b/third_party/msgpack/include/msgpack/preprocessor/if.hpp
new file mode 100644
index 0000000000..94be413ad2
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/if.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_IF_HPP
+# define MSGPACK_PREPROCESSOR_IF_HPP
+#
+# include <msgpack/preprocessor/control/if.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/inc.hpp b/third_party/msgpack/include/msgpack/preprocessor/inc.hpp
new file mode 100644
index 0000000000..99e03e4280
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/inc.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_INC_HPP
+# define MSGPACK_PREPROCESSOR_INC_HPP
+#
+# include <msgpack/preprocessor/arithmetic/inc.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/iterate.hpp b/third_party/msgpack/include/msgpack/preprocessor/iterate.hpp
new file mode 100644
index 0000000000..6b72a94735
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/iterate.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ITERATE_HPP
+# define MSGPACK_PREPROCESSOR_ITERATE_HPP
+#
+# include <msgpack/preprocessor/iteration/iterate.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/iteration.hpp b/third_party/msgpack/include/msgpack/preprocessor/iteration.hpp
new file mode 100644
index 0000000000..335d653f34
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/iteration.hpp
@@ -0,0 +1,19 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ITERATION_HPP
+# define MSGPACK_PREPROCESSOR_ITERATION_HPP
+#
+# include <msgpack/preprocessor/iteration/iterate.hpp>
+# include <msgpack/preprocessor/iteration/local.hpp>
+# include <msgpack/preprocessor/iteration/self.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/lower1.hpp b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/lower1.hpp
new file mode 100644
index 0000000000..9bde100444
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/lower1.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <msgpack/preprocessor/slot/detail/shared.hpp>
+#
+# undef MSGPACK_PP_ITERATION_START_1
+#
+# undef MSGPACK_PP_ITERATION_START_1_DIGIT_1
+# undef MSGPACK_PP_ITERATION_START_1_DIGIT_2
+# undef MSGPACK_PP_ITERATION_START_1_DIGIT_3
+# undef MSGPACK_PP_ITERATION_START_1_DIGIT_4
+# undef MSGPACK_PP_ITERATION_START_1_DIGIT_5
+# undef MSGPACK_PP_ITERATION_START_1_DIGIT_6
+# undef MSGPACK_PP_ITERATION_START_1_DIGIT_7
+# undef MSGPACK_PP_ITERATION_START_1_DIGIT_8
+# undef MSGPACK_PP_ITERATION_START_1_DIGIT_9
+# undef MSGPACK_PP_ITERATION_START_1_DIGIT_10
+#
+# if MSGPACK_PP_SLOT_TEMP_3 == 0
+# define MSGPACK_PP_ITERATION_START_1_DIGIT_3 0
+# elif MSGPACK_PP_SLOT_TEMP_3 == 1
+# define MSGPACK_PP_ITERATION_START_1_DIGIT_3 1
+# elif MSGPACK_PP_SLOT_TEMP_3 == 2
+# define MSGPACK_PP_ITERATION_START_1_DIGIT_3 2
+# elif MSGPACK_PP_SLOT_TEMP_3 == 3
+# define MSGPACK_PP_ITERATION_START_1_DIGIT_3 3
+# elif MSGPACK_PP_SLOT_TEMP_3 == 4
+# define MSGPACK_PP_ITERATION_START_1_DIGIT_3 4
+# elif MSGPACK_PP_SLOT_TEMP_3 == 5
+# define MSGPACK_PP_ITERATION_START_1_DIGIT_3 5
+# elif MSGPACK_PP_SLOT_TEMP_3 == 6
+# define MSGPACK_PP_ITERATION_START_1_DIGIT_3 6
+# elif MSGPACK_PP_SLOT_TEMP_3 == 7
+# define MSGPACK_PP_ITERATION_START_1_DIGIT_3 7
+# elif MSGPACK_PP_SLOT_TEMP_3 == 8
+# define MSGPACK_PP_ITERATION_START_1_DIGIT_3 8
+# elif MSGPACK_PP_SLOT_TEMP_3 == 9
+# define MSGPACK_PP_ITERATION_START_1_DIGIT_3 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_2 == 0
+# define MSGPACK_PP_ITERATION_START_1_DIGIT_2 0
+# elif MSGPACK_PP_SLOT_TEMP_2 == 1
+# define MSGPACK_PP_ITERATION_START_1_DIGIT_2 1
+# elif MSGPACK_PP_SLOT_TEMP_2 == 2
+# define MSGPACK_PP_ITERATION_START_1_DIGIT_2 2
+# elif MSGPACK_PP_SLOT_TEMP_2 == 3
+# define MSGPACK_PP_ITERATION_START_1_DIGIT_2 3
+# elif MSGPACK_PP_SLOT_TEMP_2 == 4
+# define MSGPACK_PP_ITERATION_START_1_DIGIT_2 4
+# elif MSGPACK_PP_SLOT_TEMP_2 == 5
+# define MSGPACK_PP_ITERATION_START_1_DIGIT_2 5
+# elif MSGPACK_PP_SLOT_TEMP_2 == 6
+# define MSGPACK_PP_ITERATION_START_1_DIGIT_2 6
+# elif MSGPACK_PP_SLOT_TEMP_2 == 7
+# define MSGPACK_PP_ITERATION_START_1_DIGIT_2 7
+# elif MSGPACK_PP_SLOT_TEMP_2 == 8
+# define MSGPACK_PP_ITERATION_START_1_DIGIT_2 8
+# elif MSGPACK_PP_SLOT_TEMP_2 == 9
+# define MSGPACK_PP_ITERATION_START_1_DIGIT_2 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_1 == 0
+# define MSGPACK_PP_ITERATION_START_1_DIGIT_1 0
+# elif MSGPACK_PP_SLOT_TEMP_1 == 1
+# define MSGPACK_PP_ITERATION_START_1_DIGIT_1 1
+# elif MSGPACK_PP_SLOT_TEMP_1 == 2
+# define MSGPACK_PP_ITERATION_START_1_DIGIT_1 2
+# elif MSGPACK_PP_SLOT_TEMP_1 == 3
+# define MSGPACK_PP_ITERATION_START_1_DIGIT_1 3
+# elif MSGPACK_PP_SLOT_TEMP_1 == 4
+# define MSGPACK_PP_ITERATION_START_1_DIGIT_1 4
+# elif MSGPACK_PP_SLOT_TEMP_1 == 5
+# define MSGPACK_PP_ITERATION_START_1_DIGIT_1 5
+# elif MSGPACK_PP_SLOT_TEMP_1 == 6
+# define MSGPACK_PP_ITERATION_START_1_DIGIT_1 6
+# elif MSGPACK_PP_SLOT_TEMP_1 == 7
+# define MSGPACK_PP_ITERATION_START_1_DIGIT_1 7
+# elif MSGPACK_PP_SLOT_TEMP_1 == 8
+# define MSGPACK_PP_ITERATION_START_1_DIGIT_1 8
+# elif MSGPACK_PP_SLOT_TEMP_1 == 9
+# define MSGPACK_PP_ITERATION_START_1_DIGIT_1 9
+# endif
+#
+# if MSGPACK_PP_ITERATION_START_1_DIGIT_3
+# define MSGPACK_PP_ITERATION_START_1 MSGPACK_PP_SLOT_CC_3(MSGPACK_PP_ITERATION_START_1_DIGIT_3, MSGPACK_PP_ITERATION_START_1_DIGIT_2, MSGPACK_PP_ITERATION_START_1_DIGIT_1)
+# elif MSGPACK_PP_ITERATION_START_1_DIGIT_2
+# define MSGPACK_PP_ITERATION_START_1 MSGPACK_PP_SLOT_CC_2(MSGPACK_PP_ITERATION_START_1_DIGIT_2, MSGPACK_PP_ITERATION_START_1_DIGIT_1)
+# else
+# define MSGPACK_PP_ITERATION_START_1 MSGPACK_PP_ITERATION_START_1_DIGIT_1
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/lower2.hpp b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/lower2.hpp
new file mode 100644
index 0000000000..404b298490
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/lower2.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <msgpack/preprocessor/slot/detail/shared.hpp>
+#
+# undef MSGPACK_PP_ITERATION_START_2
+#
+# undef MSGPACK_PP_ITERATION_START_2_DIGIT_1
+# undef MSGPACK_PP_ITERATION_START_2_DIGIT_2
+# undef MSGPACK_PP_ITERATION_START_2_DIGIT_3
+# undef MSGPACK_PP_ITERATION_START_2_DIGIT_4
+# undef MSGPACK_PP_ITERATION_START_2_DIGIT_5
+# undef MSGPACK_PP_ITERATION_START_2_DIGIT_6
+# undef MSGPACK_PP_ITERATION_START_2_DIGIT_7
+# undef MSGPACK_PP_ITERATION_START_2_DIGIT_8
+# undef MSGPACK_PP_ITERATION_START_2_DIGIT_9
+# undef MSGPACK_PP_ITERATION_START_2_DIGIT_10
+#
+# if MSGPACK_PP_SLOT_TEMP_3 == 0
+# define MSGPACK_PP_ITERATION_START_2_DIGIT_3 0
+# elif MSGPACK_PP_SLOT_TEMP_3 == 1
+# define MSGPACK_PP_ITERATION_START_2_DIGIT_3 1
+# elif MSGPACK_PP_SLOT_TEMP_3 == 2
+# define MSGPACK_PP_ITERATION_START_2_DIGIT_3 2
+# elif MSGPACK_PP_SLOT_TEMP_3 == 3
+# define MSGPACK_PP_ITERATION_START_2_DIGIT_3 3
+# elif MSGPACK_PP_SLOT_TEMP_3 == 4
+# define MSGPACK_PP_ITERATION_START_2_DIGIT_3 4
+# elif MSGPACK_PP_SLOT_TEMP_3 == 5
+# define MSGPACK_PP_ITERATION_START_2_DIGIT_3 5
+# elif MSGPACK_PP_SLOT_TEMP_3 == 6
+# define MSGPACK_PP_ITERATION_START_2_DIGIT_3 6
+# elif MSGPACK_PP_SLOT_TEMP_3 == 7
+# define MSGPACK_PP_ITERATION_START_2_DIGIT_3 7
+# elif MSGPACK_PP_SLOT_TEMP_3 == 8
+# define MSGPACK_PP_ITERATION_START_2_DIGIT_3 8
+# elif MSGPACK_PP_SLOT_TEMP_3 == 9
+# define MSGPACK_PP_ITERATION_START_2_DIGIT_3 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_2 == 0
+# define MSGPACK_PP_ITERATION_START_2_DIGIT_2 0
+# elif MSGPACK_PP_SLOT_TEMP_2 == 1
+# define MSGPACK_PP_ITERATION_START_2_DIGIT_2 1
+# elif MSGPACK_PP_SLOT_TEMP_2 == 2
+# define MSGPACK_PP_ITERATION_START_2_DIGIT_2 2
+# elif MSGPACK_PP_SLOT_TEMP_2 == 3
+# define MSGPACK_PP_ITERATION_START_2_DIGIT_2 3
+# elif MSGPACK_PP_SLOT_TEMP_2 == 4
+# define MSGPACK_PP_ITERATION_START_2_DIGIT_2 4
+# elif MSGPACK_PP_SLOT_TEMP_2 == 5
+# define MSGPACK_PP_ITERATION_START_2_DIGIT_2 5
+# elif MSGPACK_PP_SLOT_TEMP_2 == 6
+# define MSGPACK_PP_ITERATION_START_2_DIGIT_2 6
+# elif MSGPACK_PP_SLOT_TEMP_2 == 7
+# define MSGPACK_PP_ITERATION_START_2_DIGIT_2 7
+# elif MSGPACK_PP_SLOT_TEMP_2 == 8
+# define MSGPACK_PP_ITERATION_START_2_DIGIT_2 8
+# elif MSGPACK_PP_SLOT_TEMP_2 == 9
+# define MSGPACK_PP_ITERATION_START_2_DIGIT_2 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_1 == 0
+# define MSGPACK_PP_ITERATION_START_2_DIGIT_1 0
+# elif MSGPACK_PP_SLOT_TEMP_1 == 1
+# define MSGPACK_PP_ITERATION_START_2_DIGIT_1 1
+# elif MSGPACK_PP_SLOT_TEMP_1 == 2
+# define MSGPACK_PP_ITERATION_START_2_DIGIT_1 2
+# elif MSGPACK_PP_SLOT_TEMP_1 == 3
+# define MSGPACK_PP_ITERATION_START_2_DIGIT_1 3
+# elif MSGPACK_PP_SLOT_TEMP_1 == 4
+# define MSGPACK_PP_ITERATION_START_2_DIGIT_1 4
+# elif MSGPACK_PP_SLOT_TEMP_1 == 5
+# define MSGPACK_PP_ITERATION_START_2_DIGIT_1 5
+# elif MSGPACK_PP_SLOT_TEMP_1 == 6
+# define MSGPACK_PP_ITERATION_START_2_DIGIT_1 6
+# elif MSGPACK_PP_SLOT_TEMP_1 == 7
+# define MSGPACK_PP_ITERATION_START_2_DIGIT_1 7
+# elif MSGPACK_PP_SLOT_TEMP_1 == 8
+# define MSGPACK_PP_ITERATION_START_2_DIGIT_1 8
+# elif MSGPACK_PP_SLOT_TEMP_1 == 9
+# define MSGPACK_PP_ITERATION_START_2_DIGIT_1 9
+# endif
+#
+# if MSGPACK_PP_ITERATION_START_2_DIGIT_3
+# define MSGPACK_PP_ITERATION_START_2 MSGPACK_PP_SLOT_CC_3(MSGPACK_PP_ITERATION_START_2_DIGIT_3, MSGPACK_PP_ITERATION_START_2_DIGIT_2, MSGPACK_PP_ITERATION_START_2_DIGIT_1)
+# elif MSGPACK_PP_ITERATION_START_2_DIGIT_2
+# define MSGPACK_PP_ITERATION_START_2 MSGPACK_PP_SLOT_CC_2(MSGPACK_PP_ITERATION_START_2_DIGIT_2, MSGPACK_PP_ITERATION_START_2_DIGIT_1)
+# else
+# define MSGPACK_PP_ITERATION_START_2 MSGPACK_PP_ITERATION_START_2_DIGIT_1
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/lower3.hpp b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/lower3.hpp
new file mode 100644
index 0000000000..81aac2edbb
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/lower3.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <msgpack/preprocessor/slot/detail/shared.hpp>
+#
+# undef MSGPACK_PP_ITERATION_START_3
+#
+# undef MSGPACK_PP_ITERATION_START_3_DIGIT_1
+# undef MSGPACK_PP_ITERATION_START_3_DIGIT_2
+# undef MSGPACK_PP_ITERATION_START_3_DIGIT_3
+# undef MSGPACK_PP_ITERATION_START_3_DIGIT_4
+# undef MSGPACK_PP_ITERATION_START_3_DIGIT_5
+# undef MSGPACK_PP_ITERATION_START_3_DIGIT_6
+# undef MSGPACK_PP_ITERATION_START_3_DIGIT_7
+# undef MSGPACK_PP_ITERATION_START_3_DIGIT_8
+# undef MSGPACK_PP_ITERATION_START_3_DIGIT_9
+# undef MSGPACK_PP_ITERATION_START_3_DIGIT_10
+#
+# if MSGPACK_PP_SLOT_TEMP_3 == 0
+# define MSGPACK_PP_ITERATION_START_3_DIGIT_3 0
+# elif MSGPACK_PP_SLOT_TEMP_3 == 1
+# define MSGPACK_PP_ITERATION_START_3_DIGIT_3 1
+# elif MSGPACK_PP_SLOT_TEMP_3 == 2
+# define MSGPACK_PP_ITERATION_START_3_DIGIT_3 2
+# elif MSGPACK_PP_SLOT_TEMP_3 == 3
+# define MSGPACK_PP_ITERATION_START_3_DIGIT_3 3
+# elif MSGPACK_PP_SLOT_TEMP_3 == 4
+# define MSGPACK_PP_ITERATION_START_3_DIGIT_3 4
+# elif MSGPACK_PP_SLOT_TEMP_3 == 5
+# define MSGPACK_PP_ITERATION_START_3_DIGIT_3 5
+# elif MSGPACK_PP_SLOT_TEMP_3 == 6
+# define MSGPACK_PP_ITERATION_START_3_DIGIT_3 6
+# elif MSGPACK_PP_SLOT_TEMP_3 == 7
+# define MSGPACK_PP_ITERATION_START_3_DIGIT_3 7
+# elif MSGPACK_PP_SLOT_TEMP_3 == 8
+# define MSGPACK_PP_ITERATION_START_3_DIGIT_3 8
+# elif MSGPACK_PP_SLOT_TEMP_3 == 9
+# define MSGPACK_PP_ITERATION_START_3_DIGIT_3 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_2 == 0
+# define MSGPACK_PP_ITERATION_START_3_DIGIT_2 0
+# elif MSGPACK_PP_SLOT_TEMP_2 == 1
+# define MSGPACK_PP_ITERATION_START_3_DIGIT_2 1
+# elif MSGPACK_PP_SLOT_TEMP_2 == 2
+# define MSGPACK_PP_ITERATION_START_3_DIGIT_2 2
+# elif MSGPACK_PP_SLOT_TEMP_2 == 3
+# define MSGPACK_PP_ITERATION_START_3_DIGIT_2 3
+# elif MSGPACK_PP_SLOT_TEMP_2 == 4
+# define MSGPACK_PP_ITERATION_START_3_DIGIT_2 4
+# elif MSGPACK_PP_SLOT_TEMP_2 == 5
+# define MSGPACK_PP_ITERATION_START_3_DIGIT_2 5
+# elif MSGPACK_PP_SLOT_TEMP_2 == 6
+# define MSGPACK_PP_ITERATION_START_3_DIGIT_2 6
+# elif MSGPACK_PP_SLOT_TEMP_2 == 7
+# define MSGPACK_PP_ITERATION_START_3_DIGIT_2 7
+# elif MSGPACK_PP_SLOT_TEMP_2 == 8
+# define MSGPACK_PP_ITERATION_START_3_DIGIT_2 8
+# elif MSGPACK_PP_SLOT_TEMP_2 == 9
+# define MSGPACK_PP_ITERATION_START_3_DIGIT_2 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_1 == 0
+# define MSGPACK_PP_ITERATION_START_3_DIGIT_1 0
+# elif MSGPACK_PP_SLOT_TEMP_1 == 1
+# define MSGPACK_PP_ITERATION_START_3_DIGIT_1 1
+# elif MSGPACK_PP_SLOT_TEMP_1 == 2
+# define MSGPACK_PP_ITERATION_START_3_DIGIT_1 2
+# elif MSGPACK_PP_SLOT_TEMP_1 == 3
+# define MSGPACK_PP_ITERATION_START_3_DIGIT_1 3
+# elif MSGPACK_PP_SLOT_TEMP_1 == 4
+# define MSGPACK_PP_ITERATION_START_3_DIGIT_1 4
+# elif MSGPACK_PP_SLOT_TEMP_1 == 5
+# define MSGPACK_PP_ITERATION_START_3_DIGIT_1 5
+# elif MSGPACK_PP_SLOT_TEMP_1 == 6
+# define MSGPACK_PP_ITERATION_START_3_DIGIT_1 6
+# elif MSGPACK_PP_SLOT_TEMP_1 == 7
+# define MSGPACK_PP_ITERATION_START_3_DIGIT_1 7
+# elif MSGPACK_PP_SLOT_TEMP_1 == 8
+# define MSGPACK_PP_ITERATION_START_3_DIGIT_1 8
+# elif MSGPACK_PP_SLOT_TEMP_1 == 9
+# define MSGPACK_PP_ITERATION_START_3_DIGIT_1 9
+# endif
+#
+# if MSGPACK_PP_ITERATION_START_3_DIGIT_3
+# define MSGPACK_PP_ITERATION_START_3 MSGPACK_PP_SLOT_CC_3(MSGPACK_PP_ITERATION_START_3_DIGIT_3, MSGPACK_PP_ITERATION_START_3_DIGIT_2, MSGPACK_PP_ITERATION_START_3_DIGIT_1)
+# elif MSGPACK_PP_ITERATION_START_3_DIGIT_2
+# define MSGPACK_PP_ITERATION_START_3 MSGPACK_PP_SLOT_CC_2(MSGPACK_PP_ITERATION_START_3_DIGIT_2, MSGPACK_PP_ITERATION_START_3_DIGIT_1)
+# else
+# define MSGPACK_PP_ITERATION_START_3 MSGPACK_PP_ITERATION_START_3_DIGIT_1
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/lower4.hpp b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/lower4.hpp
new file mode 100644
index 0000000000..70dceecea2
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/lower4.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <msgpack/preprocessor/slot/detail/shared.hpp>
+#
+# undef MSGPACK_PP_ITERATION_START_4
+#
+# undef MSGPACK_PP_ITERATION_START_4_DIGIT_1
+# undef MSGPACK_PP_ITERATION_START_4_DIGIT_2
+# undef MSGPACK_PP_ITERATION_START_4_DIGIT_3
+# undef MSGPACK_PP_ITERATION_START_4_DIGIT_4
+# undef MSGPACK_PP_ITERATION_START_4_DIGIT_5
+# undef MSGPACK_PP_ITERATION_START_4_DIGIT_6
+# undef MSGPACK_PP_ITERATION_START_4_DIGIT_7
+# undef MSGPACK_PP_ITERATION_START_4_DIGIT_8
+# undef MSGPACK_PP_ITERATION_START_4_DIGIT_9
+# undef MSGPACK_PP_ITERATION_START_4_DIGIT_10
+#
+# if MSGPACK_PP_SLOT_TEMP_3 == 0
+# define MSGPACK_PP_ITERATION_START_4_DIGIT_3 0
+# elif MSGPACK_PP_SLOT_TEMP_3 == 1
+# define MSGPACK_PP_ITERATION_START_4_DIGIT_3 1
+# elif MSGPACK_PP_SLOT_TEMP_3 == 2
+# define MSGPACK_PP_ITERATION_START_4_DIGIT_3 2
+# elif MSGPACK_PP_SLOT_TEMP_3 == 3
+# define MSGPACK_PP_ITERATION_START_4_DIGIT_3 3
+# elif MSGPACK_PP_SLOT_TEMP_3 == 4
+# define MSGPACK_PP_ITERATION_START_4_DIGIT_3 4
+# elif MSGPACK_PP_SLOT_TEMP_3 == 5
+# define MSGPACK_PP_ITERATION_START_4_DIGIT_3 5
+# elif MSGPACK_PP_SLOT_TEMP_3 == 6
+# define MSGPACK_PP_ITERATION_START_4_DIGIT_3 6
+# elif MSGPACK_PP_SLOT_TEMP_3 == 7
+# define MSGPACK_PP_ITERATION_START_4_DIGIT_3 7
+# elif MSGPACK_PP_SLOT_TEMP_3 == 8
+# define MSGPACK_PP_ITERATION_START_4_DIGIT_3 8
+# elif MSGPACK_PP_SLOT_TEMP_3 == 9
+# define MSGPACK_PP_ITERATION_START_4_DIGIT_3 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_2 == 0
+# define MSGPACK_PP_ITERATION_START_4_DIGIT_2 0
+# elif MSGPACK_PP_SLOT_TEMP_2 == 1
+# define MSGPACK_PP_ITERATION_START_4_DIGIT_2 1
+# elif MSGPACK_PP_SLOT_TEMP_2 == 2
+# define MSGPACK_PP_ITERATION_START_4_DIGIT_2 2
+# elif MSGPACK_PP_SLOT_TEMP_2 == 3
+# define MSGPACK_PP_ITERATION_START_4_DIGIT_2 3
+# elif MSGPACK_PP_SLOT_TEMP_2 == 4
+# define MSGPACK_PP_ITERATION_START_4_DIGIT_2 4
+# elif MSGPACK_PP_SLOT_TEMP_2 == 5
+# define MSGPACK_PP_ITERATION_START_4_DIGIT_2 5
+# elif MSGPACK_PP_SLOT_TEMP_2 == 6
+# define MSGPACK_PP_ITERATION_START_4_DIGIT_2 6
+# elif MSGPACK_PP_SLOT_TEMP_2 == 7
+# define MSGPACK_PP_ITERATION_START_4_DIGIT_2 7
+# elif MSGPACK_PP_SLOT_TEMP_2 == 8
+# define MSGPACK_PP_ITERATION_START_4_DIGIT_2 8
+# elif MSGPACK_PP_SLOT_TEMP_2 == 9
+# define MSGPACK_PP_ITERATION_START_4_DIGIT_2 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_1 == 0
+# define MSGPACK_PP_ITERATION_START_4_DIGIT_1 0
+# elif MSGPACK_PP_SLOT_TEMP_1 == 1
+# define MSGPACK_PP_ITERATION_START_4_DIGIT_1 1
+# elif MSGPACK_PP_SLOT_TEMP_1 == 2
+# define MSGPACK_PP_ITERATION_START_4_DIGIT_1 2
+# elif MSGPACK_PP_SLOT_TEMP_1 == 3
+# define MSGPACK_PP_ITERATION_START_4_DIGIT_1 3
+# elif MSGPACK_PP_SLOT_TEMP_1 == 4
+# define MSGPACK_PP_ITERATION_START_4_DIGIT_1 4
+# elif MSGPACK_PP_SLOT_TEMP_1 == 5
+# define MSGPACK_PP_ITERATION_START_4_DIGIT_1 5
+# elif MSGPACK_PP_SLOT_TEMP_1 == 6
+# define MSGPACK_PP_ITERATION_START_4_DIGIT_1 6
+# elif MSGPACK_PP_SLOT_TEMP_1 == 7
+# define MSGPACK_PP_ITERATION_START_4_DIGIT_1 7
+# elif MSGPACK_PP_SLOT_TEMP_1 == 8
+# define MSGPACK_PP_ITERATION_START_4_DIGIT_1 8
+# elif MSGPACK_PP_SLOT_TEMP_1 == 9
+# define MSGPACK_PP_ITERATION_START_4_DIGIT_1 9
+# endif
+#
+# if MSGPACK_PP_ITERATION_START_4_DIGIT_3
+# define MSGPACK_PP_ITERATION_START_4 MSGPACK_PP_SLOT_CC_3(MSGPACK_PP_ITERATION_START_4_DIGIT_3, MSGPACK_PP_ITERATION_START_4_DIGIT_2, MSGPACK_PP_ITERATION_START_4_DIGIT_1)
+# elif MSGPACK_PP_ITERATION_START_4_DIGIT_2
+# define MSGPACK_PP_ITERATION_START_4 MSGPACK_PP_SLOT_CC_2(MSGPACK_PP_ITERATION_START_4_DIGIT_2, MSGPACK_PP_ITERATION_START_4_DIGIT_1)
+# else
+# define MSGPACK_PP_ITERATION_START_4 MSGPACK_PP_ITERATION_START_4_DIGIT_1
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/lower5.hpp b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/lower5.hpp
new file mode 100644
index 0000000000..d615ddb8e0
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/lower5.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <msgpack/preprocessor/slot/detail/shared.hpp>
+#
+# undef MSGPACK_PP_ITERATION_START_5
+#
+# undef MSGPACK_PP_ITERATION_START_5_DIGIT_1
+# undef MSGPACK_PP_ITERATION_START_5_DIGIT_2
+# undef MSGPACK_PP_ITERATION_START_5_DIGIT_3
+# undef MSGPACK_PP_ITERATION_START_5_DIGIT_4
+# undef MSGPACK_PP_ITERATION_START_5_DIGIT_5
+# undef MSGPACK_PP_ITERATION_START_5_DIGIT_6
+# undef MSGPACK_PP_ITERATION_START_5_DIGIT_7
+# undef MSGPACK_PP_ITERATION_START_5_DIGIT_8
+# undef MSGPACK_PP_ITERATION_START_5_DIGIT_9
+# undef MSGPACK_PP_ITERATION_START_5_DIGIT_10
+#
+# if MSGPACK_PP_SLOT_TEMP_3 == 0
+# define MSGPACK_PP_ITERATION_START_5_DIGIT_3 0
+# elif MSGPACK_PP_SLOT_TEMP_3 == 1
+# define MSGPACK_PP_ITERATION_START_5_DIGIT_3 1
+# elif MSGPACK_PP_SLOT_TEMP_3 == 2
+# define MSGPACK_PP_ITERATION_START_5_DIGIT_3 2
+# elif MSGPACK_PP_SLOT_TEMP_3 == 3
+# define MSGPACK_PP_ITERATION_START_5_DIGIT_3 3
+# elif MSGPACK_PP_SLOT_TEMP_3 == 4
+# define MSGPACK_PP_ITERATION_START_5_DIGIT_3 4
+# elif MSGPACK_PP_SLOT_TEMP_3 == 5
+# define MSGPACK_PP_ITERATION_START_5_DIGIT_3 5
+# elif MSGPACK_PP_SLOT_TEMP_3 == 6
+# define MSGPACK_PP_ITERATION_START_5_DIGIT_3 6
+# elif MSGPACK_PP_SLOT_TEMP_3 == 7
+# define MSGPACK_PP_ITERATION_START_5_DIGIT_3 7
+# elif MSGPACK_PP_SLOT_TEMP_3 == 8
+# define MSGPACK_PP_ITERATION_START_5_DIGIT_3 8
+# elif MSGPACK_PP_SLOT_TEMP_3 == 9
+# define MSGPACK_PP_ITERATION_START_5_DIGIT_3 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_2 == 0
+# define MSGPACK_PP_ITERATION_START_5_DIGIT_2 0
+# elif MSGPACK_PP_SLOT_TEMP_2 == 1
+# define MSGPACK_PP_ITERATION_START_5_DIGIT_2 1
+# elif MSGPACK_PP_SLOT_TEMP_2 == 2
+# define MSGPACK_PP_ITERATION_START_5_DIGIT_2 2
+# elif MSGPACK_PP_SLOT_TEMP_2 == 3
+# define MSGPACK_PP_ITERATION_START_5_DIGIT_2 3
+# elif MSGPACK_PP_SLOT_TEMP_2 == 4
+# define MSGPACK_PP_ITERATION_START_5_DIGIT_2 4
+# elif MSGPACK_PP_SLOT_TEMP_2 == 5
+# define MSGPACK_PP_ITERATION_START_5_DIGIT_2 5
+# elif MSGPACK_PP_SLOT_TEMP_2 == 6
+# define MSGPACK_PP_ITERATION_START_5_DIGIT_2 6
+# elif MSGPACK_PP_SLOT_TEMP_2 == 7
+# define MSGPACK_PP_ITERATION_START_5_DIGIT_2 7
+# elif MSGPACK_PP_SLOT_TEMP_2 == 8
+# define MSGPACK_PP_ITERATION_START_5_DIGIT_2 8
+# elif MSGPACK_PP_SLOT_TEMP_2 == 9
+# define MSGPACK_PP_ITERATION_START_5_DIGIT_2 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_1 == 0
+# define MSGPACK_PP_ITERATION_START_5_DIGIT_1 0
+# elif MSGPACK_PP_SLOT_TEMP_1 == 1
+# define MSGPACK_PP_ITERATION_START_5_DIGIT_1 1
+# elif MSGPACK_PP_SLOT_TEMP_1 == 2
+# define MSGPACK_PP_ITERATION_START_5_DIGIT_1 2
+# elif MSGPACK_PP_SLOT_TEMP_1 == 3
+# define MSGPACK_PP_ITERATION_START_5_DIGIT_1 3
+# elif MSGPACK_PP_SLOT_TEMP_1 == 4
+# define MSGPACK_PP_ITERATION_START_5_DIGIT_1 4
+# elif MSGPACK_PP_SLOT_TEMP_1 == 5
+# define MSGPACK_PP_ITERATION_START_5_DIGIT_1 5
+# elif MSGPACK_PP_SLOT_TEMP_1 == 6
+# define MSGPACK_PP_ITERATION_START_5_DIGIT_1 6
+# elif MSGPACK_PP_SLOT_TEMP_1 == 7
+# define MSGPACK_PP_ITERATION_START_5_DIGIT_1 7
+# elif MSGPACK_PP_SLOT_TEMP_1 == 8
+# define MSGPACK_PP_ITERATION_START_5_DIGIT_1 8
+# elif MSGPACK_PP_SLOT_TEMP_1 == 9
+# define MSGPACK_PP_ITERATION_START_5_DIGIT_1 9
+# endif
+#
+# if MSGPACK_PP_ITERATION_START_5_DIGIT_3
+# define MSGPACK_PP_ITERATION_START_5 MSGPACK_PP_SLOT_CC_3(MSGPACK_PP_ITERATION_START_5_DIGIT_3, MSGPACK_PP_ITERATION_START_5_DIGIT_2, MSGPACK_PP_ITERATION_START_5_DIGIT_1)
+# elif MSGPACK_PP_ITERATION_START_5_DIGIT_2
+# define MSGPACK_PP_ITERATION_START_5 MSGPACK_PP_SLOT_CC_2(MSGPACK_PP_ITERATION_START_5_DIGIT_2, MSGPACK_PP_ITERATION_START_5_DIGIT_1)
+# else
+# define MSGPACK_PP_ITERATION_START_5 MSGPACK_PP_ITERATION_START_5_DIGIT_1
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/upper1.hpp b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/upper1.hpp
new file mode 100644
index 0000000000..f1f8091e28
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/upper1.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <msgpack/preprocessor/slot/detail/shared.hpp>
+#
+# undef MSGPACK_PP_ITERATION_FINISH_1
+#
+# undef MSGPACK_PP_ITERATION_FINISH_1_DIGIT_1
+# undef MSGPACK_PP_ITERATION_FINISH_1_DIGIT_2
+# undef MSGPACK_PP_ITERATION_FINISH_1_DIGIT_3
+# undef MSGPACK_PP_ITERATION_FINISH_1_DIGIT_4
+# undef MSGPACK_PP_ITERATION_FINISH_1_DIGIT_5
+# undef MSGPACK_PP_ITERATION_FINISH_1_DIGIT_6
+# undef MSGPACK_PP_ITERATION_FINISH_1_DIGIT_7
+# undef MSGPACK_PP_ITERATION_FINISH_1_DIGIT_8
+# undef MSGPACK_PP_ITERATION_FINISH_1_DIGIT_9
+# undef MSGPACK_PP_ITERATION_FINISH_1_DIGIT_10
+#
+# if MSGPACK_PP_SLOT_TEMP_3 == 0
+# define MSGPACK_PP_ITERATION_FINISH_1_DIGIT_3 0
+# elif MSGPACK_PP_SLOT_TEMP_3 == 1
+# define MSGPACK_PP_ITERATION_FINISH_1_DIGIT_3 1
+# elif MSGPACK_PP_SLOT_TEMP_3 == 2
+# define MSGPACK_PP_ITERATION_FINISH_1_DIGIT_3 2
+# elif MSGPACK_PP_SLOT_TEMP_3 == 3
+# define MSGPACK_PP_ITERATION_FINISH_1_DIGIT_3 3
+# elif MSGPACK_PP_SLOT_TEMP_3 == 4
+# define MSGPACK_PP_ITERATION_FINISH_1_DIGIT_3 4
+# elif MSGPACK_PP_SLOT_TEMP_3 == 5
+# define MSGPACK_PP_ITERATION_FINISH_1_DIGIT_3 5
+# elif MSGPACK_PP_SLOT_TEMP_3 == 6
+# define MSGPACK_PP_ITERATION_FINISH_1_DIGIT_3 6
+# elif MSGPACK_PP_SLOT_TEMP_3 == 7
+# define MSGPACK_PP_ITERATION_FINISH_1_DIGIT_3 7
+# elif MSGPACK_PP_SLOT_TEMP_3 == 8
+# define MSGPACK_PP_ITERATION_FINISH_1_DIGIT_3 8
+# elif MSGPACK_PP_SLOT_TEMP_3 == 9
+# define MSGPACK_PP_ITERATION_FINISH_1_DIGIT_3 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_2 == 0
+# define MSGPACK_PP_ITERATION_FINISH_1_DIGIT_2 0
+# elif MSGPACK_PP_SLOT_TEMP_2 == 1
+# define MSGPACK_PP_ITERATION_FINISH_1_DIGIT_2 1
+# elif MSGPACK_PP_SLOT_TEMP_2 == 2
+# define MSGPACK_PP_ITERATION_FINISH_1_DIGIT_2 2
+# elif MSGPACK_PP_SLOT_TEMP_2 == 3
+# define MSGPACK_PP_ITERATION_FINISH_1_DIGIT_2 3
+# elif MSGPACK_PP_SLOT_TEMP_2 == 4
+# define MSGPACK_PP_ITERATION_FINISH_1_DIGIT_2 4
+# elif MSGPACK_PP_SLOT_TEMP_2 == 5
+# define MSGPACK_PP_ITERATION_FINISH_1_DIGIT_2 5
+# elif MSGPACK_PP_SLOT_TEMP_2 == 6
+# define MSGPACK_PP_ITERATION_FINISH_1_DIGIT_2 6
+# elif MSGPACK_PP_SLOT_TEMP_2 == 7
+# define MSGPACK_PP_ITERATION_FINISH_1_DIGIT_2 7
+# elif MSGPACK_PP_SLOT_TEMP_2 == 8
+# define MSGPACK_PP_ITERATION_FINISH_1_DIGIT_2 8
+# elif MSGPACK_PP_SLOT_TEMP_2 == 9
+# define MSGPACK_PP_ITERATION_FINISH_1_DIGIT_2 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_1 == 0
+# define MSGPACK_PP_ITERATION_FINISH_1_DIGIT_1 0
+# elif MSGPACK_PP_SLOT_TEMP_1 == 1
+# define MSGPACK_PP_ITERATION_FINISH_1_DIGIT_1 1
+# elif MSGPACK_PP_SLOT_TEMP_1 == 2
+# define MSGPACK_PP_ITERATION_FINISH_1_DIGIT_1 2
+# elif MSGPACK_PP_SLOT_TEMP_1 == 3
+# define MSGPACK_PP_ITERATION_FINISH_1_DIGIT_1 3
+# elif MSGPACK_PP_SLOT_TEMP_1 == 4
+# define MSGPACK_PP_ITERATION_FINISH_1_DIGIT_1 4
+# elif MSGPACK_PP_SLOT_TEMP_1 == 5
+# define MSGPACK_PP_ITERATION_FINISH_1_DIGIT_1 5
+# elif MSGPACK_PP_SLOT_TEMP_1 == 6
+# define MSGPACK_PP_ITERATION_FINISH_1_DIGIT_1 6
+# elif MSGPACK_PP_SLOT_TEMP_1 == 7
+# define MSGPACK_PP_ITERATION_FINISH_1_DIGIT_1 7
+# elif MSGPACK_PP_SLOT_TEMP_1 == 8
+# define MSGPACK_PP_ITERATION_FINISH_1_DIGIT_1 8
+# elif MSGPACK_PP_SLOT_TEMP_1 == 9
+# define MSGPACK_PP_ITERATION_FINISH_1_DIGIT_1 9
+# endif
+#
+# if MSGPACK_PP_ITERATION_FINISH_1_DIGIT_3
+# define MSGPACK_PP_ITERATION_FINISH_1 MSGPACK_PP_SLOT_CC_3(MSGPACK_PP_ITERATION_FINISH_1_DIGIT_3, MSGPACK_PP_ITERATION_FINISH_1_DIGIT_2, MSGPACK_PP_ITERATION_FINISH_1_DIGIT_1)
+# elif MSGPACK_PP_ITERATION_FINISH_1_DIGIT_2
+# define MSGPACK_PP_ITERATION_FINISH_1 MSGPACK_PP_SLOT_CC_2(MSGPACK_PP_ITERATION_FINISH_1_DIGIT_2, MSGPACK_PP_ITERATION_FINISH_1_DIGIT_1)
+# else
+# define MSGPACK_PP_ITERATION_FINISH_1 MSGPACK_PP_ITERATION_FINISH_1_DIGIT_1
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/upper2.hpp b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/upper2.hpp
new file mode 100644
index 0000000000..0fe1259b52
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/upper2.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <msgpack/preprocessor/slot/detail/shared.hpp>
+#
+# undef MSGPACK_PP_ITERATION_FINISH_2
+#
+# undef MSGPACK_PP_ITERATION_FINISH_2_DIGIT_1
+# undef MSGPACK_PP_ITERATION_FINISH_2_DIGIT_2
+# undef MSGPACK_PP_ITERATION_FINISH_2_DIGIT_3
+# undef MSGPACK_PP_ITERATION_FINISH_2_DIGIT_4
+# undef MSGPACK_PP_ITERATION_FINISH_2_DIGIT_5
+# undef MSGPACK_PP_ITERATION_FINISH_2_DIGIT_6
+# undef MSGPACK_PP_ITERATION_FINISH_2_DIGIT_7
+# undef MSGPACK_PP_ITERATION_FINISH_2_DIGIT_8
+# undef MSGPACK_PP_ITERATION_FINISH_2_DIGIT_9
+# undef MSGPACK_PP_ITERATION_FINISH_2_DIGIT_10
+#
+# if MSGPACK_PP_SLOT_TEMP_3 == 0
+# define MSGPACK_PP_ITERATION_FINISH_2_DIGIT_3 0
+# elif MSGPACK_PP_SLOT_TEMP_3 == 1
+# define MSGPACK_PP_ITERATION_FINISH_2_DIGIT_3 1
+# elif MSGPACK_PP_SLOT_TEMP_3 == 2
+# define MSGPACK_PP_ITERATION_FINISH_2_DIGIT_3 2
+# elif MSGPACK_PP_SLOT_TEMP_3 == 3
+# define MSGPACK_PP_ITERATION_FINISH_2_DIGIT_3 3
+# elif MSGPACK_PP_SLOT_TEMP_3 == 4
+# define MSGPACK_PP_ITERATION_FINISH_2_DIGIT_3 4
+# elif MSGPACK_PP_SLOT_TEMP_3 == 5
+# define MSGPACK_PP_ITERATION_FINISH_2_DIGIT_3 5
+# elif MSGPACK_PP_SLOT_TEMP_3 == 6
+# define MSGPACK_PP_ITERATION_FINISH_2_DIGIT_3 6
+# elif MSGPACK_PP_SLOT_TEMP_3 == 7
+# define MSGPACK_PP_ITERATION_FINISH_2_DIGIT_3 7
+# elif MSGPACK_PP_SLOT_TEMP_3 == 8
+# define MSGPACK_PP_ITERATION_FINISH_2_DIGIT_3 8
+# elif MSGPACK_PP_SLOT_TEMP_3 == 9
+# define MSGPACK_PP_ITERATION_FINISH_2_DIGIT_3 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_2 == 0
+# define MSGPACK_PP_ITERATION_FINISH_2_DIGIT_2 0
+# elif MSGPACK_PP_SLOT_TEMP_2 == 1
+# define MSGPACK_PP_ITERATION_FINISH_2_DIGIT_2 1
+# elif MSGPACK_PP_SLOT_TEMP_2 == 2
+# define MSGPACK_PP_ITERATION_FINISH_2_DIGIT_2 2
+# elif MSGPACK_PP_SLOT_TEMP_2 == 3
+# define MSGPACK_PP_ITERATION_FINISH_2_DIGIT_2 3
+# elif MSGPACK_PP_SLOT_TEMP_2 == 4
+# define MSGPACK_PP_ITERATION_FINISH_2_DIGIT_2 4
+# elif MSGPACK_PP_SLOT_TEMP_2 == 5
+# define MSGPACK_PP_ITERATION_FINISH_2_DIGIT_2 5
+# elif MSGPACK_PP_SLOT_TEMP_2 == 6
+# define MSGPACK_PP_ITERATION_FINISH_2_DIGIT_2 6
+# elif MSGPACK_PP_SLOT_TEMP_2 == 7
+# define MSGPACK_PP_ITERATION_FINISH_2_DIGIT_2 7
+# elif MSGPACK_PP_SLOT_TEMP_2 == 8
+# define MSGPACK_PP_ITERATION_FINISH_2_DIGIT_2 8
+# elif MSGPACK_PP_SLOT_TEMP_2 == 9
+# define MSGPACK_PP_ITERATION_FINISH_2_DIGIT_2 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_1 == 0
+# define MSGPACK_PP_ITERATION_FINISH_2_DIGIT_1 0
+# elif MSGPACK_PP_SLOT_TEMP_1 == 1
+# define MSGPACK_PP_ITERATION_FINISH_2_DIGIT_1 1
+# elif MSGPACK_PP_SLOT_TEMP_1 == 2
+# define MSGPACK_PP_ITERATION_FINISH_2_DIGIT_1 2
+# elif MSGPACK_PP_SLOT_TEMP_1 == 3
+# define MSGPACK_PP_ITERATION_FINISH_2_DIGIT_1 3
+# elif MSGPACK_PP_SLOT_TEMP_1 == 4
+# define MSGPACK_PP_ITERATION_FINISH_2_DIGIT_1 4
+# elif MSGPACK_PP_SLOT_TEMP_1 == 5
+# define MSGPACK_PP_ITERATION_FINISH_2_DIGIT_1 5
+# elif MSGPACK_PP_SLOT_TEMP_1 == 6
+# define MSGPACK_PP_ITERATION_FINISH_2_DIGIT_1 6
+# elif MSGPACK_PP_SLOT_TEMP_1 == 7
+# define MSGPACK_PP_ITERATION_FINISH_2_DIGIT_1 7
+# elif MSGPACK_PP_SLOT_TEMP_1 == 8
+# define MSGPACK_PP_ITERATION_FINISH_2_DIGIT_1 8
+# elif MSGPACK_PP_SLOT_TEMP_1 == 9
+# define MSGPACK_PP_ITERATION_FINISH_2_DIGIT_1 9
+# endif
+#
+# if MSGPACK_PP_ITERATION_FINISH_2_DIGIT_3
+# define MSGPACK_PP_ITERATION_FINISH_2 MSGPACK_PP_SLOT_CC_3(MSGPACK_PP_ITERATION_FINISH_2_DIGIT_3, MSGPACK_PP_ITERATION_FINISH_2_DIGIT_2, MSGPACK_PP_ITERATION_FINISH_2_DIGIT_1)
+# elif MSGPACK_PP_ITERATION_FINISH_2_DIGIT_2
+# define MSGPACK_PP_ITERATION_FINISH_2 MSGPACK_PP_SLOT_CC_2(MSGPACK_PP_ITERATION_FINISH_2_DIGIT_2, MSGPACK_PP_ITERATION_FINISH_2_DIGIT_1)
+# else
+# define MSGPACK_PP_ITERATION_FINISH_2 MSGPACK_PP_ITERATION_FINISH_2_DIGIT_1
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/upper3.hpp b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/upper3.hpp
new file mode 100644
index 0000000000..470b959786
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/upper3.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <msgpack/preprocessor/slot/detail/shared.hpp>
+#
+# undef MSGPACK_PP_ITERATION_FINISH_3
+#
+# undef MSGPACK_PP_ITERATION_FINISH_3_DIGIT_1
+# undef MSGPACK_PP_ITERATION_FINISH_3_DIGIT_2
+# undef MSGPACK_PP_ITERATION_FINISH_3_DIGIT_3
+# undef MSGPACK_PP_ITERATION_FINISH_3_DIGIT_4
+# undef MSGPACK_PP_ITERATION_FINISH_3_DIGIT_5
+# undef MSGPACK_PP_ITERATION_FINISH_3_DIGIT_6
+# undef MSGPACK_PP_ITERATION_FINISH_3_DIGIT_7
+# undef MSGPACK_PP_ITERATION_FINISH_3_DIGIT_8
+# undef MSGPACK_PP_ITERATION_FINISH_3_DIGIT_9
+# undef MSGPACK_PP_ITERATION_FINISH_3_DIGIT_10
+#
+# if MSGPACK_PP_SLOT_TEMP_3 == 0
+# define MSGPACK_PP_ITERATION_FINISH_3_DIGIT_3 0
+# elif MSGPACK_PP_SLOT_TEMP_3 == 1
+# define MSGPACK_PP_ITERATION_FINISH_3_DIGIT_3 1
+# elif MSGPACK_PP_SLOT_TEMP_3 == 2
+# define MSGPACK_PP_ITERATION_FINISH_3_DIGIT_3 2
+# elif MSGPACK_PP_SLOT_TEMP_3 == 3
+# define MSGPACK_PP_ITERATION_FINISH_3_DIGIT_3 3
+# elif MSGPACK_PP_SLOT_TEMP_3 == 4
+# define MSGPACK_PP_ITERATION_FINISH_3_DIGIT_3 4
+# elif MSGPACK_PP_SLOT_TEMP_3 == 5
+# define MSGPACK_PP_ITERATION_FINISH_3_DIGIT_3 5
+# elif MSGPACK_PP_SLOT_TEMP_3 == 6
+# define MSGPACK_PP_ITERATION_FINISH_3_DIGIT_3 6
+# elif MSGPACK_PP_SLOT_TEMP_3 == 7
+# define MSGPACK_PP_ITERATION_FINISH_3_DIGIT_3 7
+# elif MSGPACK_PP_SLOT_TEMP_3 == 8
+# define MSGPACK_PP_ITERATION_FINISH_3_DIGIT_3 8
+# elif MSGPACK_PP_SLOT_TEMP_3 == 9
+# define MSGPACK_PP_ITERATION_FINISH_3_DIGIT_3 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_2 == 0
+# define MSGPACK_PP_ITERATION_FINISH_3_DIGIT_2 0
+# elif MSGPACK_PP_SLOT_TEMP_2 == 1
+# define MSGPACK_PP_ITERATION_FINISH_3_DIGIT_2 1
+# elif MSGPACK_PP_SLOT_TEMP_2 == 2
+# define MSGPACK_PP_ITERATION_FINISH_3_DIGIT_2 2
+# elif MSGPACK_PP_SLOT_TEMP_2 == 3
+# define MSGPACK_PP_ITERATION_FINISH_3_DIGIT_2 3
+# elif MSGPACK_PP_SLOT_TEMP_2 == 4
+# define MSGPACK_PP_ITERATION_FINISH_3_DIGIT_2 4
+# elif MSGPACK_PP_SLOT_TEMP_2 == 5
+# define MSGPACK_PP_ITERATION_FINISH_3_DIGIT_2 5
+# elif MSGPACK_PP_SLOT_TEMP_2 == 6
+# define MSGPACK_PP_ITERATION_FINISH_3_DIGIT_2 6
+# elif MSGPACK_PP_SLOT_TEMP_2 == 7
+# define MSGPACK_PP_ITERATION_FINISH_3_DIGIT_2 7
+# elif MSGPACK_PP_SLOT_TEMP_2 == 8
+# define MSGPACK_PP_ITERATION_FINISH_3_DIGIT_2 8
+# elif MSGPACK_PP_SLOT_TEMP_2 == 9
+# define MSGPACK_PP_ITERATION_FINISH_3_DIGIT_2 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_1 == 0
+# define MSGPACK_PP_ITERATION_FINISH_3_DIGIT_1 0
+# elif MSGPACK_PP_SLOT_TEMP_1 == 1
+# define MSGPACK_PP_ITERATION_FINISH_3_DIGIT_1 1
+# elif MSGPACK_PP_SLOT_TEMP_1 == 2
+# define MSGPACK_PP_ITERATION_FINISH_3_DIGIT_1 2
+# elif MSGPACK_PP_SLOT_TEMP_1 == 3
+# define MSGPACK_PP_ITERATION_FINISH_3_DIGIT_1 3
+# elif MSGPACK_PP_SLOT_TEMP_1 == 4
+# define MSGPACK_PP_ITERATION_FINISH_3_DIGIT_1 4
+# elif MSGPACK_PP_SLOT_TEMP_1 == 5
+# define MSGPACK_PP_ITERATION_FINISH_3_DIGIT_1 5
+# elif MSGPACK_PP_SLOT_TEMP_1 == 6
+# define MSGPACK_PP_ITERATION_FINISH_3_DIGIT_1 6
+# elif MSGPACK_PP_SLOT_TEMP_1 == 7
+# define MSGPACK_PP_ITERATION_FINISH_3_DIGIT_1 7
+# elif MSGPACK_PP_SLOT_TEMP_1 == 8
+# define MSGPACK_PP_ITERATION_FINISH_3_DIGIT_1 8
+# elif MSGPACK_PP_SLOT_TEMP_1 == 9
+# define MSGPACK_PP_ITERATION_FINISH_3_DIGIT_1 9
+# endif
+#
+# if MSGPACK_PP_ITERATION_FINISH_3_DIGIT_3
+# define MSGPACK_PP_ITERATION_FINISH_3 MSGPACK_PP_SLOT_CC_3(MSGPACK_PP_ITERATION_FINISH_3_DIGIT_3, MSGPACK_PP_ITERATION_FINISH_3_DIGIT_2, MSGPACK_PP_ITERATION_FINISH_3_DIGIT_1)
+# elif MSGPACK_PP_ITERATION_FINISH_3_DIGIT_2
+# define MSGPACK_PP_ITERATION_FINISH_3 MSGPACK_PP_SLOT_CC_2(MSGPACK_PP_ITERATION_FINISH_3_DIGIT_2, MSGPACK_PP_ITERATION_FINISH_3_DIGIT_1)
+# else
+# define MSGPACK_PP_ITERATION_FINISH_3 MSGPACK_PP_ITERATION_FINISH_3_DIGIT_1
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/upper4.hpp b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/upper4.hpp
new file mode 100644
index 0000000000..5a58361114
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/upper4.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <msgpack/preprocessor/slot/detail/shared.hpp>
+#
+# undef MSGPACK_PP_ITERATION_FINISH_4
+#
+# undef MSGPACK_PP_ITERATION_FINISH_4_DIGIT_1
+# undef MSGPACK_PP_ITERATION_FINISH_4_DIGIT_2
+# undef MSGPACK_PP_ITERATION_FINISH_4_DIGIT_3
+# undef MSGPACK_PP_ITERATION_FINISH_4_DIGIT_4
+# undef MSGPACK_PP_ITERATION_FINISH_4_DIGIT_5
+# undef MSGPACK_PP_ITERATION_FINISH_4_DIGIT_6
+# undef MSGPACK_PP_ITERATION_FINISH_4_DIGIT_7
+# undef MSGPACK_PP_ITERATION_FINISH_4_DIGIT_8
+# undef MSGPACK_PP_ITERATION_FINISH_4_DIGIT_9
+# undef MSGPACK_PP_ITERATION_FINISH_4_DIGIT_10
+#
+# if MSGPACK_PP_SLOT_TEMP_3 == 0
+# define MSGPACK_PP_ITERATION_FINISH_4_DIGIT_3 0
+# elif MSGPACK_PP_SLOT_TEMP_3 == 1
+# define MSGPACK_PP_ITERATION_FINISH_4_DIGIT_3 1
+# elif MSGPACK_PP_SLOT_TEMP_3 == 2
+# define MSGPACK_PP_ITERATION_FINISH_4_DIGIT_3 2
+# elif MSGPACK_PP_SLOT_TEMP_3 == 3
+# define MSGPACK_PP_ITERATION_FINISH_4_DIGIT_3 3
+# elif MSGPACK_PP_SLOT_TEMP_3 == 4
+# define MSGPACK_PP_ITERATION_FINISH_4_DIGIT_3 4
+# elif MSGPACK_PP_SLOT_TEMP_3 == 5
+# define MSGPACK_PP_ITERATION_FINISH_4_DIGIT_3 5
+# elif MSGPACK_PP_SLOT_TEMP_3 == 6
+# define MSGPACK_PP_ITERATION_FINISH_4_DIGIT_3 6
+# elif MSGPACK_PP_SLOT_TEMP_3 == 7
+# define MSGPACK_PP_ITERATION_FINISH_4_DIGIT_3 7
+# elif MSGPACK_PP_SLOT_TEMP_3 == 8
+# define MSGPACK_PP_ITERATION_FINISH_4_DIGIT_3 8
+# elif MSGPACK_PP_SLOT_TEMP_3 == 9
+# define MSGPACK_PP_ITERATION_FINISH_4_DIGIT_3 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_2 == 0
+# define MSGPACK_PP_ITERATION_FINISH_4_DIGIT_2 0
+# elif MSGPACK_PP_SLOT_TEMP_2 == 1
+# define MSGPACK_PP_ITERATION_FINISH_4_DIGIT_2 1
+# elif MSGPACK_PP_SLOT_TEMP_2 == 2
+# define MSGPACK_PP_ITERATION_FINISH_4_DIGIT_2 2
+# elif MSGPACK_PP_SLOT_TEMP_2 == 3
+# define MSGPACK_PP_ITERATION_FINISH_4_DIGIT_2 3
+# elif MSGPACK_PP_SLOT_TEMP_2 == 4
+# define MSGPACK_PP_ITERATION_FINISH_4_DIGIT_2 4
+# elif MSGPACK_PP_SLOT_TEMP_2 == 5
+# define MSGPACK_PP_ITERATION_FINISH_4_DIGIT_2 5
+# elif MSGPACK_PP_SLOT_TEMP_2 == 6
+# define MSGPACK_PP_ITERATION_FINISH_4_DIGIT_2 6
+# elif MSGPACK_PP_SLOT_TEMP_2 == 7
+# define MSGPACK_PP_ITERATION_FINISH_4_DIGIT_2 7
+# elif MSGPACK_PP_SLOT_TEMP_2 == 8
+# define MSGPACK_PP_ITERATION_FINISH_4_DIGIT_2 8
+# elif MSGPACK_PP_SLOT_TEMP_2 == 9
+# define MSGPACK_PP_ITERATION_FINISH_4_DIGIT_2 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_1 == 0
+# define MSGPACK_PP_ITERATION_FINISH_4_DIGIT_1 0
+# elif MSGPACK_PP_SLOT_TEMP_1 == 1
+# define MSGPACK_PP_ITERATION_FINISH_4_DIGIT_1 1
+# elif MSGPACK_PP_SLOT_TEMP_1 == 2
+# define MSGPACK_PP_ITERATION_FINISH_4_DIGIT_1 2
+# elif MSGPACK_PP_SLOT_TEMP_1 == 3
+# define MSGPACK_PP_ITERATION_FINISH_4_DIGIT_1 3
+# elif MSGPACK_PP_SLOT_TEMP_1 == 4
+# define MSGPACK_PP_ITERATION_FINISH_4_DIGIT_1 4
+# elif MSGPACK_PP_SLOT_TEMP_1 == 5
+# define MSGPACK_PP_ITERATION_FINISH_4_DIGIT_1 5
+# elif MSGPACK_PP_SLOT_TEMP_1 == 6
+# define MSGPACK_PP_ITERATION_FINISH_4_DIGIT_1 6
+# elif MSGPACK_PP_SLOT_TEMP_1 == 7
+# define MSGPACK_PP_ITERATION_FINISH_4_DIGIT_1 7
+# elif MSGPACK_PP_SLOT_TEMP_1 == 8
+# define MSGPACK_PP_ITERATION_FINISH_4_DIGIT_1 8
+# elif MSGPACK_PP_SLOT_TEMP_1 == 9
+# define MSGPACK_PP_ITERATION_FINISH_4_DIGIT_1 9
+# endif
+#
+# if MSGPACK_PP_ITERATION_FINISH_4_DIGIT_3
+# define MSGPACK_PP_ITERATION_FINISH_4 MSGPACK_PP_SLOT_CC_3(MSGPACK_PP_ITERATION_FINISH_4_DIGIT_3, MSGPACK_PP_ITERATION_FINISH_4_DIGIT_2, MSGPACK_PP_ITERATION_FINISH_4_DIGIT_1)
+# elif MSGPACK_PP_ITERATION_FINISH_4_DIGIT_2
+# define MSGPACK_PP_ITERATION_FINISH_4 MSGPACK_PP_SLOT_CC_2(MSGPACK_PP_ITERATION_FINISH_4_DIGIT_2, MSGPACK_PP_ITERATION_FINISH_4_DIGIT_1)
+# else
+# define MSGPACK_PP_ITERATION_FINISH_4 MSGPACK_PP_ITERATION_FINISH_4_DIGIT_1
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/upper5.hpp b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/upper5.hpp
new file mode 100644
index 0000000000..8f092d833c
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/bounds/upper5.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <msgpack/preprocessor/slot/detail/shared.hpp>
+#
+# undef MSGPACK_PP_ITERATION_FINISH_5
+#
+# undef MSGPACK_PP_ITERATION_FINISH_5_DIGIT_1
+# undef MSGPACK_PP_ITERATION_FINISH_5_DIGIT_2
+# undef MSGPACK_PP_ITERATION_FINISH_5_DIGIT_3
+# undef MSGPACK_PP_ITERATION_FINISH_5_DIGIT_4
+# undef MSGPACK_PP_ITERATION_FINISH_5_DIGIT_5
+# undef MSGPACK_PP_ITERATION_FINISH_5_DIGIT_6
+# undef MSGPACK_PP_ITERATION_FINISH_5_DIGIT_7
+# undef MSGPACK_PP_ITERATION_FINISH_5_DIGIT_8
+# undef MSGPACK_PP_ITERATION_FINISH_5_DIGIT_9
+# undef MSGPACK_PP_ITERATION_FINISH_5_DIGIT_10
+#
+# if MSGPACK_PP_SLOT_TEMP_3 == 0
+# define MSGPACK_PP_ITERATION_FINISH_5_DIGIT_3 0
+# elif MSGPACK_PP_SLOT_TEMP_3 == 1
+# define MSGPACK_PP_ITERATION_FINISH_5_DIGIT_3 1
+# elif MSGPACK_PP_SLOT_TEMP_3 == 2
+# define MSGPACK_PP_ITERATION_FINISH_5_DIGIT_3 2
+# elif MSGPACK_PP_SLOT_TEMP_3 == 3
+# define MSGPACK_PP_ITERATION_FINISH_5_DIGIT_3 3
+# elif MSGPACK_PP_SLOT_TEMP_3 == 4
+# define MSGPACK_PP_ITERATION_FINISH_5_DIGIT_3 4
+# elif MSGPACK_PP_SLOT_TEMP_3 == 5
+# define MSGPACK_PP_ITERATION_FINISH_5_DIGIT_3 5
+# elif MSGPACK_PP_SLOT_TEMP_3 == 6
+# define MSGPACK_PP_ITERATION_FINISH_5_DIGIT_3 6
+# elif MSGPACK_PP_SLOT_TEMP_3 == 7
+# define MSGPACK_PP_ITERATION_FINISH_5_DIGIT_3 7
+# elif MSGPACK_PP_SLOT_TEMP_3 == 8
+# define MSGPACK_PP_ITERATION_FINISH_5_DIGIT_3 8
+# elif MSGPACK_PP_SLOT_TEMP_3 == 9
+# define MSGPACK_PP_ITERATION_FINISH_5_DIGIT_3 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_2 == 0
+# define MSGPACK_PP_ITERATION_FINISH_5_DIGIT_2 0
+# elif MSGPACK_PP_SLOT_TEMP_2 == 1
+# define MSGPACK_PP_ITERATION_FINISH_5_DIGIT_2 1
+# elif MSGPACK_PP_SLOT_TEMP_2 == 2
+# define MSGPACK_PP_ITERATION_FINISH_5_DIGIT_2 2
+# elif MSGPACK_PP_SLOT_TEMP_2 == 3
+# define MSGPACK_PP_ITERATION_FINISH_5_DIGIT_2 3
+# elif MSGPACK_PP_SLOT_TEMP_2 == 4
+# define MSGPACK_PP_ITERATION_FINISH_5_DIGIT_2 4
+# elif MSGPACK_PP_SLOT_TEMP_2 == 5
+# define MSGPACK_PP_ITERATION_FINISH_5_DIGIT_2 5
+# elif MSGPACK_PP_SLOT_TEMP_2 == 6
+# define MSGPACK_PP_ITERATION_FINISH_5_DIGIT_2 6
+# elif MSGPACK_PP_SLOT_TEMP_2 == 7
+# define MSGPACK_PP_ITERATION_FINISH_5_DIGIT_2 7
+# elif MSGPACK_PP_SLOT_TEMP_2 == 8
+# define MSGPACK_PP_ITERATION_FINISH_5_DIGIT_2 8
+# elif MSGPACK_PP_SLOT_TEMP_2 == 9
+# define MSGPACK_PP_ITERATION_FINISH_5_DIGIT_2 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_1 == 0
+# define MSGPACK_PP_ITERATION_FINISH_5_DIGIT_1 0
+# elif MSGPACK_PP_SLOT_TEMP_1 == 1
+# define MSGPACK_PP_ITERATION_FINISH_5_DIGIT_1 1
+# elif MSGPACK_PP_SLOT_TEMP_1 == 2
+# define MSGPACK_PP_ITERATION_FINISH_5_DIGIT_1 2
+# elif MSGPACK_PP_SLOT_TEMP_1 == 3
+# define MSGPACK_PP_ITERATION_FINISH_5_DIGIT_1 3
+# elif MSGPACK_PP_SLOT_TEMP_1 == 4
+# define MSGPACK_PP_ITERATION_FINISH_5_DIGIT_1 4
+# elif MSGPACK_PP_SLOT_TEMP_1 == 5
+# define MSGPACK_PP_ITERATION_FINISH_5_DIGIT_1 5
+# elif MSGPACK_PP_SLOT_TEMP_1 == 6
+# define MSGPACK_PP_ITERATION_FINISH_5_DIGIT_1 6
+# elif MSGPACK_PP_SLOT_TEMP_1 == 7
+# define MSGPACK_PP_ITERATION_FINISH_5_DIGIT_1 7
+# elif MSGPACK_PP_SLOT_TEMP_1 == 8
+# define MSGPACK_PP_ITERATION_FINISH_5_DIGIT_1 8
+# elif MSGPACK_PP_SLOT_TEMP_1 == 9
+# define MSGPACK_PP_ITERATION_FINISH_5_DIGIT_1 9
+# endif
+#
+# if MSGPACK_PP_ITERATION_FINISH_5_DIGIT_3
+# define MSGPACK_PP_ITERATION_FINISH_5 MSGPACK_PP_SLOT_CC_3(MSGPACK_PP_ITERATION_FINISH_5_DIGIT_3, MSGPACK_PP_ITERATION_FINISH_5_DIGIT_2, MSGPACK_PP_ITERATION_FINISH_5_DIGIT_1)
+# elif MSGPACK_PP_ITERATION_FINISH_5_DIGIT_2
+# define MSGPACK_PP_ITERATION_FINISH_5 MSGPACK_PP_SLOT_CC_2(MSGPACK_PP_ITERATION_FINISH_5_DIGIT_2, MSGPACK_PP_ITERATION_FINISH_5_DIGIT_1)
+# else
+# define MSGPACK_PP_ITERATION_FINISH_5 MSGPACK_PP_ITERATION_FINISH_5_DIGIT_1
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/finish.hpp b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/finish.hpp
new file mode 100644
index 0000000000..d4ee67b414
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/finish.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <msgpack/preprocessor/slot/detail/shared.hpp>
+#
+# undef MSGPACK_PP_LOCAL_FE
+#
+# undef MSGPACK_PP_LOCAL_FE_DIGIT_1
+# undef MSGPACK_PP_LOCAL_FE_DIGIT_2
+# undef MSGPACK_PP_LOCAL_FE_DIGIT_3
+# undef MSGPACK_PP_LOCAL_FE_DIGIT_4
+# undef MSGPACK_PP_LOCAL_FE_DIGIT_5
+# undef MSGPACK_PP_LOCAL_FE_DIGIT_6
+# undef MSGPACK_PP_LOCAL_FE_DIGIT_7
+# undef MSGPACK_PP_LOCAL_FE_DIGIT_8
+# undef MSGPACK_PP_LOCAL_FE_DIGIT_9
+# undef MSGPACK_PP_LOCAL_FE_DIGIT_10
+#
+# if MSGPACK_PP_SLOT_TEMP_3 == 0
+# define MSGPACK_PP_LOCAL_FE_DIGIT_3 0
+# elif MSGPACK_PP_SLOT_TEMP_3 == 1
+# define MSGPACK_PP_LOCAL_FE_DIGIT_3 1
+# elif MSGPACK_PP_SLOT_TEMP_3 == 2
+# define MSGPACK_PP_LOCAL_FE_DIGIT_3 2
+# elif MSGPACK_PP_SLOT_TEMP_3 == 3
+# define MSGPACK_PP_LOCAL_FE_DIGIT_3 3
+# elif MSGPACK_PP_SLOT_TEMP_3 == 4
+# define MSGPACK_PP_LOCAL_FE_DIGIT_3 4
+# elif MSGPACK_PP_SLOT_TEMP_3 == 5
+# define MSGPACK_PP_LOCAL_FE_DIGIT_3 5
+# elif MSGPACK_PP_SLOT_TEMP_3 == 6
+# define MSGPACK_PP_LOCAL_FE_DIGIT_3 6
+# elif MSGPACK_PP_SLOT_TEMP_3 == 7
+# define MSGPACK_PP_LOCAL_FE_DIGIT_3 7
+# elif MSGPACK_PP_SLOT_TEMP_3 == 8
+# define MSGPACK_PP_LOCAL_FE_DIGIT_3 8
+# elif MSGPACK_PP_SLOT_TEMP_3 == 9
+# define MSGPACK_PP_LOCAL_FE_DIGIT_3 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_2 == 0
+# define MSGPACK_PP_LOCAL_FE_DIGIT_2 0
+# elif MSGPACK_PP_SLOT_TEMP_2 == 1
+# define MSGPACK_PP_LOCAL_FE_DIGIT_2 1
+# elif MSGPACK_PP_SLOT_TEMP_2 == 2
+# define MSGPACK_PP_LOCAL_FE_DIGIT_2 2
+# elif MSGPACK_PP_SLOT_TEMP_2 == 3
+# define MSGPACK_PP_LOCAL_FE_DIGIT_2 3
+# elif MSGPACK_PP_SLOT_TEMP_2 == 4
+# define MSGPACK_PP_LOCAL_FE_DIGIT_2 4
+# elif MSGPACK_PP_SLOT_TEMP_2 == 5
+# define MSGPACK_PP_LOCAL_FE_DIGIT_2 5
+# elif MSGPACK_PP_SLOT_TEMP_2 == 6
+# define MSGPACK_PP_LOCAL_FE_DIGIT_2 6
+# elif MSGPACK_PP_SLOT_TEMP_2 == 7
+# define MSGPACK_PP_LOCAL_FE_DIGIT_2 7
+# elif MSGPACK_PP_SLOT_TEMP_2 == 8
+# define MSGPACK_PP_LOCAL_FE_DIGIT_2 8
+# elif MSGPACK_PP_SLOT_TEMP_2 == 9
+# define MSGPACK_PP_LOCAL_FE_DIGIT_2 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_1 == 0
+# define MSGPACK_PP_LOCAL_FE_DIGIT_1 0
+# elif MSGPACK_PP_SLOT_TEMP_1 == 1
+# define MSGPACK_PP_LOCAL_FE_DIGIT_1 1
+# elif MSGPACK_PP_SLOT_TEMP_1 == 2
+# define MSGPACK_PP_LOCAL_FE_DIGIT_1 2
+# elif MSGPACK_PP_SLOT_TEMP_1 == 3
+# define MSGPACK_PP_LOCAL_FE_DIGIT_1 3
+# elif MSGPACK_PP_SLOT_TEMP_1 == 4
+# define MSGPACK_PP_LOCAL_FE_DIGIT_1 4
+# elif MSGPACK_PP_SLOT_TEMP_1 == 5
+# define MSGPACK_PP_LOCAL_FE_DIGIT_1 5
+# elif MSGPACK_PP_SLOT_TEMP_1 == 6
+# define MSGPACK_PP_LOCAL_FE_DIGIT_1 6
+# elif MSGPACK_PP_SLOT_TEMP_1 == 7
+# define MSGPACK_PP_LOCAL_FE_DIGIT_1 7
+# elif MSGPACK_PP_SLOT_TEMP_1 == 8
+# define MSGPACK_PP_LOCAL_FE_DIGIT_1 8
+# elif MSGPACK_PP_SLOT_TEMP_1 == 9
+# define MSGPACK_PP_LOCAL_FE_DIGIT_1 9
+# endif
+#
+# if MSGPACK_PP_LOCAL_FE_DIGIT_3
+# define MSGPACK_PP_LOCAL_FE() MSGPACK_PP_SLOT_CC_3(MSGPACK_PP_LOCAL_FE_DIGIT_3, MSGPACK_PP_LOCAL_FE_DIGIT_2, MSGPACK_PP_LOCAL_FE_DIGIT_1)
+# elif MSGPACK_PP_LOCAL_FE_DIGIT_2
+# define MSGPACK_PP_LOCAL_FE() MSGPACK_PP_SLOT_CC_2(MSGPACK_PP_LOCAL_FE_DIGIT_2, MSGPACK_PP_LOCAL_FE_DIGIT_1)
+# else
+# define MSGPACK_PP_LOCAL_FE() MSGPACK_PP_LOCAL_FE_DIGIT_1
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/forward1.hpp b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/forward1.hpp
new file mode 100644
index 0000000000..e6e100dbac
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/forward1.hpp
@@ -0,0 +1,1342 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if defined(MSGPACK_PP_ITERATION_LIMITS)
+# if !defined(MSGPACK_PP_FILENAME_1)
+# error MSGPACK_PP_ERROR: depth #1 filename is not defined
+# endif
+# define MSGPACK_PP_VALUE MSGPACK_PP_TUPLE_ELEM(2, 0, MSGPACK_PP_ITERATION_LIMITS)
+# include <msgpack/preprocessor/iteration/detail/bounds/lower1.hpp>
+# define MSGPACK_PP_VALUE MSGPACK_PP_TUPLE_ELEM(2, 1, MSGPACK_PP_ITERATION_LIMITS)
+# include <msgpack/preprocessor/iteration/detail/bounds/upper1.hpp>
+# define MSGPACK_PP_ITERATION_FLAGS_1() 0
+# undef MSGPACK_PP_ITERATION_LIMITS
+# elif defined(MSGPACK_PP_ITERATION_PARAMS_1)
+# define MSGPACK_PP_VALUE MSGPACK_PP_ARRAY_ELEM(0, MSGPACK_PP_ITERATION_PARAMS_1)
+# include <msgpack/preprocessor/iteration/detail/bounds/lower1.hpp>
+# define MSGPACK_PP_VALUE MSGPACK_PP_ARRAY_ELEM(1, MSGPACK_PP_ITERATION_PARAMS_1)
+# include <msgpack/preprocessor/iteration/detail/bounds/upper1.hpp>
+# define MSGPACK_PP_FILENAME_1 MSGPACK_PP_ARRAY_ELEM(2, MSGPACK_PP_ITERATION_PARAMS_1)
+# if MSGPACK_PP_ARRAY_SIZE(MSGPACK_PP_ITERATION_PARAMS_1) >= 4
+# define MSGPACK_PP_ITERATION_FLAGS_1() MSGPACK_PP_ARRAY_ELEM(3, MSGPACK_PP_ITERATION_PARAMS_1)
+# else
+# define MSGPACK_PP_ITERATION_FLAGS_1() 0
+# endif
+# else
+# error MSGPACK_PP_ERROR: depth #1 iteration boundaries or filename not defined
+# endif
+#
+# undef MSGPACK_PP_ITERATION_DEPTH
+# define MSGPACK_PP_ITERATION_DEPTH() 1
+#
+# define MSGPACK_PP_IS_ITERATING 1
+#
+# if (MSGPACK_PP_ITERATION_START_1) > (MSGPACK_PP_ITERATION_FINISH_1)
+# include <msgpack/preprocessor/iteration/detail/iter/reverse1.hpp>
+# else
+# if MSGPACK_PP_ITERATION_START_1 <= 0 && MSGPACK_PP_ITERATION_FINISH_1 >= 0
+# define MSGPACK_PP_ITERATION_1 0
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 1 && MSGPACK_PP_ITERATION_FINISH_1 >= 1
+# define MSGPACK_PP_ITERATION_1 1
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 2 && MSGPACK_PP_ITERATION_FINISH_1 >= 2
+# define MSGPACK_PP_ITERATION_1 2
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 3 && MSGPACK_PP_ITERATION_FINISH_1 >= 3
+# define MSGPACK_PP_ITERATION_1 3
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 4 && MSGPACK_PP_ITERATION_FINISH_1 >= 4
+# define MSGPACK_PP_ITERATION_1 4
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 5 && MSGPACK_PP_ITERATION_FINISH_1 >= 5
+# define MSGPACK_PP_ITERATION_1 5
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 6 && MSGPACK_PP_ITERATION_FINISH_1 >= 6
+# define MSGPACK_PP_ITERATION_1 6
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 7 && MSGPACK_PP_ITERATION_FINISH_1 >= 7
+# define MSGPACK_PP_ITERATION_1 7
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 8 && MSGPACK_PP_ITERATION_FINISH_1 >= 8
+# define MSGPACK_PP_ITERATION_1 8
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 9 && MSGPACK_PP_ITERATION_FINISH_1 >= 9
+# define MSGPACK_PP_ITERATION_1 9
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 10 && MSGPACK_PP_ITERATION_FINISH_1 >= 10
+# define MSGPACK_PP_ITERATION_1 10
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 11 && MSGPACK_PP_ITERATION_FINISH_1 >= 11
+# define MSGPACK_PP_ITERATION_1 11
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 12 && MSGPACK_PP_ITERATION_FINISH_1 >= 12
+# define MSGPACK_PP_ITERATION_1 12
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 13 && MSGPACK_PP_ITERATION_FINISH_1 >= 13
+# define MSGPACK_PP_ITERATION_1 13
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 14 && MSGPACK_PP_ITERATION_FINISH_1 >= 14
+# define MSGPACK_PP_ITERATION_1 14
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 15 && MSGPACK_PP_ITERATION_FINISH_1 >= 15
+# define MSGPACK_PP_ITERATION_1 15
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 16 && MSGPACK_PP_ITERATION_FINISH_1 >= 16
+# define MSGPACK_PP_ITERATION_1 16
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 17 && MSGPACK_PP_ITERATION_FINISH_1 >= 17
+# define MSGPACK_PP_ITERATION_1 17
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 18 && MSGPACK_PP_ITERATION_FINISH_1 >= 18
+# define MSGPACK_PP_ITERATION_1 18
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 19 && MSGPACK_PP_ITERATION_FINISH_1 >= 19
+# define MSGPACK_PP_ITERATION_1 19
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 20 && MSGPACK_PP_ITERATION_FINISH_1 >= 20
+# define MSGPACK_PP_ITERATION_1 20
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 21 && MSGPACK_PP_ITERATION_FINISH_1 >= 21
+# define MSGPACK_PP_ITERATION_1 21
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 22 && MSGPACK_PP_ITERATION_FINISH_1 >= 22
+# define MSGPACK_PP_ITERATION_1 22
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 23 && MSGPACK_PP_ITERATION_FINISH_1 >= 23
+# define MSGPACK_PP_ITERATION_1 23
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 24 && MSGPACK_PP_ITERATION_FINISH_1 >= 24
+# define MSGPACK_PP_ITERATION_1 24
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 25 && MSGPACK_PP_ITERATION_FINISH_1 >= 25
+# define MSGPACK_PP_ITERATION_1 25
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 26 && MSGPACK_PP_ITERATION_FINISH_1 >= 26
+# define MSGPACK_PP_ITERATION_1 26
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 27 && MSGPACK_PP_ITERATION_FINISH_1 >= 27
+# define MSGPACK_PP_ITERATION_1 27
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 28 && MSGPACK_PP_ITERATION_FINISH_1 >= 28
+# define MSGPACK_PP_ITERATION_1 28
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 29 && MSGPACK_PP_ITERATION_FINISH_1 >= 29
+# define MSGPACK_PP_ITERATION_1 29
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 30 && MSGPACK_PP_ITERATION_FINISH_1 >= 30
+# define MSGPACK_PP_ITERATION_1 30
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 31 && MSGPACK_PP_ITERATION_FINISH_1 >= 31
+# define MSGPACK_PP_ITERATION_1 31
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 32 && MSGPACK_PP_ITERATION_FINISH_1 >= 32
+# define MSGPACK_PP_ITERATION_1 32
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 33 && MSGPACK_PP_ITERATION_FINISH_1 >= 33
+# define MSGPACK_PP_ITERATION_1 33
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 34 && MSGPACK_PP_ITERATION_FINISH_1 >= 34
+# define MSGPACK_PP_ITERATION_1 34
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 35 && MSGPACK_PP_ITERATION_FINISH_1 >= 35
+# define MSGPACK_PP_ITERATION_1 35
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 36 && MSGPACK_PP_ITERATION_FINISH_1 >= 36
+# define MSGPACK_PP_ITERATION_1 36
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 37 && MSGPACK_PP_ITERATION_FINISH_1 >= 37
+# define MSGPACK_PP_ITERATION_1 37
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 38 && MSGPACK_PP_ITERATION_FINISH_1 >= 38
+# define MSGPACK_PP_ITERATION_1 38
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 39 && MSGPACK_PP_ITERATION_FINISH_1 >= 39
+# define MSGPACK_PP_ITERATION_1 39
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 40 && MSGPACK_PP_ITERATION_FINISH_1 >= 40
+# define MSGPACK_PP_ITERATION_1 40
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 41 && MSGPACK_PP_ITERATION_FINISH_1 >= 41
+# define MSGPACK_PP_ITERATION_1 41
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 42 && MSGPACK_PP_ITERATION_FINISH_1 >= 42
+# define MSGPACK_PP_ITERATION_1 42
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 43 && MSGPACK_PP_ITERATION_FINISH_1 >= 43
+# define MSGPACK_PP_ITERATION_1 43
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 44 && MSGPACK_PP_ITERATION_FINISH_1 >= 44
+# define MSGPACK_PP_ITERATION_1 44
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 45 && MSGPACK_PP_ITERATION_FINISH_1 >= 45
+# define MSGPACK_PP_ITERATION_1 45
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 46 && MSGPACK_PP_ITERATION_FINISH_1 >= 46
+# define MSGPACK_PP_ITERATION_1 46
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 47 && MSGPACK_PP_ITERATION_FINISH_1 >= 47
+# define MSGPACK_PP_ITERATION_1 47
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 48 && MSGPACK_PP_ITERATION_FINISH_1 >= 48
+# define MSGPACK_PP_ITERATION_1 48
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 49 && MSGPACK_PP_ITERATION_FINISH_1 >= 49
+# define MSGPACK_PP_ITERATION_1 49
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 50 && MSGPACK_PP_ITERATION_FINISH_1 >= 50
+# define MSGPACK_PP_ITERATION_1 50
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 51 && MSGPACK_PP_ITERATION_FINISH_1 >= 51
+# define MSGPACK_PP_ITERATION_1 51
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 52 && MSGPACK_PP_ITERATION_FINISH_1 >= 52
+# define MSGPACK_PP_ITERATION_1 52
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 53 && MSGPACK_PP_ITERATION_FINISH_1 >= 53
+# define MSGPACK_PP_ITERATION_1 53
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 54 && MSGPACK_PP_ITERATION_FINISH_1 >= 54
+# define MSGPACK_PP_ITERATION_1 54
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 55 && MSGPACK_PP_ITERATION_FINISH_1 >= 55
+# define MSGPACK_PP_ITERATION_1 55
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 56 && MSGPACK_PP_ITERATION_FINISH_1 >= 56
+# define MSGPACK_PP_ITERATION_1 56
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 57 && MSGPACK_PP_ITERATION_FINISH_1 >= 57
+# define MSGPACK_PP_ITERATION_1 57
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 58 && MSGPACK_PP_ITERATION_FINISH_1 >= 58
+# define MSGPACK_PP_ITERATION_1 58
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 59 && MSGPACK_PP_ITERATION_FINISH_1 >= 59
+# define MSGPACK_PP_ITERATION_1 59
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 60 && MSGPACK_PP_ITERATION_FINISH_1 >= 60
+# define MSGPACK_PP_ITERATION_1 60
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 61 && MSGPACK_PP_ITERATION_FINISH_1 >= 61
+# define MSGPACK_PP_ITERATION_1 61
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 62 && MSGPACK_PP_ITERATION_FINISH_1 >= 62
+# define MSGPACK_PP_ITERATION_1 62
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 63 && MSGPACK_PP_ITERATION_FINISH_1 >= 63
+# define MSGPACK_PP_ITERATION_1 63
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 64 && MSGPACK_PP_ITERATION_FINISH_1 >= 64
+# define MSGPACK_PP_ITERATION_1 64
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 65 && MSGPACK_PP_ITERATION_FINISH_1 >= 65
+# define MSGPACK_PP_ITERATION_1 65
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 66 && MSGPACK_PP_ITERATION_FINISH_1 >= 66
+# define MSGPACK_PP_ITERATION_1 66
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 67 && MSGPACK_PP_ITERATION_FINISH_1 >= 67
+# define MSGPACK_PP_ITERATION_1 67
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 68 && MSGPACK_PP_ITERATION_FINISH_1 >= 68
+# define MSGPACK_PP_ITERATION_1 68
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 69 && MSGPACK_PP_ITERATION_FINISH_1 >= 69
+# define MSGPACK_PP_ITERATION_1 69
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 70 && MSGPACK_PP_ITERATION_FINISH_1 >= 70
+# define MSGPACK_PP_ITERATION_1 70
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 71 && MSGPACK_PP_ITERATION_FINISH_1 >= 71
+# define MSGPACK_PP_ITERATION_1 71
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 72 && MSGPACK_PP_ITERATION_FINISH_1 >= 72
+# define MSGPACK_PP_ITERATION_1 72
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 73 && MSGPACK_PP_ITERATION_FINISH_1 >= 73
+# define MSGPACK_PP_ITERATION_1 73
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 74 && MSGPACK_PP_ITERATION_FINISH_1 >= 74
+# define MSGPACK_PP_ITERATION_1 74
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 75 && MSGPACK_PP_ITERATION_FINISH_1 >= 75
+# define MSGPACK_PP_ITERATION_1 75
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 76 && MSGPACK_PP_ITERATION_FINISH_1 >= 76
+# define MSGPACK_PP_ITERATION_1 76
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 77 && MSGPACK_PP_ITERATION_FINISH_1 >= 77
+# define MSGPACK_PP_ITERATION_1 77
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 78 && MSGPACK_PP_ITERATION_FINISH_1 >= 78
+# define MSGPACK_PP_ITERATION_1 78
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 79 && MSGPACK_PP_ITERATION_FINISH_1 >= 79
+# define MSGPACK_PP_ITERATION_1 79
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 80 && MSGPACK_PP_ITERATION_FINISH_1 >= 80
+# define MSGPACK_PP_ITERATION_1 80
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 81 && MSGPACK_PP_ITERATION_FINISH_1 >= 81
+# define MSGPACK_PP_ITERATION_1 81
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 82 && MSGPACK_PP_ITERATION_FINISH_1 >= 82
+# define MSGPACK_PP_ITERATION_1 82
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 83 && MSGPACK_PP_ITERATION_FINISH_1 >= 83
+# define MSGPACK_PP_ITERATION_1 83
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 84 && MSGPACK_PP_ITERATION_FINISH_1 >= 84
+# define MSGPACK_PP_ITERATION_1 84
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 85 && MSGPACK_PP_ITERATION_FINISH_1 >= 85
+# define MSGPACK_PP_ITERATION_1 85
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 86 && MSGPACK_PP_ITERATION_FINISH_1 >= 86
+# define MSGPACK_PP_ITERATION_1 86
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 87 && MSGPACK_PP_ITERATION_FINISH_1 >= 87
+# define MSGPACK_PP_ITERATION_1 87
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 88 && MSGPACK_PP_ITERATION_FINISH_1 >= 88
+# define MSGPACK_PP_ITERATION_1 88
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 89 && MSGPACK_PP_ITERATION_FINISH_1 >= 89
+# define MSGPACK_PP_ITERATION_1 89
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 90 && MSGPACK_PP_ITERATION_FINISH_1 >= 90
+# define MSGPACK_PP_ITERATION_1 90
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 91 && MSGPACK_PP_ITERATION_FINISH_1 >= 91
+# define MSGPACK_PP_ITERATION_1 91
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 92 && MSGPACK_PP_ITERATION_FINISH_1 >= 92
+# define MSGPACK_PP_ITERATION_1 92
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 93 && MSGPACK_PP_ITERATION_FINISH_1 >= 93
+# define MSGPACK_PP_ITERATION_1 93
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 94 && MSGPACK_PP_ITERATION_FINISH_1 >= 94
+# define MSGPACK_PP_ITERATION_1 94
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 95 && MSGPACK_PP_ITERATION_FINISH_1 >= 95
+# define MSGPACK_PP_ITERATION_1 95
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 96 && MSGPACK_PP_ITERATION_FINISH_1 >= 96
+# define MSGPACK_PP_ITERATION_1 96
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 97 && MSGPACK_PP_ITERATION_FINISH_1 >= 97
+# define MSGPACK_PP_ITERATION_1 97
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 98 && MSGPACK_PP_ITERATION_FINISH_1 >= 98
+# define MSGPACK_PP_ITERATION_1 98
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 99 && MSGPACK_PP_ITERATION_FINISH_1 >= 99
+# define MSGPACK_PP_ITERATION_1 99
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 100 && MSGPACK_PP_ITERATION_FINISH_1 >= 100
+# define MSGPACK_PP_ITERATION_1 100
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 101 && MSGPACK_PP_ITERATION_FINISH_1 >= 101
+# define MSGPACK_PP_ITERATION_1 101
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 102 && MSGPACK_PP_ITERATION_FINISH_1 >= 102
+# define MSGPACK_PP_ITERATION_1 102
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 103 && MSGPACK_PP_ITERATION_FINISH_1 >= 103
+# define MSGPACK_PP_ITERATION_1 103
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 104 && MSGPACK_PP_ITERATION_FINISH_1 >= 104
+# define MSGPACK_PP_ITERATION_1 104
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 105 && MSGPACK_PP_ITERATION_FINISH_1 >= 105
+# define MSGPACK_PP_ITERATION_1 105
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 106 && MSGPACK_PP_ITERATION_FINISH_1 >= 106
+# define MSGPACK_PP_ITERATION_1 106
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 107 && MSGPACK_PP_ITERATION_FINISH_1 >= 107
+# define MSGPACK_PP_ITERATION_1 107
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 108 && MSGPACK_PP_ITERATION_FINISH_1 >= 108
+# define MSGPACK_PP_ITERATION_1 108
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 109 && MSGPACK_PP_ITERATION_FINISH_1 >= 109
+# define MSGPACK_PP_ITERATION_1 109
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 110 && MSGPACK_PP_ITERATION_FINISH_1 >= 110
+# define MSGPACK_PP_ITERATION_1 110
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 111 && MSGPACK_PP_ITERATION_FINISH_1 >= 111
+# define MSGPACK_PP_ITERATION_1 111
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 112 && MSGPACK_PP_ITERATION_FINISH_1 >= 112
+# define MSGPACK_PP_ITERATION_1 112
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 113 && MSGPACK_PP_ITERATION_FINISH_1 >= 113
+# define MSGPACK_PP_ITERATION_1 113
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 114 && MSGPACK_PP_ITERATION_FINISH_1 >= 114
+# define MSGPACK_PP_ITERATION_1 114
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 115 && MSGPACK_PP_ITERATION_FINISH_1 >= 115
+# define MSGPACK_PP_ITERATION_1 115
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 116 && MSGPACK_PP_ITERATION_FINISH_1 >= 116
+# define MSGPACK_PP_ITERATION_1 116
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 117 && MSGPACK_PP_ITERATION_FINISH_1 >= 117
+# define MSGPACK_PP_ITERATION_1 117
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 118 && MSGPACK_PP_ITERATION_FINISH_1 >= 118
+# define MSGPACK_PP_ITERATION_1 118
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 119 && MSGPACK_PP_ITERATION_FINISH_1 >= 119
+# define MSGPACK_PP_ITERATION_1 119
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 120 && MSGPACK_PP_ITERATION_FINISH_1 >= 120
+# define MSGPACK_PP_ITERATION_1 120
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 121 && MSGPACK_PP_ITERATION_FINISH_1 >= 121
+# define MSGPACK_PP_ITERATION_1 121
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 122 && MSGPACK_PP_ITERATION_FINISH_1 >= 122
+# define MSGPACK_PP_ITERATION_1 122
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 123 && MSGPACK_PP_ITERATION_FINISH_1 >= 123
+# define MSGPACK_PP_ITERATION_1 123
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 124 && MSGPACK_PP_ITERATION_FINISH_1 >= 124
+# define MSGPACK_PP_ITERATION_1 124
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 125 && MSGPACK_PP_ITERATION_FINISH_1 >= 125
+# define MSGPACK_PP_ITERATION_1 125
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 126 && MSGPACK_PP_ITERATION_FINISH_1 >= 126
+# define MSGPACK_PP_ITERATION_1 126
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 127 && MSGPACK_PP_ITERATION_FINISH_1 >= 127
+# define MSGPACK_PP_ITERATION_1 127
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 128 && MSGPACK_PP_ITERATION_FINISH_1 >= 128
+# define MSGPACK_PP_ITERATION_1 128
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 129 && MSGPACK_PP_ITERATION_FINISH_1 >= 129
+# define MSGPACK_PP_ITERATION_1 129
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 130 && MSGPACK_PP_ITERATION_FINISH_1 >= 130
+# define MSGPACK_PP_ITERATION_1 130
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 131 && MSGPACK_PP_ITERATION_FINISH_1 >= 131
+# define MSGPACK_PP_ITERATION_1 131
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 132 && MSGPACK_PP_ITERATION_FINISH_1 >= 132
+# define MSGPACK_PP_ITERATION_1 132
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 133 && MSGPACK_PP_ITERATION_FINISH_1 >= 133
+# define MSGPACK_PP_ITERATION_1 133
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 134 && MSGPACK_PP_ITERATION_FINISH_1 >= 134
+# define MSGPACK_PP_ITERATION_1 134
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 135 && MSGPACK_PP_ITERATION_FINISH_1 >= 135
+# define MSGPACK_PP_ITERATION_1 135
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 136 && MSGPACK_PP_ITERATION_FINISH_1 >= 136
+# define MSGPACK_PP_ITERATION_1 136
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 137 && MSGPACK_PP_ITERATION_FINISH_1 >= 137
+# define MSGPACK_PP_ITERATION_1 137
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 138 && MSGPACK_PP_ITERATION_FINISH_1 >= 138
+# define MSGPACK_PP_ITERATION_1 138
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 139 && MSGPACK_PP_ITERATION_FINISH_1 >= 139
+# define MSGPACK_PP_ITERATION_1 139
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 140 && MSGPACK_PP_ITERATION_FINISH_1 >= 140
+# define MSGPACK_PP_ITERATION_1 140
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 141 && MSGPACK_PP_ITERATION_FINISH_1 >= 141
+# define MSGPACK_PP_ITERATION_1 141
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 142 && MSGPACK_PP_ITERATION_FINISH_1 >= 142
+# define MSGPACK_PP_ITERATION_1 142
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 143 && MSGPACK_PP_ITERATION_FINISH_1 >= 143
+# define MSGPACK_PP_ITERATION_1 143
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 144 && MSGPACK_PP_ITERATION_FINISH_1 >= 144
+# define MSGPACK_PP_ITERATION_1 144
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 145 && MSGPACK_PP_ITERATION_FINISH_1 >= 145
+# define MSGPACK_PP_ITERATION_1 145
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 146 && MSGPACK_PP_ITERATION_FINISH_1 >= 146
+# define MSGPACK_PP_ITERATION_1 146
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 147 && MSGPACK_PP_ITERATION_FINISH_1 >= 147
+# define MSGPACK_PP_ITERATION_1 147
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 148 && MSGPACK_PP_ITERATION_FINISH_1 >= 148
+# define MSGPACK_PP_ITERATION_1 148
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 149 && MSGPACK_PP_ITERATION_FINISH_1 >= 149
+# define MSGPACK_PP_ITERATION_1 149
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 150 && MSGPACK_PP_ITERATION_FINISH_1 >= 150
+# define MSGPACK_PP_ITERATION_1 150
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 151 && MSGPACK_PP_ITERATION_FINISH_1 >= 151
+# define MSGPACK_PP_ITERATION_1 151
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 152 && MSGPACK_PP_ITERATION_FINISH_1 >= 152
+# define MSGPACK_PP_ITERATION_1 152
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 153 && MSGPACK_PP_ITERATION_FINISH_1 >= 153
+# define MSGPACK_PP_ITERATION_1 153
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 154 && MSGPACK_PP_ITERATION_FINISH_1 >= 154
+# define MSGPACK_PP_ITERATION_1 154
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 155 && MSGPACK_PP_ITERATION_FINISH_1 >= 155
+# define MSGPACK_PP_ITERATION_1 155
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 156 && MSGPACK_PP_ITERATION_FINISH_1 >= 156
+# define MSGPACK_PP_ITERATION_1 156
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 157 && MSGPACK_PP_ITERATION_FINISH_1 >= 157
+# define MSGPACK_PP_ITERATION_1 157
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 158 && MSGPACK_PP_ITERATION_FINISH_1 >= 158
+# define MSGPACK_PP_ITERATION_1 158
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 159 && MSGPACK_PP_ITERATION_FINISH_1 >= 159
+# define MSGPACK_PP_ITERATION_1 159
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 160 && MSGPACK_PP_ITERATION_FINISH_1 >= 160
+# define MSGPACK_PP_ITERATION_1 160
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 161 && MSGPACK_PP_ITERATION_FINISH_1 >= 161
+# define MSGPACK_PP_ITERATION_1 161
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 162 && MSGPACK_PP_ITERATION_FINISH_1 >= 162
+# define MSGPACK_PP_ITERATION_1 162
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 163 && MSGPACK_PP_ITERATION_FINISH_1 >= 163
+# define MSGPACK_PP_ITERATION_1 163
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 164 && MSGPACK_PP_ITERATION_FINISH_1 >= 164
+# define MSGPACK_PP_ITERATION_1 164
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 165 && MSGPACK_PP_ITERATION_FINISH_1 >= 165
+# define MSGPACK_PP_ITERATION_1 165
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 166 && MSGPACK_PP_ITERATION_FINISH_1 >= 166
+# define MSGPACK_PP_ITERATION_1 166
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 167 && MSGPACK_PP_ITERATION_FINISH_1 >= 167
+# define MSGPACK_PP_ITERATION_1 167
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 168 && MSGPACK_PP_ITERATION_FINISH_1 >= 168
+# define MSGPACK_PP_ITERATION_1 168
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 169 && MSGPACK_PP_ITERATION_FINISH_1 >= 169
+# define MSGPACK_PP_ITERATION_1 169
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 170 && MSGPACK_PP_ITERATION_FINISH_1 >= 170
+# define MSGPACK_PP_ITERATION_1 170
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 171 && MSGPACK_PP_ITERATION_FINISH_1 >= 171
+# define MSGPACK_PP_ITERATION_1 171
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 172 && MSGPACK_PP_ITERATION_FINISH_1 >= 172
+# define MSGPACK_PP_ITERATION_1 172
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 173 && MSGPACK_PP_ITERATION_FINISH_1 >= 173
+# define MSGPACK_PP_ITERATION_1 173
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 174 && MSGPACK_PP_ITERATION_FINISH_1 >= 174
+# define MSGPACK_PP_ITERATION_1 174
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 175 && MSGPACK_PP_ITERATION_FINISH_1 >= 175
+# define MSGPACK_PP_ITERATION_1 175
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 176 && MSGPACK_PP_ITERATION_FINISH_1 >= 176
+# define MSGPACK_PP_ITERATION_1 176
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 177 && MSGPACK_PP_ITERATION_FINISH_1 >= 177
+# define MSGPACK_PP_ITERATION_1 177
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 178 && MSGPACK_PP_ITERATION_FINISH_1 >= 178
+# define MSGPACK_PP_ITERATION_1 178
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 179 && MSGPACK_PP_ITERATION_FINISH_1 >= 179
+# define MSGPACK_PP_ITERATION_1 179
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 180 && MSGPACK_PP_ITERATION_FINISH_1 >= 180
+# define MSGPACK_PP_ITERATION_1 180
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 181 && MSGPACK_PP_ITERATION_FINISH_1 >= 181
+# define MSGPACK_PP_ITERATION_1 181
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 182 && MSGPACK_PP_ITERATION_FINISH_1 >= 182
+# define MSGPACK_PP_ITERATION_1 182
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 183 && MSGPACK_PP_ITERATION_FINISH_1 >= 183
+# define MSGPACK_PP_ITERATION_1 183
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 184 && MSGPACK_PP_ITERATION_FINISH_1 >= 184
+# define MSGPACK_PP_ITERATION_1 184
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 185 && MSGPACK_PP_ITERATION_FINISH_1 >= 185
+# define MSGPACK_PP_ITERATION_1 185
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 186 && MSGPACK_PP_ITERATION_FINISH_1 >= 186
+# define MSGPACK_PP_ITERATION_1 186
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 187 && MSGPACK_PP_ITERATION_FINISH_1 >= 187
+# define MSGPACK_PP_ITERATION_1 187
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 188 && MSGPACK_PP_ITERATION_FINISH_1 >= 188
+# define MSGPACK_PP_ITERATION_1 188
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 189 && MSGPACK_PP_ITERATION_FINISH_1 >= 189
+# define MSGPACK_PP_ITERATION_1 189
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 190 && MSGPACK_PP_ITERATION_FINISH_1 >= 190
+# define MSGPACK_PP_ITERATION_1 190
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 191 && MSGPACK_PP_ITERATION_FINISH_1 >= 191
+# define MSGPACK_PP_ITERATION_1 191
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 192 && MSGPACK_PP_ITERATION_FINISH_1 >= 192
+# define MSGPACK_PP_ITERATION_1 192
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 193 && MSGPACK_PP_ITERATION_FINISH_1 >= 193
+# define MSGPACK_PP_ITERATION_1 193
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 194 && MSGPACK_PP_ITERATION_FINISH_1 >= 194
+# define MSGPACK_PP_ITERATION_1 194
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 195 && MSGPACK_PP_ITERATION_FINISH_1 >= 195
+# define MSGPACK_PP_ITERATION_1 195
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 196 && MSGPACK_PP_ITERATION_FINISH_1 >= 196
+# define MSGPACK_PP_ITERATION_1 196
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 197 && MSGPACK_PP_ITERATION_FINISH_1 >= 197
+# define MSGPACK_PP_ITERATION_1 197
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 198 && MSGPACK_PP_ITERATION_FINISH_1 >= 198
+# define MSGPACK_PP_ITERATION_1 198
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 199 && MSGPACK_PP_ITERATION_FINISH_1 >= 199
+# define MSGPACK_PP_ITERATION_1 199
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 200 && MSGPACK_PP_ITERATION_FINISH_1 >= 200
+# define MSGPACK_PP_ITERATION_1 200
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 201 && MSGPACK_PP_ITERATION_FINISH_1 >= 201
+# define MSGPACK_PP_ITERATION_1 201
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 202 && MSGPACK_PP_ITERATION_FINISH_1 >= 202
+# define MSGPACK_PP_ITERATION_1 202
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 203 && MSGPACK_PP_ITERATION_FINISH_1 >= 203
+# define MSGPACK_PP_ITERATION_1 203
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 204 && MSGPACK_PP_ITERATION_FINISH_1 >= 204
+# define MSGPACK_PP_ITERATION_1 204
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 205 && MSGPACK_PP_ITERATION_FINISH_1 >= 205
+# define MSGPACK_PP_ITERATION_1 205
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 206 && MSGPACK_PP_ITERATION_FINISH_1 >= 206
+# define MSGPACK_PP_ITERATION_1 206
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 207 && MSGPACK_PP_ITERATION_FINISH_1 >= 207
+# define MSGPACK_PP_ITERATION_1 207
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 208 && MSGPACK_PP_ITERATION_FINISH_1 >= 208
+# define MSGPACK_PP_ITERATION_1 208
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 209 && MSGPACK_PP_ITERATION_FINISH_1 >= 209
+# define MSGPACK_PP_ITERATION_1 209
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 210 && MSGPACK_PP_ITERATION_FINISH_1 >= 210
+# define MSGPACK_PP_ITERATION_1 210
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 211 && MSGPACK_PP_ITERATION_FINISH_1 >= 211
+# define MSGPACK_PP_ITERATION_1 211
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 212 && MSGPACK_PP_ITERATION_FINISH_1 >= 212
+# define MSGPACK_PP_ITERATION_1 212
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 213 && MSGPACK_PP_ITERATION_FINISH_1 >= 213
+# define MSGPACK_PP_ITERATION_1 213
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 214 && MSGPACK_PP_ITERATION_FINISH_1 >= 214
+# define MSGPACK_PP_ITERATION_1 214
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 215 && MSGPACK_PP_ITERATION_FINISH_1 >= 215
+# define MSGPACK_PP_ITERATION_1 215
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 216 && MSGPACK_PP_ITERATION_FINISH_1 >= 216
+# define MSGPACK_PP_ITERATION_1 216
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 217 && MSGPACK_PP_ITERATION_FINISH_1 >= 217
+# define MSGPACK_PP_ITERATION_1 217
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 218 && MSGPACK_PP_ITERATION_FINISH_1 >= 218
+# define MSGPACK_PP_ITERATION_1 218
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 219 && MSGPACK_PP_ITERATION_FINISH_1 >= 219
+# define MSGPACK_PP_ITERATION_1 219
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 220 && MSGPACK_PP_ITERATION_FINISH_1 >= 220
+# define MSGPACK_PP_ITERATION_1 220
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 221 && MSGPACK_PP_ITERATION_FINISH_1 >= 221
+# define MSGPACK_PP_ITERATION_1 221
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 222 && MSGPACK_PP_ITERATION_FINISH_1 >= 222
+# define MSGPACK_PP_ITERATION_1 222
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 223 && MSGPACK_PP_ITERATION_FINISH_1 >= 223
+# define MSGPACK_PP_ITERATION_1 223
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 224 && MSGPACK_PP_ITERATION_FINISH_1 >= 224
+# define MSGPACK_PP_ITERATION_1 224
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 225 && MSGPACK_PP_ITERATION_FINISH_1 >= 225
+# define MSGPACK_PP_ITERATION_1 225
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 226 && MSGPACK_PP_ITERATION_FINISH_1 >= 226
+# define MSGPACK_PP_ITERATION_1 226
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 227 && MSGPACK_PP_ITERATION_FINISH_1 >= 227
+# define MSGPACK_PP_ITERATION_1 227
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 228 && MSGPACK_PP_ITERATION_FINISH_1 >= 228
+# define MSGPACK_PP_ITERATION_1 228
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 229 && MSGPACK_PP_ITERATION_FINISH_1 >= 229
+# define MSGPACK_PP_ITERATION_1 229
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 230 && MSGPACK_PP_ITERATION_FINISH_1 >= 230
+# define MSGPACK_PP_ITERATION_1 230
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 231 && MSGPACK_PP_ITERATION_FINISH_1 >= 231
+# define MSGPACK_PP_ITERATION_1 231
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 232 && MSGPACK_PP_ITERATION_FINISH_1 >= 232
+# define MSGPACK_PP_ITERATION_1 232
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 233 && MSGPACK_PP_ITERATION_FINISH_1 >= 233
+# define MSGPACK_PP_ITERATION_1 233
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 234 && MSGPACK_PP_ITERATION_FINISH_1 >= 234
+# define MSGPACK_PP_ITERATION_1 234
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 235 && MSGPACK_PP_ITERATION_FINISH_1 >= 235
+# define MSGPACK_PP_ITERATION_1 235
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 236 && MSGPACK_PP_ITERATION_FINISH_1 >= 236
+# define MSGPACK_PP_ITERATION_1 236
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 237 && MSGPACK_PP_ITERATION_FINISH_1 >= 237
+# define MSGPACK_PP_ITERATION_1 237
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 238 && MSGPACK_PP_ITERATION_FINISH_1 >= 238
+# define MSGPACK_PP_ITERATION_1 238
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 239 && MSGPACK_PP_ITERATION_FINISH_1 >= 239
+# define MSGPACK_PP_ITERATION_1 239
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 240 && MSGPACK_PP_ITERATION_FINISH_1 >= 240
+# define MSGPACK_PP_ITERATION_1 240
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 241 && MSGPACK_PP_ITERATION_FINISH_1 >= 241
+# define MSGPACK_PP_ITERATION_1 241
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 242 && MSGPACK_PP_ITERATION_FINISH_1 >= 242
+# define MSGPACK_PP_ITERATION_1 242
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 243 && MSGPACK_PP_ITERATION_FINISH_1 >= 243
+# define MSGPACK_PP_ITERATION_1 243
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 244 && MSGPACK_PP_ITERATION_FINISH_1 >= 244
+# define MSGPACK_PP_ITERATION_1 244
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 245 && MSGPACK_PP_ITERATION_FINISH_1 >= 245
+# define MSGPACK_PP_ITERATION_1 245
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 246 && MSGPACK_PP_ITERATION_FINISH_1 >= 246
+# define MSGPACK_PP_ITERATION_1 246
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 247 && MSGPACK_PP_ITERATION_FINISH_1 >= 247
+# define MSGPACK_PP_ITERATION_1 247
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 248 && MSGPACK_PP_ITERATION_FINISH_1 >= 248
+# define MSGPACK_PP_ITERATION_1 248
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 249 && MSGPACK_PP_ITERATION_FINISH_1 >= 249
+# define MSGPACK_PP_ITERATION_1 249
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 250 && MSGPACK_PP_ITERATION_FINISH_1 >= 250
+# define MSGPACK_PP_ITERATION_1 250
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 251 && MSGPACK_PP_ITERATION_FINISH_1 >= 251
+# define MSGPACK_PP_ITERATION_1 251
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 252 && MSGPACK_PP_ITERATION_FINISH_1 >= 252
+# define MSGPACK_PP_ITERATION_1 252
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 253 && MSGPACK_PP_ITERATION_FINISH_1 >= 253
+# define MSGPACK_PP_ITERATION_1 253
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 254 && MSGPACK_PP_ITERATION_FINISH_1 >= 254
+# define MSGPACK_PP_ITERATION_1 254
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 255 && MSGPACK_PP_ITERATION_FINISH_1 >= 255
+# define MSGPACK_PP_ITERATION_1 255
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_START_1 <= 256 && MSGPACK_PP_ITERATION_FINISH_1 >= 256
+# define MSGPACK_PP_ITERATION_1 256
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# endif
+#
+# undef MSGPACK_PP_IS_ITERATING
+#
+# undef MSGPACK_PP_ITERATION_DEPTH
+# define MSGPACK_PP_ITERATION_DEPTH() 0
+#
+# undef MSGPACK_PP_ITERATION_START_1
+# undef MSGPACK_PP_ITERATION_FINISH_1
+# undef MSGPACK_PP_FILENAME_1
+#
+# undef MSGPACK_PP_ITERATION_FLAGS_1
+# undef MSGPACK_PP_ITERATION_PARAMS_1
diff --git a/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/forward2.hpp b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/forward2.hpp
new file mode 100644
index 0000000000..00683af2b6
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/forward2.hpp
@@ -0,0 +1,1338 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if defined(MSGPACK_PP_ITERATION_LIMITS)
+# if !defined(MSGPACK_PP_FILENAME_2)
+# error MSGPACK_PP_ERROR: depth #2 filename is not defined
+# endif
+# define MSGPACK_PP_VALUE MSGPACK_PP_TUPLE_ELEM(2, 0, MSGPACK_PP_ITERATION_LIMITS)
+# include <msgpack/preprocessor/iteration/detail/bounds/lower2.hpp>
+# define MSGPACK_PP_VALUE MSGPACK_PP_TUPLE_ELEM(2, 1, MSGPACK_PP_ITERATION_LIMITS)
+# include <msgpack/preprocessor/iteration/detail/bounds/upper2.hpp>
+# define MSGPACK_PP_ITERATION_FLAGS_2() 0
+# undef MSGPACK_PP_ITERATION_LIMITS
+# elif defined(MSGPACK_PP_ITERATION_PARAMS_2)
+# define MSGPACK_PP_VALUE MSGPACK_PP_ARRAY_ELEM(0, MSGPACK_PP_ITERATION_PARAMS_2)
+# include <msgpack/preprocessor/iteration/detail/bounds/lower2.hpp>
+# define MSGPACK_PP_VALUE MSGPACK_PP_ARRAY_ELEM(1, MSGPACK_PP_ITERATION_PARAMS_2)
+# include <msgpack/preprocessor/iteration/detail/bounds/upper2.hpp>
+# define MSGPACK_PP_FILENAME_2 MSGPACK_PP_ARRAY_ELEM(2, MSGPACK_PP_ITERATION_PARAMS_2)
+# if MSGPACK_PP_ARRAY_SIZE(MSGPACK_PP_ITERATION_PARAMS_2) >= 4
+# define MSGPACK_PP_ITERATION_FLAGS_2() MSGPACK_PP_ARRAY_ELEM(3, MSGPACK_PP_ITERATION_PARAMS_2)
+# else
+# define MSGPACK_PP_ITERATION_FLAGS_2() 0
+# endif
+# else
+# error MSGPACK_PP_ERROR: depth #2 iteration boundaries or filename not defined
+# endif
+#
+# undef MSGPACK_PP_ITERATION_DEPTH
+# define MSGPACK_PP_ITERATION_DEPTH() 2
+#
+# if (MSGPACK_PP_ITERATION_START_2) > (MSGPACK_PP_ITERATION_FINISH_2)
+# include <msgpack/preprocessor/iteration/detail/iter/reverse2.hpp>
+# else
+# if MSGPACK_PP_ITERATION_START_2 <= 0 && MSGPACK_PP_ITERATION_FINISH_2 >= 0
+# define MSGPACK_PP_ITERATION_2 0
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 1 && MSGPACK_PP_ITERATION_FINISH_2 >= 1
+# define MSGPACK_PP_ITERATION_2 1
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 2 && MSGPACK_PP_ITERATION_FINISH_2 >= 2
+# define MSGPACK_PP_ITERATION_2 2
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 3 && MSGPACK_PP_ITERATION_FINISH_2 >= 3
+# define MSGPACK_PP_ITERATION_2 3
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 4 && MSGPACK_PP_ITERATION_FINISH_2 >= 4
+# define MSGPACK_PP_ITERATION_2 4
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 5 && MSGPACK_PP_ITERATION_FINISH_2 >= 5
+# define MSGPACK_PP_ITERATION_2 5
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 6 && MSGPACK_PP_ITERATION_FINISH_2 >= 6
+# define MSGPACK_PP_ITERATION_2 6
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 7 && MSGPACK_PP_ITERATION_FINISH_2 >= 7
+# define MSGPACK_PP_ITERATION_2 7
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 8 && MSGPACK_PP_ITERATION_FINISH_2 >= 8
+# define MSGPACK_PP_ITERATION_2 8
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 9 && MSGPACK_PP_ITERATION_FINISH_2 >= 9
+# define MSGPACK_PP_ITERATION_2 9
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 10 && MSGPACK_PP_ITERATION_FINISH_2 >= 10
+# define MSGPACK_PP_ITERATION_2 10
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 11 && MSGPACK_PP_ITERATION_FINISH_2 >= 11
+# define MSGPACK_PP_ITERATION_2 11
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 12 && MSGPACK_PP_ITERATION_FINISH_2 >= 12
+# define MSGPACK_PP_ITERATION_2 12
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 13 && MSGPACK_PP_ITERATION_FINISH_2 >= 13
+# define MSGPACK_PP_ITERATION_2 13
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 14 && MSGPACK_PP_ITERATION_FINISH_2 >= 14
+# define MSGPACK_PP_ITERATION_2 14
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 15 && MSGPACK_PP_ITERATION_FINISH_2 >= 15
+# define MSGPACK_PP_ITERATION_2 15
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 16 && MSGPACK_PP_ITERATION_FINISH_2 >= 16
+# define MSGPACK_PP_ITERATION_2 16
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 17 && MSGPACK_PP_ITERATION_FINISH_2 >= 17
+# define MSGPACK_PP_ITERATION_2 17
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 18 && MSGPACK_PP_ITERATION_FINISH_2 >= 18
+# define MSGPACK_PP_ITERATION_2 18
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 19 && MSGPACK_PP_ITERATION_FINISH_2 >= 19
+# define MSGPACK_PP_ITERATION_2 19
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 20 && MSGPACK_PP_ITERATION_FINISH_2 >= 20
+# define MSGPACK_PP_ITERATION_2 20
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 21 && MSGPACK_PP_ITERATION_FINISH_2 >= 21
+# define MSGPACK_PP_ITERATION_2 21
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 22 && MSGPACK_PP_ITERATION_FINISH_2 >= 22
+# define MSGPACK_PP_ITERATION_2 22
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 23 && MSGPACK_PP_ITERATION_FINISH_2 >= 23
+# define MSGPACK_PP_ITERATION_2 23
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 24 && MSGPACK_PP_ITERATION_FINISH_2 >= 24
+# define MSGPACK_PP_ITERATION_2 24
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 25 && MSGPACK_PP_ITERATION_FINISH_2 >= 25
+# define MSGPACK_PP_ITERATION_2 25
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 26 && MSGPACK_PP_ITERATION_FINISH_2 >= 26
+# define MSGPACK_PP_ITERATION_2 26
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 27 && MSGPACK_PP_ITERATION_FINISH_2 >= 27
+# define MSGPACK_PP_ITERATION_2 27
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 28 && MSGPACK_PP_ITERATION_FINISH_2 >= 28
+# define MSGPACK_PP_ITERATION_2 28
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 29 && MSGPACK_PP_ITERATION_FINISH_2 >= 29
+# define MSGPACK_PP_ITERATION_2 29
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 30 && MSGPACK_PP_ITERATION_FINISH_2 >= 30
+# define MSGPACK_PP_ITERATION_2 30
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 31 && MSGPACK_PP_ITERATION_FINISH_2 >= 31
+# define MSGPACK_PP_ITERATION_2 31
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 32 && MSGPACK_PP_ITERATION_FINISH_2 >= 32
+# define MSGPACK_PP_ITERATION_2 32
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 33 && MSGPACK_PP_ITERATION_FINISH_2 >= 33
+# define MSGPACK_PP_ITERATION_2 33
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 34 && MSGPACK_PP_ITERATION_FINISH_2 >= 34
+# define MSGPACK_PP_ITERATION_2 34
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 35 && MSGPACK_PP_ITERATION_FINISH_2 >= 35
+# define MSGPACK_PP_ITERATION_2 35
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 36 && MSGPACK_PP_ITERATION_FINISH_2 >= 36
+# define MSGPACK_PP_ITERATION_2 36
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 37 && MSGPACK_PP_ITERATION_FINISH_2 >= 37
+# define MSGPACK_PP_ITERATION_2 37
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 38 && MSGPACK_PP_ITERATION_FINISH_2 >= 38
+# define MSGPACK_PP_ITERATION_2 38
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 39 && MSGPACK_PP_ITERATION_FINISH_2 >= 39
+# define MSGPACK_PP_ITERATION_2 39
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 40 && MSGPACK_PP_ITERATION_FINISH_2 >= 40
+# define MSGPACK_PP_ITERATION_2 40
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 41 && MSGPACK_PP_ITERATION_FINISH_2 >= 41
+# define MSGPACK_PP_ITERATION_2 41
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 42 && MSGPACK_PP_ITERATION_FINISH_2 >= 42
+# define MSGPACK_PP_ITERATION_2 42
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 43 && MSGPACK_PP_ITERATION_FINISH_2 >= 43
+# define MSGPACK_PP_ITERATION_2 43
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 44 && MSGPACK_PP_ITERATION_FINISH_2 >= 44
+# define MSGPACK_PP_ITERATION_2 44
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 45 && MSGPACK_PP_ITERATION_FINISH_2 >= 45
+# define MSGPACK_PP_ITERATION_2 45
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 46 && MSGPACK_PP_ITERATION_FINISH_2 >= 46
+# define MSGPACK_PP_ITERATION_2 46
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 47 && MSGPACK_PP_ITERATION_FINISH_2 >= 47
+# define MSGPACK_PP_ITERATION_2 47
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 48 && MSGPACK_PP_ITERATION_FINISH_2 >= 48
+# define MSGPACK_PP_ITERATION_2 48
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 49 && MSGPACK_PP_ITERATION_FINISH_2 >= 49
+# define MSGPACK_PP_ITERATION_2 49
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 50 && MSGPACK_PP_ITERATION_FINISH_2 >= 50
+# define MSGPACK_PP_ITERATION_2 50
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 51 && MSGPACK_PP_ITERATION_FINISH_2 >= 51
+# define MSGPACK_PP_ITERATION_2 51
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 52 && MSGPACK_PP_ITERATION_FINISH_2 >= 52
+# define MSGPACK_PP_ITERATION_2 52
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 53 && MSGPACK_PP_ITERATION_FINISH_2 >= 53
+# define MSGPACK_PP_ITERATION_2 53
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 54 && MSGPACK_PP_ITERATION_FINISH_2 >= 54
+# define MSGPACK_PP_ITERATION_2 54
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 55 && MSGPACK_PP_ITERATION_FINISH_2 >= 55
+# define MSGPACK_PP_ITERATION_2 55
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 56 && MSGPACK_PP_ITERATION_FINISH_2 >= 56
+# define MSGPACK_PP_ITERATION_2 56
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 57 && MSGPACK_PP_ITERATION_FINISH_2 >= 57
+# define MSGPACK_PP_ITERATION_2 57
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 58 && MSGPACK_PP_ITERATION_FINISH_2 >= 58
+# define MSGPACK_PP_ITERATION_2 58
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 59 && MSGPACK_PP_ITERATION_FINISH_2 >= 59
+# define MSGPACK_PP_ITERATION_2 59
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 60 && MSGPACK_PP_ITERATION_FINISH_2 >= 60
+# define MSGPACK_PP_ITERATION_2 60
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 61 && MSGPACK_PP_ITERATION_FINISH_2 >= 61
+# define MSGPACK_PP_ITERATION_2 61
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 62 && MSGPACK_PP_ITERATION_FINISH_2 >= 62
+# define MSGPACK_PP_ITERATION_2 62
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 63 && MSGPACK_PP_ITERATION_FINISH_2 >= 63
+# define MSGPACK_PP_ITERATION_2 63
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 64 && MSGPACK_PP_ITERATION_FINISH_2 >= 64
+# define MSGPACK_PP_ITERATION_2 64
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 65 && MSGPACK_PP_ITERATION_FINISH_2 >= 65
+# define MSGPACK_PP_ITERATION_2 65
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 66 && MSGPACK_PP_ITERATION_FINISH_2 >= 66
+# define MSGPACK_PP_ITERATION_2 66
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 67 && MSGPACK_PP_ITERATION_FINISH_2 >= 67
+# define MSGPACK_PP_ITERATION_2 67
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 68 && MSGPACK_PP_ITERATION_FINISH_2 >= 68
+# define MSGPACK_PP_ITERATION_2 68
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 69 && MSGPACK_PP_ITERATION_FINISH_2 >= 69
+# define MSGPACK_PP_ITERATION_2 69
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 70 && MSGPACK_PP_ITERATION_FINISH_2 >= 70
+# define MSGPACK_PP_ITERATION_2 70
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 71 && MSGPACK_PP_ITERATION_FINISH_2 >= 71
+# define MSGPACK_PP_ITERATION_2 71
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 72 && MSGPACK_PP_ITERATION_FINISH_2 >= 72
+# define MSGPACK_PP_ITERATION_2 72
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 73 && MSGPACK_PP_ITERATION_FINISH_2 >= 73
+# define MSGPACK_PP_ITERATION_2 73
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 74 && MSGPACK_PP_ITERATION_FINISH_2 >= 74
+# define MSGPACK_PP_ITERATION_2 74
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 75 && MSGPACK_PP_ITERATION_FINISH_2 >= 75
+# define MSGPACK_PP_ITERATION_2 75
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 76 && MSGPACK_PP_ITERATION_FINISH_2 >= 76
+# define MSGPACK_PP_ITERATION_2 76
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 77 && MSGPACK_PP_ITERATION_FINISH_2 >= 77
+# define MSGPACK_PP_ITERATION_2 77
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 78 && MSGPACK_PP_ITERATION_FINISH_2 >= 78
+# define MSGPACK_PP_ITERATION_2 78
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 79 && MSGPACK_PP_ITERATION_FINISH_2 >= 79
+# define MSGPACK_PP_ITERATION_2 79
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 80 && MSGPACK_PP_ITERATION_FINISH_2 >= 80
+# define MSGPACK_PP_ITERATION_2 80
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 81 && MSGPACK_PP_ITERATION_FINISH_2 >= 81
+# define MSGPACK_PP_ITERATION_2 81
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 82 && MSGPACK_PP_ITERATION_FINISH_2 >= 82
+# define MSGPACK_PP_ITERATION_2 82
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 83 && MSGPACK_PP_ITERATION_FINISH_2 >= 83
+# define MSGPACK_PP_ITERATION_2 83
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 84 && MSGPACK_PP_ITERATION_FINISH_2 >= 84
+# define MSGPACK_PP_ITERATION_2 84
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 85 && MSGPACK_PP_ITERATION_FINISH_2 >= 85
+# define MSGPACK_PP_ITERATION_2 85
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 86 && MSGPACK_PP_ITERATION_FINISH_2 >= 86
+# define MSGPACK_PP_ITERATION_2 86
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 87 && MSGPACK_PP_ITERATION_FINISH_2 >= 87
+# define MSGPACK_PP_ITERATION_2 87
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 88 && MSGPACK_PP_ITERATION_FINISH_2 >= 88
+# define MSGPACK_PP_ITERATION_2 88
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 89 && MSGPACK_PP_ITERATION_FINISH_2 >= 89
+# define MSGPACK_PP_ITERATION_2 89
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 90 && MSGPACK_PP_ITERATION_FINISH_2 >= 90
+# define MSGPACK_PP_ITERATION_2 90
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 91 && MSGPACK_PP_ITERATION_FINISH_2 >= 91
+# define MSGPACK_PP_ITERATION_2 91
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 92 && MSGPACK_PP_ITERATION_FINISH_2 >= 92
+# define MSGPACK_PP_ITERATION_2 92
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 93 && MSGPACK_PP_ITERATION_FINISH_2 >= 93
+# define MSGPACK_PP_ITERATION_2 93
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 94 && MSGPACK_PP_ITERATION_FINISH_2 >= 94
+# define MSGPACK_PP_ITERATION_2 94
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 95 && MSGPACK_PP_ITERATION_FINISH_2 >= 95
+# define MSGPACK_PP_ITERATION_2 95
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 96 && MSGPACK_PP_ITERATION_FINISH_2 >= 96
+# define MSGPACK_PP_ITERATION_2 96
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 97 && MSGPACK_PP_ITERATION_FINISH_2 >= 97
+# define MSGPACK_PP_ITERATION_2 97
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 98 && MSGPACK_PP_ITERATION_FINISH_2 >= 98
+# define MSGPACK_PP_ITERATION_2 98
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 99 && MSGPACK_PP_ITERATION_FINISH_2 >= 99
+# define MSGPACK_PP_ITERATION_2 99
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 100 && MSGPACK_PP_ITERATION_FINISH_2 >= 100
+# define MSGPACK_PP_ITERATION_2 100
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 101 && MSGPACK_PP_ITERATION_FINISH_2 >= 101
+# define MSGPACK_PP_ITERATION_2 101
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 102 && MSGPACK_PP_ITERATION_FINISH_2 >= 102
+# define MSGPACK_PP_ITERATION_2 102
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 103 && MSGPACK_PP_ITERATION_FINISH_2 >= 103
+# define MSGPACK_PP_ITERATION_2 103
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 104 && MSGPACK_PP_ITERATION_FINISH_2 >= 104
+# define MSGPACK_PP_ITERATION_2 104
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 105 && MSGPACK_PP_ITERATION_FINISH_2 >= 105
+# define MSGPACK_PP_ITERATION_2 105
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 106 && MSGPACK_PP_ITERATION_FINISH_2 >= 106
+# define MSGPACK_PP_ITERATION_2 106
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 107 && MSGPACK_PP_ITERATION_FINISH_2 >= 107
+# define MSGPACK_PP_ITERATION_2 107
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 108 && MSGPACK_PP_ITERATION_FINISH_2 >= 108
+# define MSGPACK_PP_ITERATION_2 108
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 109 && MSGPACK_PP_ITERATION_FINISH_2 >= 109
+# define MSGPACK_PP_ITERATION_2 109
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 110 && MSGPACK_PP_ITERATION_FINISH_2 >= 110
+# define MSGPACK_PP_ITERATION_2 110
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 111 && MSGPACK_PP_ITERATION_FINISH_2 >= 111
+# define MSGPACK_PP_ITERATION_2 111
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 112 && MSGPACK_PP_ITERATION_FINISH_2 >= 112
+# define MSGPACK_PP_ITERATION_2 112
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 113 && MSGPACK_PP_ITERATION_FINISH_2 >= 113
+# define MSGPACK_PP_ITERATION_2 113
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 114 && MSGPACK_PP_ITERATION_FINISH_2 >= 114
+# define MSGPACK_PP_ITERATION_2 114
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 115 && MSGPACK_PP_ITERATION_FINISH_2 >= 115
+# define MSGPACK_PP_ITERATION_2 115
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 116 && MSGPACK_PP_ITERATION_FINISH_2 >= 116
+# define MSGPACK_PP_ITERATION_2 116
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 117 && MSGPACK_PP_ITERATION_FINISH_2 >= 117
+# define MSGPACK_PP_ITERATION_2 117
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 118 && MSGPACK_PP_ITERATION_FINISH_2 >= 118
+# define MSGPACK_PP_ITERATION_2 118
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 119 && MSGPACK_PP_ITERATION_FINISH_2 >= 119
+# define MSGPACK_PP_ITERATION_2 119
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 120 && MSGPACK_PP_ITERATION_FINISH_2 >= 120
+# define MSGPACK_PP_ITERATION_2 120
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 121 && MSGPACK_PP_ITERATION_FINISH_2 >= 121
+# define MSGPACK_PP_ITERATION_2 121
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 122 && MSGPACK_PP_ITERATION_FINISH_2 >= 122
+# define MSGPACK_PP_ITERATION_2 122
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 123 && MSGPACK_PP_ITERATION_FINISH_2 >= 123
+# define MSGPACK_PP_ITERATION_2 123
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 124 && MSGPACK_PP_ITERATION_FINISH_2 >= 124
+# define MSGPACK_PP_ITERATION_2 124
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 125 && MSGPACK_PP_ITERATION_FINISH_2 >= 125
+# define MSGPACK_PP_ITERATION_2 125
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 126 && MSGPACK_PP_ITERATION_FINISH_2 >= 126
+# define MSGPACK_PP_ITERATION_2 126
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 127 && MSGPACK_PP_ITERATION_FINISH_2 >= 127
+# define MSGPACK_PP_ITERATION_2 127
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 128 && MSGPACK_PP_ITERATION_FINISH_2 >= 128
+# define MSGPACK_PP_ITERATION_2 128
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 129 && MSGPACK_PP_ITERATION_FINISH_2 >= 129
+# define MSGPACK_PP_ITERATION_2 129
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 130 && MSGPACK_PP_ITERATION_FINISH_2 >= 130
+# define MSGPACK_PP_ITERATION_2 130
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 131 && MSGPACK_PP_ITERATION_FINISH_2 >= 131
+# define MSGPACK_PP_ITERATION_2 131
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 132 && MSGPACK_PP_ITERATION_FINISH_2 >= 132
+# define MSGPACK_PP_ITERATION_2 132
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 133 && MSGPACK_PP_ITERATION_FINISH_2 >= 133
+# define MSGPACK_PP_ITERATION_2 133
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 134 && MSGPACK_PP_ITERATION_FINISH_2 >= 134
+# define MSGPACK_PP_ITERATION_2 134
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 135 && MSGPACK_PP_ITERATION_FINISH_2 >= 135
+# define MSGPACK_PP_ITERATION_2 135
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 136 && MSGPACK_PP_ITERATION_FINISH_2 >= 136
+# define MSGPACK_PP_ITERATION_2 136
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 137 && MSGPACK_PP_ITERATION_FINISH_2 >= 137
+# define MSGPACK_PP_ITERATION_2 137
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 138 && MSGPACK_PP_ITERATION_FINISH_2 >= 138
+# define MSGPACK_PP_ITERATION_2 138
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 139 && MSGPACK_PP_ITERATION_FINISH_2 >= 139
+# define MSGPACK_PP_ITERATION_2 139
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 140 && MSGPACK_PP_ITERATION_FINISH_2 >= 140
+# define MSGPACK_PP_ITERATION_2 140
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 141 && MSGPACK_PP_ITERATION_FINISH_2 >= 141
+# define MSGPACK_PP_ITERATION_2 141
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 142 && MSGPACK_PP_ITERATION_FINISH_2 >= 142
+# define MSGPACK_PP_ITERATION_2 142
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 143 && MSGPACK_PP_ITERATION_FINISH_2 >= 143
+# define MSGPACK_PP_ITERATION_2 143
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 144 && MSGPACK_PP_ITERATION_FINISH_2 >= 144
+# define MSGPACK_PP_ITERATION_2 144
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 145 && MSGPACK_PP_ITERATION_FINISH_2 >= 145
+# define MSGPACK_PP_ITERATION_2 145
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 146 && MSGPACK_PP_ITERATION_FINISH_2 >= 146
+# define MSGPACK_PP_ITERATION_2 146
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 147 && MSGPACK_PP_ITERATION_FINISH_2 >= 147
+# define MSGPACK_PP_ITERATION_2 147
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 148 && MSGPACK_PP_ITERATION_FINISH_2 >= 148
+# define MSGPACK_PP_ITERATION_2 148
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 149 && MSGPACK_PP_ITERATION_FINISH_2 >= 149
+# define MSGPACK_PP_ITERATION_2 149
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 150 && MSGPACK_PP_ITERATION_FINISH_2 >= 150
+# define MSGPACK_PP_ITERATION_2 150
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 151 && MSGPACK_PP_ITERATION_FINISH_2 >= 151
+# define MSGPACK_PP_ITERATION_2 151
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 152 && MSGPACK_PP_ITERATION_FINISH_2 >= 152
+# define MSGPACK_PP_ITERATION_2 152
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 153 && MSGPACK_PP_ITERATION_FINISH_2 >= 153
+# define MSGPACK_PP_ITERATION_2 153
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 154 && MSGPACK_PP_ITERATION_FINISH_2 >= 154
+# define MSGPACK_PP_ITERATION_2 154
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 155 && MSGPACK_PP_ITERATION_FINISH_2 >= 155
+# define MSGPACK_PP_ITERATION_2 155
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 156 && MSGPACK_PP_ITERATION_FINISH_2 >= 156
+# define MSGPACK_PP_ITERATION_2 156
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 157 && MSGPACK_PP_ITERATION_FINISH_2 >= 157
+# define MSGPACK_PP_ITERATION_2 157
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 158 && MSGPACK_PP_ITERATION_FINISH_2 >= 158
+# define MSGPACK_PP_ITERATION_2 158
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 159 && MSGPACK_PP_ITERATION_FINISH_2 >= 159
+# define MSGPACK_PP_ITERATION_2 159
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 160 && MSGPACK_PP_ITERATION_FINISH_2 >= 160
+# define MSGPACK_PP_ITERATION_2 160
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 161 && MSGPACK_PP_ITERATION_FINISH_2 >= 161
+# define MSGPACK_PP_ITERATION_2 161
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 162 && MSGPACK_PP_ITERATION_FINISH_2 >= 162
+# define MSGPACK_PP_ITERATION_2 162
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 163 && MSGPACK_PP_ITERATION_FINISH_2 >= 163
+# define MSGPACK_PP_ITERATION_2 163
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 164 && MSGPACK_PP_ITERATION_FINISH_2 >= 164
+# define MSGPACK_PP_ITERATION_2 164
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 165 && MSGPACK_PP_ITERATION_FINISH_2 >= 165
+# define MSGPACK_PP_ITERATION_2 165
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 166 && MSGPACK_PP_ITERATION_FINISH_2 >= 166
+# define MSGPACK_PP_ITERATION_2 166
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 167 && MSGPACK_PP_ITERATION_FINISH_2 >= 167
+# define MSGPACK_PP_ITERATION_2 167
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 168 && MSGPACK_PP_ITERATION_FINISH_2 >= 168
+# define MSGPACK_PP_ITERATION_2 168
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 169 && MSGPACK_PP_ITERATION_FINISH_2 >= 169
+# define MSGPACK_PP_ITERATION_2 169
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 170 && MSGPACK_PP_ITERATION_FINISH_2 >= 170
+# define MSGPACK_PP_ITERATION_2 170
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 171 && MSGPACK_PP_ITERATION_FINISH_2 >= 171
+# define MSGPACK_PP_ITERATION_2 171
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 172 && MSGPACK_PP_ITERATION_FINISH_2 >= 172
+# define MSGPACK_PP_ITERATION_2 172
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 173 && MSGPACK_PP_ITERATION_FINISH_2 >= 173
+# define MSGPACK_PP_ITERATION_2 173
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 174 && MSGPACK_PP_ITERATION_FINISH_2 >= 174
+# define MSGPACK_PP_ITERATION_2 174
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 175 && MSGPACK_PP_ITERATION_FINISH_2 >= 175
+# define MSGPACK_PP_ITERATION_2 175
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 176 && MSGPACK_PP_ITERATION_FINISH_2 >= 176
+# define MSGPACK_PP_ITERATION_2 176
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 177 && MSGPACK_PP_ITERATION_FINISH_2 >= 177
+# define MSGPACK_PP_ITERATION_2 177
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 178 && MSGPACK_PP_ITERATION_FINISH_2 >= 178
+# define MSGPACK_PP_ITERATION_2 178
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 179 && MSGPACK_PP_ITERATION_FINISH_2 >= 179
+# define MSGPACK_PP_ITERATION_2 179
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 180 && MSGPACK_PP_ITERATION_FINISH_2 >= 180
+# define MSGPACK_PP_ITERATION_2 180
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 181 && MSGPACK_PP_ITERATION_FINISH_2 >= 181
+# define MSGPACK_PP_ITERATION_2 181
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 182 && MSGPACK_PP_ITERATION_FINISH_2 >= 182
+# define MSGPACK_PP_ITERATION_2 182
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 183 && MSGPACK_PP_ITERATION_FINISH_2 >= 183
+# define MSGPACK_PP_ITERATION_2 183
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 184 && MSGPACK_PP_ITERATION_FINISH_2 >= 184
+# define MSGPACK_PP_ITERATION_2 184
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 185 && MSGPACK_PP_ITERATION_FINISH_2 >= 185
+# define MSGPACK_PP_ITERATION_2 185
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 186 && MSGPACK_PP_ITERATION_FINISH_2 >= 186
+# define MSGPACK_PP_ITERATION_2 186
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 187 && MSGPACK_PP_ITERATION_FINISH_2 >= 187
+# define MSGPACK_PP_ITERATION_2 187
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 188 && MSGPACK_PP_ITERATION_FINISH_2 >= 188
+# define MSGPACK_PP_ITERATION_2 188
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 189 && MSGPACK_PP_ITERATION_FINISH_2 >= 189
+# define MSGPACK_PP_ITERATION_2 189
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 190 && MSGPACK_PP_ITERATION_FINISH_2 >= 190
+# define MSGPACK_PP_ITERATION_2 190
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 191 && MSGPACK_PP_ITERATION_FINISH_2 >= 191
+# define MSGPACK_PP_ITERATION_2 191
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 192 && MSGPACK_PP_ITERATION_FINISH_2 >= 192
+# define MSGPACK_PP_ITERATION_2 192
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 193 && MSGPACK_PP_ITERATION_FINISH_2 >= 193
+# define MSGPACK_PP_ITERATION_2 193
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 194 && MSGPACK_PP_ITERATION_FINISH_2 >= 194
+# define MSGPACK_PP_ITERATION_2 194
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 195 && MSGPACK_PP_ITERATION_FINISH_2 >= 195
+# define MSGPACK_PP_ITERATION_2 195
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 196 && MSGPACK_PP_ITERATION_FINISH_2 >= 196
+# define MSGPACK_PP_ITERATION_2 196
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 197 && MSGPACK_PP_ITERATION_FINISH_2 >= 197
+# define MSGPACK_PP_ITERATION_2 197
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 198 && MSGPACK_PP_ITERATION_FINISH_2 >= 198
+# define MSGPACK_PP_ITERATION_2 198
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 199 && MSGPACK_PP_ITERATION_FINISH_2 >= 199
+# define MSGPACK_PP_ITERATION_2 199
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 200 && MSGPACK_PP_ITERATION_FINISH_2 >= 200
+# define MSGPACK_PP_ITERATION_2 200
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 201 && MSGPACK_PP_ITERATION_FINISH_2 >= 201
+# define MSGPACK_PP_ITERATION_2 201
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 202 && MSGPACK_PP_ITERATION_FINISH_2 >= 202
+# define MSGPACK_PP_ITERATION_2 202
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 203 && MSGPACK_PP_ITERATION_FINISH_2 >= 203
+# define MSGPACK_PP_ITERATION_2 203
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 204 && MSGPACK_PP_ITERATION_FINISH_2 >= 204
+# define MSGPACK_PP_ITERATION_2 204
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 205 && MSGPACK_PP_ITERATION_FINISH_2 >= 205
+# define MSGPACK_PP_ITERATION_2 205
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 206 && MSGPACK_PP_ITERATION_FINISH_2 >= 206
+# define MSGPACK_PP_ITERATION_2 206
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 207 && MSGPACK_PP_ITERATION_FINISH_2 >= 207
+# define MSGPACK_PP_ITERATION_2 207
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 208 && MSGPACK_PP_ITERATION_FINISH_2 >= 208
+# define MSGPACK_PP_ITERATION_2 208
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 209 && MSGPACK_PP_ITERATION_FINISH_2 >= 209
+# define MSGPACK_PP_ITERATION_2 209
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 210 && MSGPACK_PP_ITERATION_FINISH_2 >= 210
+# define MSGPACK_PP_ITERATION_2 210
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 211 && MSGPACK_PP_ITERATION_FINISH_2 >= 211
+# define MSGPACK_PP_ITERATION_2 211
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 212 && MSGPACK_PP_ITERATION_FINISH_2 >= 212
+# define MSGPACK_PP_ITERATION_2 212
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 213 && MSGPACK_PP_ITERATION_FINISH_2 >= 213
+# define MSGPACK_PP_ITERATION_2 213
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 214 && MSGPACK_PP_ITERATION_FINISH_2 >= 214
+# define MSGPACK_PP_ITERATION_2 214
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 215 && MSGPACK_PP_ITERATION_FINISH_2 >= 215
+# define MSGPACK_PP_ITERATION_2 215
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 216 && MSGPACK_PP_ITERATION_FINISH_2 >= 216
+# define MSGPACK_PP_ITERATION_2 216
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 217 && MSGPACK_PP_ITERATION_FINISH_2 >= 217
+# define MSGPACK_PP_ITERATION_2 217
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 218 && MSGPACK_PP_ITERATION_FINISH_2 >= 218
+# define MSGPACK_PP_ITERATION_2 218
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 219 && MSGPACK_PP_ITERATION_FINISH_2 >= 219
+# define MSGPACK_PP_ITERATION_2 219
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 220 && MSGPACK_PP_ITERATION_FINISH_2 >= 220
+# define MSGPACK_PP_ITERATION_2 220
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 221 && MSGPACK_PP_ITERATION_FINISH_2 >= 221
+# define MSGPACK_PP_ITERATION_2 221
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 222 && MSGPACK_PP_ITERATION_FINISH_2 >= 222
+# define MSGPACK_PP_ITERATION_2 222
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 223 && MSGPACK_PP_ITERATION_FINISH_2 >= 223
+# define MSGPACK_PP_ITERATION_2 223
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 224 && MSGPACK_PP_ITERATION_FINISH_2 >= 224
+# define MSGPACK_PP_ITERATION_2 224
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 225 && MSGPACK_PP_ITERATION_FINISH_2 >= 225
+# define MSGPACK_PP_ITERATION_2 225
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 226 && MSGPACK_PP_ITERATION_FINISH_2 >= 226
+# define MSGPACK_PP_ITERATION_2 226
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 227 && MSGPACK_PP_ITERATION_FINISH_2 >= 227
+# define MSGPACK_PP_ITERATION_2 227
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 228 && MSGPACK_PP_ITERATION_FINISH_2 >= 228
+# define MSGPACK_PP_ITERATION_2 228
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 229 && MSGPACK_PP_ITERATION_FINISH_2 >= 229
+# define MSGPACK_PP_ITERATION_2 229
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 230 && MSGPACK_PP_ITERATION_FINISH_2 >= 230
+# define MSGPACK_PP_ITERATION_2 230
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 231 && MSGPACK_PP_ITERATION_FINISH_2 >= 231
+# define MSGPACK_PP_ITERATION_2 231
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 232 && MSGPACK_PP_ITERATION_FINISH_2 >= 232
+# define MSGPACK_PP_ITERATION_2 232
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 233 && MSGPACK_PP_ITERATION_FINISH_2 >= 233
+# define MSGPACK_PP_ITERATION_2 233
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 234 && MSGPACK_PP_ITERATION_FINISH_2 >= 234
+# define MSGPACK_PP_ITERATION_2 234
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 235 && MSGPACK_PP_ITERATION_FINISH_2 >= 235
+# define MSGPACK_PP_ITERATION_2 235
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 236 && MSGPACK_PP_ITERATION_FINISH_2 >= 236
+# define MSGPACK_PP_ITERATION_2 236
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 237 && MSGPACK_PP_ITERATION_FINISH_2 >= 237
+# define MSGPACK_PP_ITERATION_2 237
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 238 && MSGPACK_PP_ITERATION_FINISH_2 >= 238
+# define MSGPACK_PP_ITERATION_2 238
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 239 && MSGPACK_PP_ITERATION_FINISH_2 >= 239
+# define MSGPACK_PP_ITERATION_2 239
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 240 && MSGPACK_PP_ITERATION_FINISH_2 >= 240
+# define MSGPACK_PP_ITERATION_2 240
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 241 && MSGPACK_PP_ITERATION_FINISH_2 >= 241
+# define MSGPACK_PP_ITERATION_2 241
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 242 && MSGPACK_PP_ITERATION_FINISH_2 >= 242
+# define MSGPACK_PP_ITERATION_2 242
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 243 && MSGPACK_PP_ITERATION_FINISH_2 >= 243
+# define MSGPACK_PP_ITERATION_2 243
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 244 && MSGPACK_PP_ITERATION_FINISH_2 >= 244
+# define MSGPACK_PP_ITERATION_2 244
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 245 && MSGPACK_PP_ITERATION_FINISH_2 >= 245
+# define MSGPACK_PP_ITERATION_2 245
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 246 && MSGPACK_PP_ITERATION_FINISH_2 >= 246
+# define MSGPACK_PP_ITERATION_2 246
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 247 && MSGPACK_PP_ITERATION_FINISH_2 >= 247
+# define MSGPACK_PP_ITERATION_2 247
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 248 && MSGPACK_PP_ITERATION_FINISH_2 >= 248
+# define MSGPACK_PP_ITERATION_2 248
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 249 && MSGPACK_PP_ITERATION_FINISH_2 >= 249
+# define MSGPACK_PP_ITERATION_2 249
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 250 && MSGPACK_PP_ITERATION_FINISH_2 >= 250
+# define MSGPACK_PP_ITERATION_2 250
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 251 && MSGPACK_PP_ITERATION_FINISH_2 >= 251
+# define MSGPACK_PP_ITERATION_2 251
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 252 && MSGPACK_PP_ITERATION_FINISH_2 >= 252
+# define MSGPACK_PP_ITERATION_2 252
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 253 && MSGPACK_PP_ITERATION_FINISH_2 >= 253
+# define MSGPACK_PP_ITERATION_2 253
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 254 && MSGPACK_PP_ITERATION_FINISH_2 >= 254
+# define MSGPACK_PP_ITERATION_2 254
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 255 && MSGPACK_PP_ITERATION_FINISH_2 >= 255
+# define MSGPACK_PP_ITERATION_2 255
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_START_2 <= 256 && MSGPACK_PP_ITERATION_FINISH_2 >= 256
+# define MSGPACK_PP_ITERATION_2 256
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# endif
+#
+# undef MSGPACK_PP_ITERATION_DEPTH
+# define MSGPACK_PP_ITERATION_DEPTH() 1
+#
+# undef MSGPACK_PP_ITERATION_START_2
+# undef MSGPACK_PP_ITERATION_FINISH_2
+# undef MSGPACK_PP_FILENAME_2
+#
+# undef MSGPACK_PP_ITERATION_FLAGS_2
+# undef MSGPACK_PP_ITERATION_PARAMS_2
diff --git a/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/forward3.hpp b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/forward3.hpp
new file mode 100644
index 0000000000..9d03785d1d
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/forward3.hpp
@@ -0,0 +1,1338 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if defined(MSGPACK_PP_ITERATION_LIMITS)
+# if !defined(MSGPACK_PP_FILENAME_3)
+# error MSGPACK_PP_ERROR: depth #3 filename is not defined
+# endif
+# define MSGPACK_PP_VALUE MSGPACK_PP_TUPLE_ELEM(2, 0, MSGPACK_PP_ITERATION_LIMITS)
+# include <msgpack/preprocessor/iteration/detail/bounds/lower3.hpp>
+# define MSGPACK_PP_VALUE MSGPACK_PP_TUPLE_ELEM(2, 1, MSGPACK_PP_ITERATION_LIMITS)
+# include <msgpack/preprocessor/iteration/detail/bounds/upper3.hpp>
+# define MSGPACK_PP_ITERATION_FLAGS_3() 0
+# undef MSGPACK_PP_ITERATION_LIMITS
+# elif defined(MSGPACK_PP_ITERATION_PARAMS_3)
+# define MSGPACK_PP_VALUE MSGPACK_PP_ARRAY_ELEM(0, MSGPACK_PP_ITERATION_PARAMS_3)
+# include <msgpack/preprocessor/iteration/detail/bounds/lower3.hpp>
+# define MSGPACK_PP_VALUE MSGPACK_PP_ARRAY_ELEM(1, MSGPACK_PP_ITERATION_PARAMS_3)
+# include <msgpack/preprocessor/iteration/detail/bounds/upper3.hpp>
+# define MSGPACK_PP_FILENAME_3 MSGPACK_PP_ARRAY_ELEM(2, MSGPACK_PP_ITERATION_PARAMS_3)
+# if MSGPACK_PP_ARRAY_SIZE(MSGPACK_PP_ITERATION_PARAMS_3) >= 4
+# define MSGPACK_PP_ITERATION_FLAGS_3() MSGPACK_PP_ARRAY_ELEM(3, MSGPACK_PP_ITERATION_PARAMS_3)
+# else
+# define MSGPACK_PP_ITERATION_FLAGS_3() 0
+# endif
+# else
+# error MSGPACK_PP_ERROR: depth #3 iteration boundaries or filename not defined
+# endif
+#
+# undef MSGPACK_PP_ITERATION_DEPTH
+# define MSGPACK_PP_ITERATION_DEPTH() 3
+#
+# if (MSGPACK_PP_ITERATION_START_3) > (MSGPACK_PP_ITERATION_FINISH_3)
+# include <msgpack/preprocessor/iteration/detail/iter/reverse3.hpp>
+# else
+# if MSGPACK_PP_ITERATION_START_3 <= 0 && MSGPACK_PP_ITERATION_FINISH_3 >= 0
+# define MSGPACK_PP_ITERATION_3 0
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 1 && MSGPACK_PP_ITERATION_FINISH_3 >= 1
+# define MSGPACK_PP_ITERATION_3 1
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 2 && MSGPACK_PP_ITERATION_FINISH_3 >= 2
+# define MSGPACK_PP_ITERATION_3 2
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 3 && MSGPACK_PP_ITERATION_FINISH_3 >= 3
+# define MSGPACK_PP_ITERATION_3 3
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 4 && MSGPACK_PP_ITERATION_FINISH_3 >= 4
+# define MSGPACK_PP_ITERATION_3 4
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 5 && MSGPACK_PP_ITERATION_FINISH_3 >= 5
+# define MSGPACK_PP_ITERATION_3 5
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 6 && MSGPACK_PP_ITERATION_FINISH_3 >= 6
+# define MSGPACK_PP_ITERATION_3 6
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 7 && MSGPACK_PP_ITERATION_FINISH_3 >= 7
+# define MSGPACK_PP_ITERATION_3 7
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 8 && MSGPACK_PP_ITERATION_FINISH_3 >= 8
+# define MSGPACK_PP_ITERATION_3 8
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 9 && MSGPACK_PP_ITERATION_FINISH_3 >= 9
+# define MSGPACK_PP_ITERATION_3 9
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 10 && MSGPACK_PP_ITERATION_FINISH_3 >= 10
+# define MSGPACK_PP_ITERATION_3 10
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 11 && MSGPACK_PP_ITERATION_FINISH_3 >= 11
+# define MSGPACK_PP_ITERATION_3 11
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 12 && MSGPACK_PP_ITERATION_FINISH_3 >= 12
+# define MSGPACK_PP_ITERATION_3 12
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 13 && MSGPACK_PP_ITERATION_FINISH_3 >= 13
+# define MSGPACK_PP_ITERATION_3 13
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 14 && MSGPACK_PP_ITERATION_FINISH_3 >= 14
+# define MSGPACK_PP_ITERATION_3 14
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 15 && MSGPACK_PP_ITERATION_FINISH_3 >= 15
+# define MSGPACK_PP_ITERATION_3 15
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 16 && MSGPACK_PP_ITERATION_FINISH_3 >= 16
+# define MSGPACK_PP_ITERATION_3 16
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 17 && MSGPACK_PP_ITERATION_FINISH_3 >= 17
+# define MSGPACK_PP_ITERATION_3 17
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 18 && MSGPACK_PP_ITERATION_FINISH_3 >= 18
+# define MSGPACK_PP_ITERATION_3 18
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 19 && MSGPACK_PP_ITERATION_FINISH_3 >= 19
+# define MSGPACK_PP_ITERATION_3 19
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 20 && MSGPACK_PP_ITERATION_FINISH_3 >= 20
+# define MSGPACK_PP_ITERATION_3 20
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 21 && MSGPACK_PP_ITERATION_FINISH_3 >= 21
+# define MSGPACK_PP_ITERATION_3 21
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 22 && MSGPACK_PP_ITERATION_FINISH_3 >= 22
+# define MSGPACK_PP_ITERATION_3 22
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 23 && MSGPACK_PP_ITERATION_FINISH_3 >= 23
+# define MSGPACK_PP_ITERATION_3 23
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 24 && MSGPACK_PP_ITERATION_FINISH_3 >= 24
+# define MSGPACK_PP_ITERATION_3 24
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 25 && MSGPACK_PP_ITERATION_FINISH_3 >= 25
+# define MSGPACK_PP_ITERATION_3 25
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 26 && MSGPACK_PP_ITERATION_FINISH_3 >= 26
+# define MSGPACK_PP_ITERATION_3 26
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 27 && MSGPACK_PP_ITERATION_FINISH_3 >= 27
+# define MSGPACK_PP_ITERATION_3 27
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 28 && MSGPACK_PP_ITERATION_FINISH_3 >= 28
+# define MSGPACK_PP_ITERATION_3 28
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 29 && MSGPACK_PP_ITERATION_FINISH_3 >= 29
+# define MSGPACK_PP_ITERATION_3 29
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 30 && MSGPACK_PP_ITERATION_FINISH_3 >= 30
+# define MSGPACK_PP_ITERATION_3 30
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 31 && MSGPACK_PP_ITERATION_FINISH_3 >= 31
+# define MSGPACK_PP_ITERATION_3 31
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 32 && MSGPACK_PP_ITERATION_FINISH_3 >= 32
+# define MSGPACK_PP_ITERATION_3 32
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 33 && MSGPACK_PP_ITERATION_FINISH_3 >= 33
+# define MSGPACK_PP_ITERATION_3 33
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 34 && MSGPACK_PP_ITERATION_FINISH_3 >= 34
+# define MSGPACK_PP_ITERATION_3 34
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 35 && MSGPACK_PP_ITERATION_FINISH_3 >= 35
+# define MSGPACK_PP_ITERATION_3 35
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 36 && MSGPACK_PP_ITERATION_FINISH_3 >= 36
+# define MSGPACK_PP_ITERATION_3 36
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 37 && MSGPACK_PP_ITERATION_FINISH_3 >= 37
+# define MSGPACK_PP_ITERATION_3 37
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 38 && MSGPACK_PP_ITERATION_FINISH_3 >= 38
+# define MSGPACK_PP_ITERATION_3 38
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 39 && MSGPACK_PP_ITERATION_FINISH_3 >= 39
+# define MSGPACK_PP_ITERATION_3 39
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 40 && MSGPACK_PP_ITERATION_FINISH_3 >= 40
+# define MSGPACK_PP_ITERATION_3 40
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 41 && MSGPACK_PP_ITERATION_FINISH_3 >= 41
+# define MSGPACK_PP_ITERATION_3 41
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 42 && MSGPACK_PP_ITERATION_FINISH_3 >= 42
+# define MSGPACK_PP_ITERATION_3 42
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 43 && MSGPACK_PP_ITERATION_FINISH_3 >= 43
+# define MSGPACK_PP_ITERATION_3 43
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 44 && MSGPACK_PP_ITERATION_FINISH_3 >= 44
+# define MSGPACK_PP_ITERATION_3 44
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 45 && MSGPACK_PP_ITERATION_FINISH_3 >= 45
+# define MSGPACK_PP_ITERATION_3 45
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 46 && MSGPACK_PP_ITERATION_FINISH_3 >= 46
+# define MSGPACK_PP_ITERATION_3 46
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 47 && MSGPACK_PP_ITERATION_FINISH_3 >= 47
+# define MSGPACK_PP_ITERATION_3 47
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 48 && MSGPACK_PP_ITERATION_FINISH_3 >= 48
+# define MSGPACK_PP_ITERATION_3 48
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 49 && MSGPACK_PP_ITERATION_FINISH_3 >= 49
+# define MSGPACK_PP_ITERATION_3 49
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 50 && MSGPACK_PP_ITERATION_FINISH_3 >= 50
+# define MSGPACK_PP_ITERATION_3 50
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 51 && MSGPACK_PP_ITERATION_FINISH_3 >= 51
+# define MSGPACK_PP_ITERATION_3 51
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 52 && MSGPACK_PP_ITERATION_FINISH_3 >= 52
+# define MSGPACK_PP_ITERATION_3 52
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 53 && MSGPACK_PP_ITERATION_FINISH_3 >= 53
+# define MSGPACK_PP_ITERATION_3 53
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 54 && MSGPACK_PP_ITERATION_FINISH_3 >= 54
+# define MSGPACK_PP_ITERATION_3 54
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 55 && MSGPACK_PP_ITERATION_FINISH_3 >= 55
+# define MSGPACK_PP_ITERATION_3 55
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 56 && MSGPACK_PP_ITERATION_FINISH_3 >= 56
+# define MSGPACK_PP_ITERATION_3 56
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 57 && MSGPACK_PP_ITERATION_FINISH_3 >= 57
+# define MSGPACK_PP_ITERATION_3 57
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 58 && MSGPACK_PP_ITERATION_FINISH_3 >= 58
+# define MSGPACK_PP_ITERATION_3 58
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 59 && MSGPACK_PP_ITERATION_FINISH_3 >= 59
+# define MSGPACK_PP_ITERATION_3 59
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 60 && MSGPACK_PP_ITERATION_FINISH_3 >= 60
+# define MSGPACK_PP_ITERATION_3 60
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 61 && MSGPACK_PP_ITERATION_FINISH_3 >= 61
+# define MSGPACK_PP_ITERATION_3 61
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 62 && MSGPACK_PP_ITERATION_FINISH_3 >= 62
+# define MSGPACK_PP_ITERATION_3 62
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 63 && MSGPACK_PP_ITERATION_FINISH_3 >= 63
+# define MSGPACK_PP_ITERATION_3 63
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 64 && MSGPACK_PP_ITERATION_FINISH_3 >= 64
+# define MSGPACK_PP_ITERATION_3 64
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 65 && MSGPACK_PP_ITERATION_FINISH_3 >= 65
+# define MSGPACK_PP_ITERATION_3 65
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 66 && MSGPACK_PP_ITERATION_FINISH_3 >= 66
+# define MSGPACK_PP_ITERATION_3 66
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 67 && MSGPACK_PP_ITERATION_FINISH_3 >= 67
+# define MSGPACK_PP_ITERATION_3 67
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 68 && MSGPACK_PP_ITERATION_FINISH_3 >= 68
+# define MSGPACK_PP_ITERATION_3 68
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 69 && MSGPACK_PP_ITERATION_FINISH_3 >= 69
+# define MSGPACK_PP_ITERATION_3 69
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 70 && MSGPACK_PP_ITERATION_FINISH_3 >= 70
+# define MSGPACK_PP_ITERATION_3 70
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 71 && MSGPACK_PP_ITERATION_FINISH_3 >= 71
+# define MSGPACK_PP_ITERATION_3 71
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 72 && MSGPACK_PP_ITERATION_FINISH_3 >= 72
+# define MSGPACK_PP_ITERATION_3 72
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 73 && MSGPACK_PP_ITERATION_FINISH_3 >= 73
+# define MSGPACK_PP_ITERATION_3 73
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 74 && MSGPACK_PP_ITERATION_FINISH_3 >= 74
+# define MSGPACK_PP_ITERATION_3 74
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 75 && MSGPACK_PP_ITERATION_FINISH_3 >= 75
+# define MSGPACK_PP_ITERATION_3 75
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 76 && MSGPACK_PP_ITERATION_FINISH_3 >= 76
+# define MSGPACK_PP_ITERATION_3 76
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 77 && MSGPACK_PP_ITERATION_FINISH_3 >= 77
+# define MSGPACK_PP_ITERATION_3 77
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 78 && MSGPACK_PP_ITERATION_FINISH_3 >= 78
+# define MSGPACK_PP_ITERATION_3 78
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 79 && MSGPACK_PP_ITERATION_FINISH_3 >= 79
+# define MSGPACK_PP_ITERATION_3 79
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 80 && MSGPACK_PP_ITERATION_FINISH_3 >= 80
+# define MSGPACK_PP_ITERATION_3 80
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 81 && MSGPACK_PP_ITERATION_FINISH_3 >= 81
+# define MSGPACK_PP_ITERATION_3 81
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 82 && MSGPACK_PP_ITERATION_FINISH_3 >= 82
+# define MSGPACK_PP_ITERATION_3 82
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 83 && MSGPACK_PP_ITERATION_FINISH_3 >= 83
+# define MSGPACK_PP_ITERATION_3 83
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 84 && MSGPACK_PP_ITERATION_FINISH_3 >= 84
+# define MSGPACK_PP_ITERATION_3 84
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 85 && MSGPACK_PP_ITERATION_FINISH_3 >= 85
+# define MSGPACK_PP_ITERATION_3 85
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 86 && MSGPACK_PP_ITERATION_FINISH_3 >= 86
+# define MSGPACK_PP_ITERATION_3 86
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 87 && MSGPACK_PP_ITERATION_FINISH_3 >= 87
+# define MSGPACK_PP_ITERATION_3 87
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 88 && MSGPACK_PP_ITERATION_FINISH_3 >= 88
+# define MSGPACK_PP_ITERATION_3 88
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 89 && MSGPACK_PP_ITERATION_FINISH_3 >= 89
+# define MSGPACK_PP_ITERATION_3 89
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 90 && MSGPACK_PP_ITERATION_FINISH_3 >= 90
+# define MSGPACK_PP_ITERATION_3 90
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 91 && MSGPACK_PP_ITERATION_FINISH_3 >= 91
+# define MSGPACK_PP_ITERATION_3 91
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 92 && MSGPACK_PP_ITERATION_FINISH_3 >= 92
+# define MSGPACK_PP_ITERATION_3 92
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 93 && MSGPACK_PP_ITERATION_FINISH_3 >= 93
+# define MSGPACK_PP_ITERATION_3 93
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 94 && MSGPACK_PP_ITERATION_FINISH_3 >= 94
+# define MSGPACK_PP_ITERATION_3 94
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 95 && MSGPACK_PP_ITERATION_FINISH_3 >= 95
+# define MSGPACK_PP_ITERATION_3 95
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 96 && MSGPACK_PP_ITERATION_FINISH_3 >= 96
+# define MSGPACK_PP_ITERATION_3 96
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 97 && MSGPACK_PP_ITERATION_FINISH_3 >= 97
+# define MSGPACK_PP_ITERATION_3 97
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 98 && MSGPACK_PP_ITERATION_FINISH_3 >= 98
+# define MSGPACK_PP_ITERATION_3 98
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 99 && MSGPACK_PP_ITERATION_FINISH_3 >= 99
+# define MSGPACK_PP_ITERATION_3 99
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 100 && MSGPACK_PP_ITERATION_FINISH_3 >= 100
+# define MSGPACK_PP_ITERATION_3 100
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 101 && MSGPACK_PP_ITERATION_FINISH_3 >= 101
+# define MSGPACK_PP_ITERATION_3 101
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 102 && MSGPACK_PP_ITERATION_FINISH_3 >= 102
+# define MSGPACK_PP_ITERATION_3 102
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 103 && MSGPACK_PP_ITERATION_FINISH_3 >= 103
+# define MSGPACK_PP_ITERATION_3 103
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 104 && MSGPACK_PP_ITERATION_FINISH_3 >= 104
+# define MSGPACK_PP_ITERATION_3 104
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 105 && MSGPACK_PP_ITERATION_FINISH_3 >= 105
+# define MSGPACK_PP_ITERATION_3 105
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 106 && MSGPACK_PP_ITERATION_FINISH_3 >= 106
+# define MSGPACK_PP_ITERATION_3 106
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 107 && MSGPACK_PP_ITERATION_FINISH_3 >= 107
+# define MSGPACK_PP_ITERATION_3 107
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 108 && MSGPACK_PP_ITERATION_FINISH_3 >= 108
+# define MSGPACK_PP_ITERATION_3 108
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 109 && MSGPACK_PP_ITERATION_FINISH_3 >= 109
+# define MSGPACK_PP_ITERATION_3 109
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 110 && MSGPACK_PP_ITERATION_FINISH_3 >= 110
+# define MSGPACK_PP_ITERATION_3 110
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 111 && MSGPACK_PP_ITERATION_FINISH_3 >= 111
+# define MSGPACK_PP_ITERATION_3 111
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 112 && MSGPACK_PP_ITERATION_FINISH_3 >= 112
+# define MSGPACK_PP_ITERATION_3 112
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 113 && MSGPACK_PP_ITERATION_FINISH_3 >= 113
+# define MSGPACK_PP_ITERATION_3 113
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 114 && MSGPACK_PP_ITERATION_FINISH_3 >= 114
+# define MSGPACK_PP_ITERATION_3 114
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 115 && MSGPACK_PP_ITERATION_FINISH_3 >= 115
+# define MSGPACK_PP_ITERATION_3 115
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 116 && MSGPACK_PP_ITERATION_FINISH_3 >= 116
+# define MSGPACK_PP_ITERATION_3 116
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 117 && MSGPACK_PP_ITERATION_FINISH_3 >= 117
+# define MSGPACK_PP_ITERATION_3 117
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 118 && MSGPACK_PP_ITERATION_FINISH_3 >= 118
+# define MSGPACK_PP_ITERATION_3 118
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 119 && MSGPACK_PP_ITERATION_FINISH_3 >= 119
+# define MSGPACK_PP_ITERATION_3 119
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 120 && MSGPACK_PP_ITERATION_FINISH_3 >= 120
+# define MSGPACK_PP_ITERATION_3 120
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 121 && MSGPACK_PP_ITERATION_FINISH_3 >= 121
+# define MSGPACK_PP_ITERATION_3 121
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 122 && MSGPACK_PP_ITERATION_FINISH_3 >= 122
+# define MSGPACK_PP_ITERATION_3 122
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 123 && MSGPACK_PP_ITERATION_FINISH_3 >= 123
+# define MSGPACK_PP_ITERATION_3 123
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 124 && MSGPACK_PP_ITERATION_FINISH_3 >= 124
+# define MSGPACK_PP_ITERATION_3 124
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 125 && MSGPACK_PP_ITERATION_FINISH_3 >= 125
+# define MSGPACK_PP_ITERATION_3 125
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 126 && MSGPACK_PP_ITERATION_FINISH_3 >= 126
+# define MSGPACK_PP_ITERATION_3 126
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 127 && MSGPACK_PP_ITERATION_FINISH_3 >= 127
+# define MSGPACK_PP_ITERATION_3 127
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 128 && MSGPACK_PP_ITERATION_FINISH_3 >= 128
+# define MSGPACK_PP_ITERATION_3 128
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 129 && MSGPACK_PP_ITERATION_FINISH_3 >= 129
+# define MSGPACK_PP_ITERATION_3 129
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 130 && MSGPACK_PP_ITERATION_FINISH_3 >= 130
+# define MSGPACK_PP_ITERATION_3 130
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 131 && MSGPACK_PP_ITERATION_FINISH_3 >= 131
+# define MSGPACK_PP_ITERATION_3 131
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 132 && MSGPACK_PP_ITERATION_FINISH_3 >= 132
+# define MSGPACK_PP_ITERATION_3 132
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 133 && MSGPACK_PP_ITERATION_FINISH_3 >= 133
+# define MSGPACK_PP_ITERATION_3 133
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 134 && MSGPACK_PP_ITERATION_FINISH_3 >= 134
+# define MSGPACK_PP_ITERATION_3 134
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 135 && MSGPACK_PP_ITERATION_FINISH_3 >= 135
+# define MSGPACK_PP_ITERATION_3 135
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 136 && MSGPACK_PP_ITERATION_FINISH_3 >= 136
+# define MSGPACK_PP_ITERATION_3 136
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 137 && MSGPACK_PP_ITERATION_FINISH_3 >= 137
+# define MSGPACK_PP_ITERATION_3 137
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 138 && MSGPACK_PP_ITERATION_FINISH_3 >= 138
+# define MSGPACK_PP_ITERATION_3 138
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 139 && MSGPACK_PP_ITERATION_FINISH_3 >= 139
+# define MSGPACK_PP_ITERATION_3 139
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 140 && MSGPACK_PP_ITERATION_FINISH_3 >= 140
+# define MSGPACK_PP_ITERATION_3 140
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 141 && MSGPACK_PP_ITERATION_FINISH_3 >= 141
+# define MSGPACK_PP_ITERATION_3 141
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 142 && MSGPACK_PP_ITERATION_FINISH_3 >= 142
+# define MSGPACK_PP_ITERATION_3 142
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 143 && MSGPACK_PP_ITERATION_FINISH_3 >= 143
+# define MSGPACK_PP_ITERATION_3 143
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 144 && MSGPACK_PP_ITERATION_FINISH_3 >= 144
+# define MSGPACK_PP_ITERATION_3 144
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 145 && MSGPACK_PP_ITERATION_FINISH_3 >= 145
+# define MSGPACK_PP_ITERATION_3 145
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 146 && MSGPACK_PP_ITERATION_FINISH_3 >= 146
+# define MSGPACK_PP_ITERATION_3 146
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 147 && MSGPACK_PP_ITERATION_FINISH_3 >= 147
+# define MSGPACK_PP_ITERATION_3 147
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 148 && MSGPACK_PP_ITERATION_FINISH_3 >= 148
+# define MSGPACK_PP_ITERATION_3 148
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 149 && MSGPACK_PP_ITERATION_FINISH_3 >= 149
+# define MSGPACK_PP_ITERATION_3 149
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 150 && MSGPACK_PP_ITERATION_FINISH_3 >= 150
+# define MSGPACK_PP_ITERATION_3 150
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 151 && MSGPACK_PP_ITERATION_FINISH_3 >= 151
+# define MSGPACK_PP_ITERATION_3 151
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 152 && MSGPACK_PP_ITERATION_FINISH_3 >= 152
+# define MSGPACK_PP_ITERATION_3 152
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 153 && MSGPACK_PP_ITERATION_FINISH_3 >= 153
+# define MSGPACK_PP_ITERATION_3 153
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 154 && MSGPACK_PP_ITERATION_FINISH_3 >= 154
+# define MSGPACK_PP_ITERATION_3 154
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 155 && MSGPACK_PP_ITERATION_FINISH_3 >= 155
+# define MSGPACK_PP_ITERATION_3 155
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 156 && MSGPACK_PP_ITERATION_FINISH_3 >= 156
+# define MSGPACK_PP_ITERATION_3 156
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 157 && MSGPACK_PP_ITERATION_FINISH_3 >= 157
+# define MSGPACK_PP_ITERATION_3 157
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 158 && MSGPACK_PP_ITERATION_FINISH_3 >= 158
+# define MSGPACK_PP_ITERATION_3 158
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 159 && MSGPACK_PP_ITERATION_FINISH_3 >= 159
+# define MSGPACK_PP_ITERATION_3 159
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 160 && MSGPACK_PP_ITERATION_FINISH_3 >= 160
+# define MSGPACK_PP_ITERATION_3 160
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 161 && MSGPACK_PP_ITERATION_FINISH_3 >= 161
+# define MSGPACK_PP_ITERATION_3 161
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 162 && MSGPACK_PP_ITERATION_FINISH_3 >= 162
+# define MSGPACK_PP_ITERATION_3 162
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 163 && MSGPACK_PP_ITERATION_FINISH_3 >= 163
+# define MSGPACK_PP_ITERATION_3 163
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 164 && MSGPACK_PP_ITERATION_FINISH_3 >= 164
+# define MSGPACK_PP_ITERATION_3 164
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 165 && MSGPACK_PP_ITERATION_FINISH_3 >= 165
+# define MSGPACK_PP_ITERATION_3 165
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 166 && MSGPACK_PP_ITERATION_FINISH_3 >= 166
+# define MSGPACK_PP_ITERATION_3 166
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 167 && MSGPACK_PP_ITERATION_FINISH_3 >= 167
+# define MSGPACK_PP_ITERATION_3 167
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 168 && MSGPACK_PP_ITERATION_FINISH_3 >= 168
+# define MSGPACK_PP_ITERATION_3 168
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 169 && MSGPACK_PP_ITERATION_FINISH_3 >= 169
+# define MSGPACK_PP_ITERATION_3 169
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 170 && MSGPACK_PP_ITERATION_FINISH_3 >= 170
+# define MSGPACK_PP_ITERATION_3 170
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 171 && MSGPACK_PP_ITERATION_FINISH_3 >= 171
+# define MSGPACK_PP_ITERATION_3 171
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 172 && MSGPACK_PP_ITERATION_FINISH_3 >= 172
+# define MSGPACK_PP_ITERATION_3 172
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 173 && MSGPACK_PP_ITERATION_FINISH_3 >= 173
+# define MSGPACK_PP_ITERATION_3 173
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 174 && MSGPACK_PP_ITERATION_FINISH_3 >= 174
+# define MSGPACK_PP_ITERATION_3 174
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 175 && MSGPACK_PP_ITERATION_FINISH_3 >= 175
+# define MSGPACK_PP_ITERATION_3 175
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 176 && MSGPACK_PP_ITERATION_FINISH_3 >= 176
+# define MSGPACK_PP_ITERATION_3 176
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 177 && MSGPACK_PP_ITERATION_FINISH_3 >= 177
+# define MSGPACK_PP_ITERATION_3 177
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 178 && MSGPACK_PP_ITERATION_FINISH_3 >= 178
+# define MSGPACK_PP_ITERATION_3 178
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 179 && MSGPACK_PP_ITERATION_FINISH_3 >= 179
+# define MSGPACK_PP_ITERATION_3 179
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 180 && MSGPACK_PP_ITERATION_FINISH_3 >= 180
+# define MSGPACK_PP_ITERATION_3 180
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 181 && MSGPACK_PP_ITERATION_FINISH_3 >= 181
+# define MSGPACK_PP_ITERATION_3 181
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 182 && MSGPACK_PP_ITERATION_FINISH_3 >= 182
+# define MSGPACK_PP_ITERATION_3 182
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 183 && MSGPACK_PP_ITERATION_FINISH_3 >= 183
+# define MSGPACK_PP_ITERATION_3 183
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 184 && MSGPACK_PP_ITERATION_FINISH_3 >= 184
+# define MSGPACK_PP_ITERATION_3 184
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 185 && MSGPACK_PP_ITERATION_FINISH_3 >= 185
+# define MSGPACK_PP_ITERATION_3 185
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 186 && MSGPACK_PP_ITERATION_FINISH_3 >= 186
+# define MSGPACK_PP_ITERATION_3 186
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 187 && MSGPACK_PP_ITERATION_FINISH_3 >= 187
+# define MSGPACK_PP_ITERATION_3 187
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 188 && MSGPACK_PP_ITERATION_FINISH_3 >= 188
+# define MSGPACK_PP_ITERATION_3 188
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 189 && MSGPACK_PP_ITERATION_FINISH_3 >= 189
+# define MSGPACK_PP_ITERATION_3 189
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 190 && MSGPACK_PP_ITERATION_FINISH_3 >= 190
+# define MSGPACK_PP_ITERATION_3 190
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 191 && MSGPACK_PP_ITERATION_FINISH_3 >= 191
+# define MSGPACK_PP_ITERATION_3 191
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 192 && MSGPACK_PP_ITERATION_FINISH_3 >= 192
+# define MSGPACK_PP_ITERATION_3 192
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 193 && MSGPACK_PP_ITERATION_FINISH_3 >= 193
+# define MSGPACK_PP_ITERATION_3 193
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 194 && MSGPACK_PP_ITERATION_FINISH_3 >= 194
+# define MSGPACK_PP_ITERATION_3 194
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 195 && MSGPACK_PP_ITERATION_FINISH_3 >= 195
+# define MSGPACK_PP_ITERATION_3 195
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 196 && MSGPACK_PP_ITERATION_FINISH_3 >= 196
+# define MSGPACK_PP_ITERATION_3 196
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 197 && MSGPACK_PP_ITERATION_FINISH_3 >= 197
+# define MSGPACK_PP_ITERATION_3 197
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 198 && MSGPACK_PP_ITERATION_FINISH_3 >= 198
+# define MSGPACK_PP_ITERATION_3 198
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 199 && MSGPACK_PP_ITERATION_FINISH_3 >= 199
+# define MSGPACK_PP_ITERATION_3 199
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 200 && MSGPACK_PP_ITERATION_FINISH_3 >= 200
+# define MSGPACK_PP_ITERATION_3 200
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 201 && MSGPACK_PP_ITERATION_FINISH_3 >= 201
+# define MSGPACK_PP_ITERATION_3 201
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 202 && MSGPACK_PP_ITERATION_FINISH_3 >= 202
+# define MSGPACK_PP_ITERATION_3 202
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 203 && MSGPACK_PP_ITERATION_FINISH_3 >= 203
+# define MSGPACK_PP_ITERATION_3 203
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 204 && MSGPACK_PP_ITERATION_FINISH_3 >= 204
+# define MSGPACK_PP_ITERATION_3 204
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 205 && MSGPACK_PP_ITERATION_FINISH_3 >= 205
+# define MSGPACK_PP_ITERATION_3 205
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 206 && MSGPACK_PP_ITERATION_FINISH_3 >= 206
+# define MSGPACK_PP_ITERATION_3 206
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 207 && MSGPACK_PP_ITERATION_FINISH_3 >= 207
+# define MSGPACK_PP_ITERATION_3 207
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 208 && MSGPACK_PP_ITERATION_FINISH_3 >= 208
+# define MSGPACK_PP_ITERATION_3 208
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 209 && MSGPACK_PP_ITERATION_FINISH_3 >= 209
+# define MSGPACK_PP_ITERATION_3 209
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 210 && MSGPACK_PP_ITERATION_FINISH_3 >= 210
+# define MSGPACK_PP_ITERATION_3 210
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 211 && MSGPACK_PP_ITERATION_FINISH_3 >= 211
+# define MSGPACK_PP_ITERATION_3 211
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 212 && MSGPACK_PP_ITERATION_FINISH_3 >= 212
+# define MSGPACK_PP_ITERATION_3 212
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 213 && MSGPACK_PP_ITERATION_FINISH_3 >= 213
+# define MSGPACK_PP_ITERATION_3 213
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 214 && MSGPACK_PP_ITERATION_FINISH_3 >= 214
+# define MSGPACK_PP_ITERATION_3 214
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 215 && MSGPACK_PP_ITERATION_FINISH_3 >= 215
+# define MSGPACK_PP_ITERATION_3 215
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 216 && MSGPACK_PP_ITERATION_FINISH_3 >= 216
+# define MSGPACK_PP_ITERATION_3 216
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 217 && MSGPACK_PP_ITERATION_FINISH_3 >= 217
+# define MSGPACK_PP_ITERATION_3 217
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 218 && MSGPACK_PP_ITERATION_FINISH_3 >= 218
+# define MSGPACK_PP_ITERATION_3 218
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 219 && MSGPACK_PP_ITERATION_FINISH_3 >= 219
+# define MSGPACK_PP_ITERATION_3 219
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 220 && MSGPACK_PP_ITERATION_FINISH_3 >= 220
+# define MSGPACK_PP_ITERATION_3 220
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 221 && MSGPACK_PP_ITERATION_FINISH_3 >= 221
+# define MSGPACK_PP_ITERATION_3 221
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 222 && MSGPACK_PP_ITERATION_FINISH_3 >= 222
+# define MSGPACK_PP_ITERATION_3 222
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 223 && MSGPACK_PP_ITERATION_FINISH_3 >= 223
+# define MSGPACK_PP_ITERATION_3 223
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 224 && MSGPACK_PP_ITERATION_FINISH_3 >= 224
+# define MSGPACK_PP_ITERATION_3 224
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 225 && MSGPACK_PP_ITERATION_FINISH_3 >= 225
+# define MSGPACK_PP_ITERATION_3 225
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 226 && MSGPACK_PP_ITERATION_FINISH_3 >= 226
+# define MSGPACK_PP_ITERATION_3 226
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 227 && MSGPACK_PP_ITERATION_FINISH_3 >= 227
+# define MSGPACK_PP_ITERATION_3 227
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 228 && MSGPACK_PP_ITERATION_FINISH_3 >= 228
+# define MSGPACK_PP_ITERATION_3 228
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 229 && MSGPACK_PP_ITERATION_FINISH_3 >= 229
+# define MSGPACK_PP_ITERATION_3 229
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 230 && MSGPACK_PP_ITERATION_FINISH_3 >= 230
+# define MSGPACK_PP_ITERATION_3 230
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 231 && MSGPACK_PP_ITERATION_FINISH_3 >= 231
+# define MSGPACK_PP_ITERATION_3 231
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 232 && MSGPACK_PP_ITERATION_FINISH_3 >= 232
+# define MSGPACK_PP_ITERATION_3 232
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 233 && MSGPACK_PP_ITERATION_FINISH_3 >= 233
+# define MSGPACK_PP_ITERATION_3 233
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 234 && MSGPACK_PP_ITERATION_FINISH_3 >= 234
+# define MSGPACK_PP_ITERATION_3 234
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 235 && MSGPACK_PP_ITERATION_FINISH_3 >= 235
+# define MSGPACK_PP_ITERATION_3 235
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 236 && MSGPACK_PP_ITERATION_FINISH_3 >= 236
+# define MSGPACK_PP_ITERATION_3 236
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 237 && MSGPACK_PP_ITERATION_FINISH_3 >= 237
+# define MSGPACK_PP_ITERATION_3 237
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 238 && MSGPACK_PP_ITERATION_FINISH_3 >= 238
+# define MSGPACK_PP_ITERATION_3 238
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 239 && MSGPACK_PP_ITERATION_FINISH_3 >= 239
+# define MSGPACK_PP_ITERATION_3 239
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 240 && MSGPACK_PP_ITERATION_FINISH_3 >= 240
+# define MSGPACK_PP_ITERATION_3 240
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 241 && MSGPACK_PP_ITERATION_FINISH_3 >= 241
+# define MSGPACK_PP_ITERATION_3 241
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 242 && MSGPACK_PP_ITERATION_FINISH_3 >= 242
+# define MSGPACK_PP_ITERATION_3 242
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 243 && MSGPACK_PP_ITERATION_FINISH_3 >= 243
+# define MSGPACK_PP_ITERATION_3 243
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 244 && MSGPACK_PP_ITERATION_FINISH_3 >= 244
+# define MSGPACK_PP_ITERATION_3 244
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 245 && MSGPACK_PP_ITERATION_FINISH_3 >= 245
+# define MSGPACK_PP_ITERATION_3 245
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 246 && MSGPACK_PP_ITERATION_FINISH_3 >= 246
+# define MSGPACK_PP_ITERATION_3 246
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 247 && MSGPACK_PP_ITERATION_FINISH_3 >= 247
+# define MSGPACK_PP_ITERATION_3 247
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 248 && MSGPACK_PP_ITERATION_FINISH_3 >= 248
+# define MSGPACK_PP_ITERATION_3 248
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 249 && MSGPACK_PP_ITERATION_FINISH_3 >= 249
+# define MSGPACK_PP_ITERATION_3 249
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 250 && MSGPACK_PP_ITERATION_FINISH_3 >= 250
+# define MSGPACK_PP_ITERATION_3 250
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 251 && MSGPACK_PP_ITERATION_FINISH_3 >= 251
+# define MSGPACK_PP_ITERATION_3 251
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 252 && MSGPACK_PP_ITERATION_FINISH_3 >= 252
+# define MSGPACK_PP_ITERATION_3 252
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 253 && MSGPACK_PP_ITERATION_FINISH_3 >= 253
+# define MSGPACK_PP_ITERATION_3 253
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 254 && MSGPACK_PP_ITERATION_FINISH_3 >= 254
+# define MSGPACK_PP_ITERATION_3 254
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 255 && MSGPACK_PP_ITERATION_FINISH_3 >= 255
+# define MSGPACK_PP_ITERATION_3 255
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_START_3 <= 256 && MSGPACK_PP_ITERATION_FINISH_3 >= 256
+# define MSGPACK_PP_ITERATION_3 256
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# endif
+#
+# undef MSGPACK_PP_ITERATION_DEPTH
+# define MSGPACK_PP_ITERATION_DEPTH() 2
+#
+# undef MSGPACK_PP_ITERATION_START_3
+# undef MSGPACK_PP_ITERATION_FINISH_3
+# undef MSGPACK_PP_FILENAME_3
+#
+# undef MSGPACK_PP_ITERATION_FLAGS_3
+# undef MSGPACK_PP_ITERATION_PARAMS_3
diff --git a/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/forward4.hpp b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/forward4.hpp
new file mode 100644
index 0000000000..429d57766f
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/forward4.hpp
@@ -0,0 +1,1338 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if defined(MSGPACK_PP_ITERATION_LIMITS)
+# if !defined(MSGPACK_PP_FILENAME_4)
+# error MSGPACK_PP_ERROR: depth #4 filename is not defined
+# endif
+# define MSGPACK_PP_VALUE MSGPACK_PP_TUPLE_ELEM(2, 0, MSGPACK_PP_ITERATION_LIMITS)
+# include <msgpack/preprocessor/iteration/detail/bounds/lower4.hpp>
+# define MSGPACK_PP_VALUE MSGPACK_PP_TUPLE_ELEM(2, 1, MSGPACK_PP_ITERATION_LIMITS)
+# include <msgpack/preprocessor/iteration/detail/bounds/upper4.hpp>
+# define MSGPACK_PP_ITERATION_FLAGS_4() 0
+# undef MSGPACK_PP_ITERATION_LIMITS
+# elif defined(MSGPACK_PP_ITERATION_PARAMS_4)
+# define MSGPACK_PP_VALUE MSGPACK_PP_ARRAY_ELEM(0, MSGPACK_PP_ITERATION_PARAMS_4)
+# include <msgpack/preprocessor/iteration/detail/bounds/lower4.hpp>
+# define MSGPACK_PP_VALUE MSGPACK_PP_ARRAY_ELEM(1, MSGPACK_PP_ITERATION_PARAMS_4)
+# include <msgpack/preprocessor/iteration/detail/bounds/upper4.hpp>
+# define MSGPACK_PP_FILENAME_4 MSGPACK_PP_ARRAY_ELEM(2, MSGPACK_PP_ITERATION_PARAMS_4)
+# if MSGPACK_PP_ARRAY_SIZE(MSGPACK_PP_ITERATION_PARAMS_4) >= 4
+# define MSGPACK_PP_ITERATION_FLAGS_4() MSGPACK_PP_ARRAY_ELEM(3, MSGPACK_PP_ITERATION_PARAMS_4)
+# else
+# define MSGPACK_PP_ITERATION_FLAGS_4() 0
+# endif
+# else
+# error MSGPACK_PP_ERROR: depth #4 iteration boundaries or filename not defined
+# endif
+#
+# undef MSGPACK_PP_ITERATION_DEPTH
+# define MSGPACK_PP_ITERATION_DEPTH() 4
+#
+# if (MSGPACK_PP_ITERATION_START_4) > (MSGPACK_PP_ITERATION_FINISH_4)
+# include <msgpack/preprocessor/iteration/detail/iter/reverse4.hpp>
+# else
+# if MSGPACK_PP_ITERATION_START_4 <= 0 && MSGPACK_PP_ITERATION_FINISH_4 >= 0
+# define MSGPACK_PP_ITERATION_4 0
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 1 && MSGPACK_PP_ITERATION_FINISH_4 >= 1
+# define MSGPACK_PP_ITERATION_4 1
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 2 && MSGPACK_PP_ITERATION_FINISH_4 >= 2
+# define MSGPACK_PP_ITERATION_4 2
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 3 && MSGPACK_PP_ITERATION_FINISH_4 >= 3
+# define MSGPACK_PP_ITERATION_4 3
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 4 && MSGPACK_PP_ITERATION_FINISH_4 >= 4
+# define MSGPACK_PP_ITERATION_4 4
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 5 && MSGPACK_PP_ITERATION_FINISH_4 >= 5
+# define MSGPACK_PP_ITERATION_4 5
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 6 && MSGPACK_PP_ITERATION_FINISH_4 >= 6
+# define MSGPACK_PP_ITERATION_4 6
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 7 && MSGPACK_PP_ITERATION_FINISH_4 >= 7
+# define MSGPACK_PP_ITERATION_4 7
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 8 && MSGPACK_PP_ITERATION_FINISH_4 >= 8
+# define MSGPACK_PP_ITERATION_4 8
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 9 && MSGPACK_PP_ITERATION_FINISH_4 >= 9
+# define MSGPACK_PP_ITERATION_4 9
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 10 && MSGPACK_PP_ITERATION_FINISH_4 >= 10
+# define MSGPACK_PP_ITERATION_4 10
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 11 && MSGPACK_PP_ITERATION_FINISH_4 >= 11
+# define MSGPACK_PP_ITERATION_4 11
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 12 && MSGPACK_PP_ITERATION_FINISH_4 >= 12
+# define MSGPACK_PP_ITERATION_4 12
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 13 && MSGPACK_PP_ITERATION_FINISH_4 >= 13
+# define MSGPACK_PP_ITERATION_4 13
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 14 && MSGPACK_PP_ITERATION_FINISH_4 >= 14
+# define MSGPACK_PP_ITERATION_4 14
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 15 && MSGPACK_PP_ITERATION_FINISH_4 >= 15
+# define MSGPACK_PP_ITERATION_4 15
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 16 && MSGPACK_PP_ITERATION_FINISH_4 >= 16
+# define MSGPACK_PP_ITERATION_4 16
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 17 && MSGPACK_PP_ITERATION_FINISH_4 >= 17
+# define MSGPACK_PP_ITERATION_4 17
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 18 && MSGPACK_PP_ITERATION_FINISH_4 >= 18
+# define MSGPACK_PP_ITERATION_4 18
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 19 && MSGPACK_PP_ITERATION_FINISH_4 >= 19
+# define MSGPACK_PP_ITERATION_4 19
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 20 && MSGPACK_PP_ITERATION_FINISH_4 >= 20
+# define MSGPACK_PP_ITERATION_4 20
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 21 && MSGPACK_PP_ITERATION_FINISH_4 >= 21
+# define MSGPACK_PP_ITERATION_4 21
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 22 && MSGPACK_PP_ITERATION_FINISH_4 >= 22
+# define MSGPACK_PP_ITERATION_4 22
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 23 && MSGPACK_PP_ITERATION_FINISH_4 >= 23
+# define MSGPACK_PP_ITERATION_4 23
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 24 && MSGPACK_PP_ITERATION_FINISH_4 >= 24
+# define MSGPACK_PP_ITERATION_4 24
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 25 && MSGPACK_PP_ITERATION_FINISH_4 >= 25
+# define MSGPACK_PP_ITERATION_4 25
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 26 && MSGPACK_PP_ITERATION_FINISH_4 >= 26
+# define MSGPACK_PP_ITERATION_4 26
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 27 && MSGPACK_PP_ITERATION_FINISH_4 >= 27
+# define MSGPACK_PP_ITERATION_4 27
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 28 && MSGPACK_PP_ITERATION_FINISH_4 >= 28
+# define MSGPACK_PP_ITERATION_4 28
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 29 && MSGPACK_PP_ITERATION_FINISH_4 >= 29
+# define MSGPACK_PP_ITERATION_4 29
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 30 && MSGPACK_PP_ITERATION_FINISH_4 >= 30
+# define MSGPACK_PP_ITERATION_4 30
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 31 && MSGPACK_PP_ITERATION_FINISH_4 >= 31
+# define MSGPACK_PP_ITERATION_4 31
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 32 && MSGPACK_PP_ITERATION_FINISH_4 >= 32
+# define MSGPACK_PP_ITERATION_4 32
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 33 && MSGPACK_PP_ITERATION_FINISH_4 >= 33
+# define MSGPACK_PP_ITERATION_4 33
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 34 && MSGPACK_PP_ITERATION_FINISH_4 >= 34
+# define MSGPACK_PP_ITERATION_4 34
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 35 && MSGPACK_PP_ITERATION_FINISH_4 >= 35
+# define MSGPACK_PP_ITERATION_4 35
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 36 && MSGPACK_PP_ITERATION_FINISH_4 >= 36
+# define MSGPACK_PP_ITERATION_4 36
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 37 && MSGPACK_PP_ITERATION_FINISH_4 >= 37
+# define MSGPACK_PP_ITERATION_4 37
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 38 && MSGPACK_PP_ITERATION_FINISH_4 >= 38
+# define MSGPACK_PP_ITERATION_4 38
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 39 && MSGPACK_PP_ITERATION_FINISH_4 >= 39
+# define MSGPACK_PP_ITERATION_4 39
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 40 && MSGPACK_PP_ITERATION_FINISH_4 >= 40
+# define MSGPACK_PP_ITERATION_4 40
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 41 && MSGPACK_PP_ITERATION_FINISH_4 >= 41
+# define MSGPACK_PP_ITERATION_4 41
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 42 && MSGPACK_PP_ITERATION_FINISH_4 >= 42
+# define MSGPACK_PP_ITERATION_4 42
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 43 && MSGPACK_PP_ITERATION_FINISH_4 >= 43
+# define MSGPACK_PP_ITERATION_4 43
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 44 && MSGPACK_PP_ITERATION_FINISH_4 >= 44
+# define MSGPACK_PP_ITERATION_4 44
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 45 && MSGPACK_PP_ITERATION_FINISH_4 >= 45
+# define MSGPACK_PP_ITERATION_4 45
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 46 && MSGPACK_PP_ITERATION_FINISH_4 >= 46
+# define MSGPACK_PP_ITERATION_4 46
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 47 && MSGPACK_PP_ITERATION_FINISH_4 >= 47
+# define MSGPACK_PP_ITERATION_4 47
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 48 && MSGPACK_PP_ITERATION_FINISH_4 >= 48
+# define MSGPACK_PP_ITERATION_4 48
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 49 && MSGPACK_PP_ITERATION_FINISH_4 >= 49
+# define MSGPACK_PP_ITERATION_4 49
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 50 && MSGPACK_PP_ITERATION_FINISH_4 >= 50
+# define MSGPACK_PP_ITERATION_4 50
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 51 && MSGPACK_PP_ITERATION_FINISH_4 >= 51
+# define MSGPACK_PP_ITERATION_4 51
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 52 && MSGPACK_PP_ITERATION_FINISH_4 >= 52
+# define MSGPACK_PP_ITERATION_4 52
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 53 && MSGPACK_PP_ITERATION_FINISH_4 >= 53
+# define MSGPACK_PP_ITERATION_4 53
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 54 && MSGPACK_PP_ITERATION_FINISH_4 >= 54
+# define MSGPACK_PP_ITERATION_4 54
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 55 && MSGPACK_PP_ITERATION_FINISH_4 >= 55
+# define MSGPACK_PP_ITERATION_4 55
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 56 && MSGPACK_PP_ITERATION_FINISH_4 >= 56
+# define MSGPACK_PP_ITERATION_4 56
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 57 && MSGPACK_PP_ITERATION_FINISH_4 >= 57
+# define MSGPACK_PP_ITERATION_4 57
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 58 && MSGPACK_PP_ITERATION_FINISH_4 >= 58
+# define MSGPACK_PP_ITERATION_4 58
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 59 && MSGPACK_PP_ITERATION_FINISH_4 >= 59
+# define MSGPACK_PP_ITERATION_4 59
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 60 && MSGPACK_PP_ITERATION_FINISH_4 >= 60
+# define MSGPACK_PP_ITERATION_4 60
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 61 && MSGPACK_PP_ITERATION_FINISH_4 >= 61
+# define MSGPACK_PP_ITERATION_4 61
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 62 && MSGPACK_PP_ITERATION_FINISH_4 >= 62
+# define MSGPACK_PP_ITERATION_4 62
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 63 && MSGPACK_PP_ITERATION_FINISH_4 >= 63
+# define MSGPACK_PP_ITERATION_4 63
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 64 && MSGPACK_PP_ITERATION_FINISH_4 >= 64
+# define MSGPACK_PP_ITERATION_4 64
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 65 && MSGPACK_PP_ITERATION_FINISH_4 >= 65
+# define MSGPACK_PP_ITERATION_4 65
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 66 && MSGPACK_PP_ITERATION_FINISH_4 >= 66
+# define MSGPACK_PP_ITERATION_4 66
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 67 && MSGPACK_PP_ITERATION_FINISH_4 >= 67
+# define MSGPACK_PP_ITERATION_4 67
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 68 && MSGPACK_PP_ITERATION_FINISH_4 >= 68
+# define MSGPACK_PP_ITERATION_4 68
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 69 && MSGPACK_PP_ITERATION_FINISH_4 >= 69
+# define MSGPACK_PP_ITERATION_4 69
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 70 && MSGPACK_PP_ITERATION_FINISH_4 >= 70
+# define MSGPACK_PP_ITERATION_4 70
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 71 && MSGPACK_PP_ITERATION_FINISH_4 >= 71
+# define MSGPACK_PP_ITERATION_4 71
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 72 && MSGPACK_PP_ITERATION_FINISH_4 >= 72
+# define MSGPACK_PP_ITERATION_4 72
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 73 && MSGPACK_PP_ITERATION_FINISH_4 >= 73
+# define MSGPACK_PP_ITERATION_4 73
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 74 && MSGPACK_PP_ITERATION_FINISH_4 >= 74
+# define MSGPACK_PP_ITERATION_4 74
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 75 && MSGPACK_PP_ITERATION_FINISH_4 >= 75
+# define MSGPACK_PP_ITERATION_4 75
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 76 && MSGPACK_PP_ITERATION_FINISH_4 >= 76
+# define MSGPACK_PP_ITERATION_4 76
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 77 && MSGPACK_PP_ITERATION_FINISH_4 >= 77
+# define MSGPACK_PP_ITERATION_4 77
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 78 && MSGPACK_PP_ITERATION_FINISH_4 >= 78
+# define MSGPACK_PP_ITERATION_4 78
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 79 && MSGPACK_PP_ITERATION_FINISH_4 >= 79
+# define MSGPACK_PP_ITERATION_4 79
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 80 && MSGPACK_PP_ITERATION_FINISH_4 >= 80
+# define MSGPACK_PP_ITERATION_4 80
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 81 && MSGPACK_PP_ITERATION_FINISH_4 >= 81
+# define MSGPACK_PP_ITERATION_4 81
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 82 && MSGPACK_PP_ITERATION_FINISH_4 >= 82
+# define MSGPACK_PP_ITERATION_4 82
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 83 && MSGPACK_PP_ITERATION_FINISH_4 >= 83
+# define MSGPACK_PP_ITERATION_4 83
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 84 && MSGPACK_PP_ITERATION_FINISH_4 >= 84
+# define MSGPACK_PP_ITERATION_4 84
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 85 && MSGPACK_PP_ITERATION_FINISH_4 >= 85
+# define MSGPACK_PP_ITERATION_4 85
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 86 && MSGPACK_PP_ITERATION_FINISH_4 >= 86
+# define MSGPACK_PP_ITERATION_4 86
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 87 && MSGPACK_PP_ITERATION_FINISH_4 >= 87
+# define MSGPACK_PP_ITERATION_4 87
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 88 && MSGPACK_PP_ITERATION_FINISH_4 >= 88
+# define MSGPACK_PP_ITERATION_4 88
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 89 && MSGPACK_PP_ITERATION_FINISH_4 >= 89
+# define MSGPACK_PP_ITERATION_4 89
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 90 && MSGPACK_PP_ITERATION_FINISH_4 >= 90
+# define MSGPACK_PP_ITERATION_4 90
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 91 && MSGPACK_PP_ITERATION_FINISH_4 >= 91
+# define MSGPACK_PP_ITERATION_4 91
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 92 && MSGPACK_PP_ITERATION_FINISH_4 >= 92
+# define MSGPACK_PP_ITERATION_4 92
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 93 && MSGPACK_PP_ITERATION_FINISH_4 >= 93
+# define MSGPACK_PP_ITERATION_4 93
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 94 && MSGPACK_PP_ITERATION_FINISH_4 >= 94
+# define MSGPACK_PP_ITERATION_4 94
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 95 && MSGPACK_PP_ITERATION_FINISH_4 >= 95
+# define MSGPACK_PP_ITERATION_4 95
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 96 && MSGPACK_PP_ITERATION_FINISH_4 >= 96
+# define MSGPACK_PP_ITERATION_4 96
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 97 && MSGPACK_PP_ITERATION_FINISH_4 >= 97
+# define MSGPACK_PP_ITERATION_4 97
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 98 && MSGPACK_PP_ITERATION_FINISH_4 >= 98
+# define MSGPACK_PP_ITERATION_4 98
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 99 && MSGPACK_PP_ITERATION_FINISH_4 >= 99
+# define MSGPACK_PP_ITERATION_4 99
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 100 && MSGPACK_PP_ITERATION_FINISH_4 >= 100
+# define MSGPACK_PP_ITERATION_4 100
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 101 && MSGPACK_PP_ITERATION_FINISH_4 >= 101
+# define MSGPACK_PP_ITERATION_4 101
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 102 && MSGPACK_PP_ITERATION_FINISH_4 >= 102
+# define MSGPACK_PP_ITERATION_4 102
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 103 && MSGPACK_PP_ITERATION_FINISH_4 >= 103
+# define MSGPACK_PP_ITERATION_4 103
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 104 && MSGPACK_PP_ITERATION_FINISH_4 >= 104
+# define MSGPACK_PP_ITERATION_4 104
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 105 && MSGPACK_PP_ITERATION_FINISH_4 >= 105
+# define MSGPACK_PP_ITERATION_4 105
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 106 && MSGPACK_PP_ITERATION_FINISH_4 >= 106
+# define MSGPACK_PP_ITERATION_4 106
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 107 && MSGPACK_PP_ITERATION_FINISH_4 >= 107
+# define MSGPACK_PP_ITERATION_4 107
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 108 && MSGPACK_PP_ITERATION_FINISH_4 >= 108
+# define MSGPACK_PP_ITERATION_4 108
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 109 && MSGPACK_PP_ITERATION_FINISH_4 >= 109
+# define MSGPACK_PP_ITERATION_4 109
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 110 && MSGPACK_PP_ITERATION_FINISH_4 >= 110
+# define MSGPACK_PP_ITERATION_4 110
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 111 && MSGPACK_PP_ITERATION_FINISH_4 >= 111
+# define MSGPACK_PP_ITERATION_4 111
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 112 && MSGPACK_PP_ITERATION_FINISH_4 >= 112
+# define MSGPACK_PP_ITERATION_4 112
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 113 && MSGPACK_PP_ITERATION_FINISH_4 >= 113
+# define MSGPACK_PP_ITERATION_4 113
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 114 && MSGPACK_PP_ITERATION_FINISH_4 >= 114
+# define MSGPACK_PP_ITERATION_4 114
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 115 && MSGPACK_PP_ITERATION_FINISH_4 >= 115
+# define MSGPACK_PP_ITERATION_4 115
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 116 && MSGPACK_PP_ITERATION_FINISH_4 >= 116
+# define MSGPACK_PP_ITERATION_4 116
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 117 && MSGPACK_PP_ITERATION_FINISH_4 >= 117
+# define MSGPACK_PP_ITERATION_4 117
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 118 && MSGPACK_PP_ITERATION_FINISH_4 >= 118
+# define MSGPACK_PP_ITERATION_4 118
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 119 && MSGPACK_PP_ITERATION_FINISH_4 >= 119
+# define MSGPACK_PP_ITERATION_4 119
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 120 && MSGPACK_PP_ITERATION_FINISH_4 >= 120
+# define MSGPACK_PP_ITERATION_4 120
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 121 && MSGPACK_PP_ITERATION_FINISH_4 >= 121
+# define MSGPACK_PP_ITERATION_4 121
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 122 && MSGPACK_PP_ITERATION_FINISH_4 >= 122
+# define MSGPACK_PP_ITERATION_4 122
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 123 && MSGPACK_PP_ITERATION_FINISH_4 >= 123
+# define MSGPACK_PP_ITERATION_4 123
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 124 && MSGPACK_PP_ITERATION_FINISH_4 >= 124
+# define MSGPACK_PP_ITERATION_4 124
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 125 && MSGPACK_PP_ITERATION_FINISH_4 >= 125
+# define MSGPACK_PP_ITERATION_4 125
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 126 && MSGPACK_PP_ITERATION_FINISH_4 >= 126
+# define MSGPACK_PP_ITERATION_4 126
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 127 && MSGPACK_PP_ITERATION_FINISH_4 >= 127
+# define MSGPACK_PP_ITERATION_4 127
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 128 && MSGPACK_PP_ITERATION_FINISH_4 >= 128
+# define MSGPACK_PP_ITERATION_4 128
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 129 && MSGPACK_PP_ITERATION_FINISH_4 >= 129
+# define MSGPACK_PP_ITERATION_4 129
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 130 && MSGPACK_PP_ITERATION_FINISH_4 >= 130
+# define MSGPACK_PP_ITERATION_4 130
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 131 && MSGPACK_PP_ITERATION_FINISH_4 >= 131
+# define MSGPACK_PP_ITERATION_4 131
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 132 && MSGPACK_PP_ITERATION_FINISH_4 >= 132
+# define MSGPACK_PP_ITERATION_4 132
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 133 && MSGPACK_PP_ITERATION_FINISH_4 >= 133
+# define MSGPACK_PP_ITERATION_4 133
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 134 && MSGPACK_PP_ITERATION_FINISH_4 >= 134
+# define MSGPACK_PP_ITERATION_4 134
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 135 && MSGPACK_PP_ITERATION_FINISH_4 >= 135
+# define MSGPACK_PP_ITERATION_4 135
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 136 && MSGPACK_PP_ITERATION_FINISH_4 >= 136
+# define MSGPACK_PP_ITERATION_4 136
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 137 && MSGPACK_PP_ITERATION_FINISH_4 >= 137
+# define MSGPACK_PP_ITERATION_4 137
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 138 && MSGPACK_PP_ITERATION_FINISH_4 >= 138
+# define MSGPACK_PP_ITERATION_4 138
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 139 && MSGPACK_PP_ITERATION_FINISH_4 >= 139
+# define MSGPACK_PP_ITERATION_4 139
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 140 && MSGPACK_PP_ITERATION_FINISH_4 >= 140
+# define MSGPACK_PP_ITERATION_4 140
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 141 && MSGPACK_PP_ITERATION_FINISH_4 >= 141
+# define MSGPACK_PP_ITERATION_4 141
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 142 && MSGPACK_PP_ITERATION_FINISH_4 >= 142
+# define MSGPACK_PP_ITERATION_4 142
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 143 && MSGPACK_PP_ITERATION_FINISH_4 >= 143
+# define MSGPACK_PP_ITERATION_4 143
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 144 && MSGPACK_PP_ITERATION_FINISH_4 >= 144
+# define MSGPACK_PP_ITERATION_4 144
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 145 && MSGPACK_PP_ITERATION_FINISH_4 >= 145
+# define MSGPACK_PP_ITERATION_4 145
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 146 && MSGPACK_PP_ITERATION_FINISH_4 >= 146
+# define MSGPACK_PP_ITERATION_4 146
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 147 && MSGPACK_PP_ITERATION_FINISH_4 >= 147
+# define MSGPACK_PP_ITERATION_4 147
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 148 && MSGPACK_PP_ITERATION_FINISH_4 >= 148
+# define MSGPACK_PP_ITERATION_4 148
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 149 && MSGPACK_PP_ITERATION_FINISH_4 >= 149
+# define MSGPACK_PP_ITERATION_4 149
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 150 && MSGPACK_PP_ITERATION_FINISH_4 >= 150
+# define MSGPACK_PP_ITERATION_4 150
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 151 && MSGPACK_PP_ITERATION_FINISH_4 >= 151
+# define MSGPACK_PP_ITERATION_4 151
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 152 && MSGPACK_PP_ITERATION_FINISH_4 >= 152
+# define MSGPACK_PP_ITERATION_4 152
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 153 && MSGPACK_PP_ITERATION_FINISH_4 >= 153
+# define MSGPACK_PP_ITERATION_4 153
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 154 && MSGPACK_PP_ITERATION_FINISH_4 >= 154
+# define MSGPACK_PP_ITERATION_4 154
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 155 && MSGPACK_PP_ITERATION_FINISH_4 >= 155
+# define MSGPACK_PP_ITERATION_4 155
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 156 && MSGPACK_PP_ITERATION_FINISH_4 >= 156
+# define MSGPACK_PP_ITERATION_4 156
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 157 && MSGPACK_PP_ITERATION_FINISH_4 >= 157
+# define MSGPACK_PP_ITERATION_4 157
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 158 && MSGPACK_PP_ITERATION_FINISH_4 >= 158
+# define MSGPACK_PP_ITERATION_4 158
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 159 && MSGPACK_PP_ITERATION_FINISH_4 >= 159
+# define MSGPACK_PP_ITERATION_4 159
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 160 && MSGPACK_PP_ITERATION_FINISH_4 >= 160
+# define MSGPACK_PP_ITERATION_4 160
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 161 && MSGPACK_PP_ITERATION_FINISH_4 >= 161
+# define MSGPACK_PP_ITERATION_4 161
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 162 && MSGPACK_PP_ITERATION_FINISH_4 >= 162
+# define MSGPACK_PP_ITERATION_4 162
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 163 && MSGPACK_PP_ITERATION_FINISH_4 >= 163
+# define MSGPACK_PP_ITERATION_4 163
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 164 && MSGPACK_PP_ITERATION_FINISH_4 >= 164
+# define MSGPACK_PP_ITERATION_4 164
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 165 && MSGPACK_PP_ITERATION_FINISH_4 >= 165
+# define MSGPACK_PP_ITERATION_4 165
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 166 && MSGPACK_PP_ITERATION_FINISH_4 >= 166
+# define MSGPACK_PP_ITERATION_4 166
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 167 && MSGPACK_PP_ITERATION_FINISH_4 >= 167
+# define MSGPACK_PP_ITERATION_4 167
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 168 && MSGPACK_PP_ITERATION_FINISH_4 >= 168
+# define MSGPACK_PP_ITERATION_4 168
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 169 && MSGPACK_PP_ITERATION_FINISH_4 >= 169
+# define MSGPACK_PP_ITERATION_4 169
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 170 && MSGPACK_PP_ITERATION_FINISH_4 >= 170
+# define MSGPACK_PP_ITERATION_4 170
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 171 && MSGPACK_PP_ITERATION_FINISH_4 >= 171
+# define MSGPACK_PP_ITERATION_4 171
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 172 && MSGPACK_PP_ITERATION_FINISH_4 >= 172
+# define MSGPACK_PP_ITERATION_4 172
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 173 && MSGPACK_PP_ITERATION_FINISH_4 >= 173
+# define MSGPACK_PP_ITERATION_4 173
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 174 && MSGPACK_PP_ITERATION_FINISH_4 >= 174
+# define MSGPACK_PP_ITERATION_4 174
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 175 && MSGPACK_PP_ITERATION_FINISH_4 >= 175
+# define MSGPACK_PP_ITERATION_4 175
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 176 && MSGPACK_PP_ITERATION_FINISH_4 >= 176
+# define MSGPACK_PP_ITERATION_4 176
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 177 && MSGPACK_PP_ITERATION_FINISH_4 >= 177
+# define MSGPACK_PP_ITERATION_4 177
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 178 && MSGPACK_PP_ITERATION_FINISH_4 >= 178
+# define MSGPACK_PP_ITERATION_4 178
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 179 && MSGPACK_PP_ITERATION_FINISH_4 >= 179
+# define MSGPACK_PP_ITERATION_4 179
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 180 && MSGPACK_PP_ITERATION_FINISH_4 >= 180
+# define MSGPACK_PP_ITERATION_4 180
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 181 && MSGPACK_PP_ITERATION_FINISH_4 >= 181
+# define MSGPACK_PP_ITERATION_4 181
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 182 && MSGPACK_PP_ITERATION_FINISH_4 >= 182
+# define MSGPACK_PP_ITERATION_4 182
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 183 && MSGPACK_PP_ITERATION_FINISH_4 >= 183
+# define MSGPACK_PP_ITERATION_4 183
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 184 && MSGPACK_PP_ITERATION_FINISH_4 >= 184
+# define MSGPACK_PP_ITERATION_4 184
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 185 && MSGPACK_PP_ITERATION_FINISH_4 >= 185
+# define MSGPACK_PP_ITERATION_4 185
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 186 && MSGPACK_PP_ITERATION_FINISH_4 >= 186
+# define MSGPACK_PP_ITERATION_4 186
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 187 && MSGPACK_PP_ITERATION_FINISH_4 >= 187
+# define MSGPACK_PP_ITERATION_4 187
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 188 && MSGPACK_PP_ITERATION_FINISH_4 >= 188
+# define MSGPACK_PP_ITERATION_4 188
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 189 && MSGPACK_PP_ITERATION_FINISH_4 >= 189
+# define MSGPACK_PP_ITERATION_4 189
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 190 && MSGPACK_PP_ITERATION_FINISH_4 >= 190
+# define MSGPACK_PP_ITERATION_4 190
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 191 && MSGPACK_PP_ITERATION_FINISH_4 >= 191
+# define MSGPACK_PP_ITERATION_4 191
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 192 && MSGPACK_PP_ITERATION_FINISH_4 >= 192
+# define MSGPACK_PP_ITERATION_4 192
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 193 && MSGPACK_PP_ITERATION_FINISH_4 >= 193
+# define MSGPACK_PP_ITERATION_4 193
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 194 && MSGPACK_PP_ITERATION_FINISH_4 >= 194
+# define MSGPACK_PP_ITERATION_4 194
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 195 && MSGPACK_PP_ITERATION_FINISH_4 >= 195
+# define MSGPACK_PP_ITERATION_4 195
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 196 && MSGPACK_PP_ITERATION_FINISH_4 >= 196
+# define MSGPACK_PP_ITERATION_4 196
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 197 && MSGPACK_PP_ITERATION_FINISH_4 >= 197
+# define MSGPACK_PP_ITERATION_4 197
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 198 && MSGPACK_PP_ITERATION_FINISH_4 >= 198
+# define MSGPACK_PP_ITERATION_4 198
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 199 && MSGPACK_PP_ITERATION_FINISH_4 >= 199
+# define MSGPACK_PP_ITERATION_4 199
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 200 && MSGPACK_PP_ITERATION_FINISH_4 >= 200
+# define MSGPACK_PP_ITERATION_4 200
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 201 && MSGPACK_PP_ITERATION_FINISH_4 >= 201
+# define MSGPACK_PP_ITERATION_4 201
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 202 && MSGPACK_PP_ITERATION_FINISH_4 >= 202
+# define MSGPACK_PP_ITERATION_4 202
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 203 && MSGPACK_PP_ITERATION_FINISH_4 >= 203
+# define MSGPACK_PP_ITERATION_4 203
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 204 && MSGPACK_PP_ITERATION_FINISH_4 >= 204
+# define MSGPACK_PP_ITERATION_4 204
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 205 && MSGPACK_PP_ITERATION_FINISH_4 >= 205
+# define MSGPACK_PP_ITERATION_4 205
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 206 && MSGPACK_PP_ITERATION_FINISH_4 >= 206
+# define MSGPACK_PP_ITERATION_4 206
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 207 && MSGPACK_PP_ITERATION_FINISH_4 >= 207
+# define MSGPACK_PP_ITERATION_4 207
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 208 && MSGPACK_PP_ITERATION_FINISH_4 >= 208
+# define MSGPACK_PP_ITERATION_4 208
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 209 && MSGPACK_PP_ITERATION_FINISH_4 >= 209
+# define MSGPACK_PP_ITERATION_4 209
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 210 && MSGPACK_PP_ITERATION_FINISH_4 >= 210
+# define MSGPACK_PP_ITERATION_4 210
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 211 && MSGPACK_PP_ITERATION_FINISH_4 >= 211
+# define MSGPACK_PP_ITERATION_4 211
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 212 && MSGPACK_PP_ITERATION_FINISH_4 >= 212
+# define MSGPACK_PP_ITERATION_4 212
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 213 && MSGPACK_PP_ITERATION_FINISH_4 >= 213
+# define MSGPACK_PP_ITERATION_4 213
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 214 && MSGPACK_PP_ITERATION_FINISH_4 >= 214
+# define MSGPACK_PP_ITERATION_4 214
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 215 && MSGPACK_PP_ITERATION_FINISH_4 >= 215
+# define MSGPACK_PP_ITERATION_4 215
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 216 && MSGPACK_PP_ITERATION_FINISH_4 >= 216
+# define MSGPACK_PP_ITERATION_4 216
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 217 && MSGPACK_PP_ITERATION_FINISH_4 >= 217
+# define MSGPACK_PP_ITERATION_4 217
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 218 && MSGPACK_PP_ITERATION_FINISH_4 >= 218
+# define MSGPACK_PP_ITERATION_4 218
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 219 && MSGPACK_PP_ITERATION_FINISH_4 >= 219
+# define MSGPACK_PP_ITERATION_4 219
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 220 && MSGPACK_PP_ITERATION_FINISH_4 >= 220
+# define MSGPACK_PP_ITERATION_4 220
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 221 && MSGPACK_PP_ITERATION_FINISH_4 >= 221
+# define MSGPACK_PP_ITERATION_4 221
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 222 && MSGPACK_PP_ITERATION_FINISH_4 >= 222
+# define MSGPACK_PP_ITERATION_4 222
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 223 && MSGPACK_PP_ITERATION_FINISH_4 >= 223
+# define MSGPACK_PP_ITERATION_4 223
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 224 && MSGPACK_PP_ITERATION_FINISH_4 >= 224
+# define MSGPACK_PP_ITERATION_4 224
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 225 && MSGPACK_PP_ITERATION_FINISH_4 >= 225
+# define MSGPACK_PP_ITERATION_4 225
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 226 && MSGPACK_PP_ITERATION_FINISH_4 >= 226
+# define MSGPACK_PP_ITERATION_4 226
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 227 && MSGPACK_PP_ITERATION_FINISH_4 >= 227
+# define MSGPACK_PP_ITERATION_4 227
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 228 && MSGPACK_PP_ITERATION_FINISH_4 >= 228
+# define MSGPACK_PP_ITERATION_4 228
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 229 && MSGPACK_PP_ITERATION_FINISH_4 >= 229
+# define MSGPACK_PP_ITERATION_4 229
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 230 && MSGPACK_PP_ITERATION_FINISH_4 >= 230
+# define MSGPACK_PP_ITERATION_4 230
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 231 && MSGPACK_PP_ITERATION_FINISH_4 >= 231
+# define MSGPACK_PP_ITERATION_4 231
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 232 && MSGPACK_PP_ITERATION_FINISH_4 >= 232
+# define MSGPACK_PP_ITERATION_4 232
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 233 && MSGPACK_PP_ITERATION_FINISH_4 >= 233
+# define MSGPACK_PP_ITERATION_4 233
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 234 && MSGPACK_PP_ITERATION_FINISH_4 >= 234
+# define MSGPACK_PP_ITERATION_4 234
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 235 && MSGPACK_PP_ITERATION_FINISH_4 >= 235
+# define MSGPACK_PP_ITERATION_4 235
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 236 && MSGPACK_PP_ITERATION_FINISH_4 >= 236
+# define MSGPACK_PP_ITERATION_4 236
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 237 && MSGPACK_PP_ITERATION_FINISH_4 >= 237
+# define MSGPACK_PP_ITERATION_4 237
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 238 && MSGPACK_PP_ITERATION_FINISH_4 >= 238
+# define MSGPACK_PP_ITERATION_4 238
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 239 && MSGPACK_PP_ITERATION_FINISH_4 >= 239
+# define MSGPACK_PP_ITERATION_4 239
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 240 && MSGPACK_PP_ITERATION_FINISH_4 >= 240
+# define MSGPACK_PP_ITERATION_4 240
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 241 && MSGPACK_PP_ITERATION_FINISH_4 >= 241
+# define MSGPACK_PP_ITERATION_4 241
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 242 && MSGPACK_PP_ITERATION_FINISH_4 >= 242
+# define MSGPACK_PP_ITERATION_4 242
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 243 && MSGPACK_PP_ITERATION_FINISH_4 >= 243
+# define MSGPACK_PP_ITERATION_4 243
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 244 && MSGPACK_PP_ITERATION_FINISH_4 >= 244
+# define MSGPACK_PP_ITERATION_4 244
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 245 && MSGPACK_PP_ITERATION_FINISH_4 >= 245
+# define MSGPACK_PP_ITERATION_4 245
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 246 && MSGPACK_PP_ITERATION_FINISH_4 >= 246
+# define MSGPACK_PP_ITERATION_4 246
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 247 && MSGPACK_PP_ITERATION_FINISH_4 >= 247
+# define MSGPACK_PP_ITERATION_4 247
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 248 && MSGPACK_PP_ITERATION_FINISH_4 >= 248
+# define MSGPACK_PP_ITERATION_4 248
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 249 && MSGPACK_PP_ITERATION_FINISH_4 >= 249
+# define MSGPACK_PP_ITERATION_4 249
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 250 && MSGPACK_PP_ITERATION_FINISH_4 >= 250
+# define MSGPACK_PP_ITERATION_4 250
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 251 && MSGPACK_PP_ITERATION_FINISH_4 >= 251
+# define MSGPACK_PP_ITERATION_4 251
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 252 && MSGPACK_PP_ITERATION_FINISH_4 >= 252
+# define MSGPACK_PP_ITERATION_4 252
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 253 && MSGPACK_PP_ITERATION_FINISH_4 >= 253
+# define MSGPACK_PP_ITERATION_4 253
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 254 && MSGPACK_PP_ITERATION_FINISH_4 >= 254
+# define MSGPACK_PP_ITERATION_4 254
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 255 && MSGPACK_PP_ITERATION_FINISH_4 >= 255
+# define MSGPACK_PP_ITERATION_4 255
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_START_4 <= 256 && MSGPACK_PP_ITERATION_FINISH_4 >= 256
+# define MSGPACK_PP_ITERATION_4 256
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# endif
+#
+# undef MSGPACK_PP_ITERATION_DEPTH
+# define MSGPACK_PP_ITERATION_DEPTH() 3
+#
+# undef MSGPACK_PP_ITERATION_START_4
+# undef MSGPACK_PP_ITERATION_FINISH_4
+# undef MSGPACK_PP_FILENAME_4
+#
+# undef MSGPACK_PP_ITERATION_FLAGS_4
+# undef MSGPACK_PP_ITERATION_PARAMS_4
diff --git a/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/forward5.hpp b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/forward5.hpp
new file mode 100644
index 0000000000..7d4ef1981e
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/forward5.hpp
@@ -0,0 +1,1338 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if defined(MSGPACK_PP_ITERATION_LIMITS)
+# if !defined(MSGPACK_PP_FILENAME_5)
+# error MSGPACK_PP_ERROR: depth #5 filename is not defined
+# endif
+# define MSGPACK_PP_VALUE MSGPACK_PP_TUPLE_ELEM(2, 0, MSGPACK_PP_ITERATION_LIMITS)
+# include <msgpack/preprocessor/iteration/detail/bounds/lower5.hpp>
+# define MSGPACK_PP_VALUE MSGPACK_PP_TUPLE_ELEM(2, 1, MSGPACK_PP_ITERATION_LIMITS)
+# include <msgpack/preprocessor/iteration/detail/bounds/upper5.hpp>
+# define MSGPACK_PP_ITERATION_FLAGS_5() 0
+# undef MSGPACK_PP_ITERATION_LIMITS
+# elif defined(MSGPACK_PP_ITERATION_PARAMS_5)
+# define MSGPACK_PP_VALUE MSGPACK_PP_ARRAY_ELEM(0, MSGPACK_PP_ITERATION_PARAMS_5)
+# include <msgpack/preprocessor/iteration/detail/bounds/lower5.hpp>
+# define MSGPACK_PP_VALUE MSGPACK_PP_ARRAY_ELEM(1, MSGPACK_PP_ITERATION_PARAMS_5)
+# include <msgpack/preprocessor/iteration/detail/bounds/upper5.hpp>
+# define MSGPACK_PP_FILENAME_5 MSGPACK_PP_ARRAY_ELEM(2, MSGPACK_PP_ITERATION_PARAMS_5)
+# if MSGPACK_PP_ARRAY_SIZE(MSGPACK_PP_ITERATION_PARAMS_5) >= 4
+# define MSGPACK_PP_ITERATION_FLAGS_5() MSGPACK_PP_ARRAY_ELEM(3, MSGPACK_PP_ITERATION_PARAMS_5)
+# else
+# define MSGPACK_PP_ITERATION_FLAGS_5() 0
+# endif
+# else
+# error MSGPACK_PP_ERROR: depth #5 iteration boundaries or filename not defined
+# endif
+#
+# undef MSGPACK_PP_ITERATION_DEPTH
+# define MSGPACK_PP_ITERATION_DEPTH() 5
+#
+# if (MSGPACK_PP_ITERATION_START_5) > (MSGPACK_PP_ITERATION_FINISH_5)
+# include <msgpack/preprocessor/iteration/detail/iter/reverse5.hpp>
+# else
+# if MSGPACK_PP_ITERATION_START_5 <= 0 && MSGPACK_PP_ITERATION_FINISH_5 >= 0
+# define MSGPACK_PP_ITERATION_5 0
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 1 && MSGPACK_PP_ITERATION_FINISH_5 >= 1
+# define MSGPACK_PP_ITERATION_5 1
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 2 && MSGPACK_PP_ITERATION_FINISH_5 >= 2
+# define MSGPACK_PP_ITERATION_5 2
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 3 && MSGPACK_PP_ITERATION_FINISH_5 >= 3
+# define MSGPACK_PP_ITERATION_5 3
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 4 && MSGPACK_PP_ITERATION_FINISH_5 >= 4
+# define MSGPACK_PP_ITERATION_5 4
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 5 && MSGPACK_PP_ITERATION_FINISH_5 >= 5
+# define MSGPACK_PP_ITERATION_5 5
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 6 && MSGPACK_PP_ITERATION_FINISH_5 >= 6
+# define MSGPACK_PP_ITERATION_5 6
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 7 && MSGPACK_PP_ITERATION_FINISH_5 >= 7
+# define MSGPACK_PP_ITERATION_5 7
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 8 && MSGPACK_PP_ITERATION_FINISH_5 >= 8
+# define MSGPACK_PP_ITERATION_5 8
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 9 && MSGPACK_PP_ITERATION_FINISH_5 >= 9
+# define MSGPACK_PP_ITERATION_5 9
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 10 && MSGPACK_PP_ITERATION_FINISH_5 >= 10
+# define MSGPACK_PP_ITERATION_5 10
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 11 && MSGPACK_PP_ITERATION_FINISH_5 >= 11
+# define MSGPACK_PP_ITERATION_5 11
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 12 && MSGPACK_PP_ITERATION_FINISH_5 >= 12
+# define MSGPACK_PP_ITERATION_5 12
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 13 && MSGPACK_PP_ITERATION_FINISH_5 >= 13
+# define MSGPACK_PP_ITERATION_5 13
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 14 && MSGPACK_PP_ITERATION_FINISH_5 >= 14
+# define MSGPACK_PP_ITERATION_5 14
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 15 && MSGPACK_PP_ITERATION_FINISH_5 >= 15
+# define MSGPACK_PP_ITERATION_5 15
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 16 && MSGPACK_PP_ITERATION_FINISH_5 >= 16
+# define MSGPACK_PP_ITERATION_5 16
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 17 && MSGPACK_PP_ITERATION_FINISH_5 >= 17
+# define MSGPACK_PP_ITERATION_5 17
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 18 && MSGPACK_PP_ITERATION_FINISH_5 >= 18
+# define MSGPACK_PP_ITERATION_5 18
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 19 && MSGPACK_PP_ITERATION_FINISH_5 >= 19
+# define MSGPACK_PP_ITERATION_5 19
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 20 && MSGPACK_PP_ITERATION_FINISH_5 >= 20
+# define MSGPACK_PP_ITERATION_5 20
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 21 && MSGPACK_PP_ITERATION_FINISH_5 >= 21
+# define MSGPACK_PP_ITERATION_5 21
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 22 && MSGPACK_PP_ITERATION_FINISH_5 >= 22
+# define MSGPACK_PP_ITERATION_5 22
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 23 && MSGPACK_PP_ITERATION_FINISH_5 >= 23
+# define MSGPACK_PP_ITERATION_5 23
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 24 && MSGPACK_PP_ITERATION_FINISH_5 >= 24
+# define MSGPACK_PP_ITERATION_5 24
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 25 && MSGPACK_PP_ITERATION_FINISH_5 >= 25
+# define MSGPACK_PP_ITERATION_5 25
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 26 && MSGPACK_PP_ITERATION_FINISH_5 >= 26
+# define MSGPACK_PP_ITERATION_5 26
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 27 && MSGPACK_PP_ITERATION_FINISH_5 >= 27
+# define MSGPACK_PP_ITERATION_5 27
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 28 && MSGPACK_PP_ITERATION_FINISH_5 >= 28
+# define MSGPACK_PP_ITERATION_5 28
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 29 && MSGPACK_PP_ITERATION_FINISH_5 >= 29
+# define MSGPACK_PP_ITERATION_5 29
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 30 && MSGPACK_PP_ITERATION_FINISH_5 >= 30
+# define MSGPACK_PP_ITERATION_5 30
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 31 && MSGPACK_PP_ITERATION_FINISH_5 >= 31
+# define MSGPACK_PP_ITERATION_5 31
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 32 && MSGPACK_PP_ITERATION_FINISH_5 >= 32
+# define MSGPACK_PP_ITERATION_5 32
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 33 && MSGPACK_PP_ITERATION_FINISH_5 >= 33
+# define MSGPACK_PP_ITERATION_5 33
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 34 && MSGPACK_PP_ITERATION_FINISH_5 >= 34
+# define MSGPACK_PP_ITERATION_5 34
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 35 && MSGPACK_PP_ITERATION_FINISH_5 >= 35
+# define MSGPACK_PP_ITERATION_5 35
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 36 && MSGPACK_PP_ITERATION_FINISH_5 >= 36
+# define MSGPACK_PP_ITERATION_5 36
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 37 && MSGPACK_PP_ITERATION_FINISH_5 >= 37
+# define MSGPACK_PP_ITERATION_5 37
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 38 && MSGPACK_PP_ITERATION_FINISH_5 >= 38
+# define MSGPACK_PP_ITERATION_5 38
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 39 && MSGPACK_PP_ITERATION_FINISH_5 >= 39
+# define MSGPACK_PP_ITERATION_5 39
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 40 && MSGPACK_PP_ITERATION_FINISH_5 >= 40
+# define MSGPACK_PP_ITERATION_5 40
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 41 && MSGPACK_PP_ITERATION_FINISH_5 >= 41
+# define MSGPACK_PP_ITERATION_5 41
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 42 && MSGPACK_PP_ITERATION_FINISH_5 >= 42
+# define MSGPACK_PP_ITERATION_5 42
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 43 && MSGPACK_PP_ITERATION_FINISH_5 >= 43
+# define MSGPACK_PP_ITERATION_5 43
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 44 && MSGPACK_PP_ITERATION_FINISH_5 >= 44
+# define MSGPACK_PP_ITERATION_5 44
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 45 && MSGPACK_PP_ITERATION_FINISH_5 >= 45
+# define MSGPACK_PP_ITERATION_5 45
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 46 && MSGPACK_PP_ITERATION_FINISH_5 >= 46
+# define MSGPACK_PP_ITERATION_5 46
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 47 && MSGPACK_PP_ITERATION_FINISH_5 >= 47
+# define MSGPACK_PP_ITERATION_5 47
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 48 && MSGPACK_PP_ITERATION_FINISH_5 >= 48
+# define MSGPACK_PP_ITERATION_5 48
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 49 && MSGPACK_PP_ITERATION_FINISH_5 >= 49
+# define MSGPACK_PP_ITERATION_5 49
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 50 && MSGPACK_PP_ITERATION_FINISH_5 >= 50
+# define MSGPACK_PP_ITERATION_5 50
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 51 && MSGPACK_PP_ITERATION_FINISH_5 >= 51
+# define MSGPACK_PP_ITERATION_5 51
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 52 && MSGPACK_PP_ITERATION_FINISH_5 >= 52
+# define MSGPACK_PP_ITERATION_5 52
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 53 && MSGPACK_PP_ITERATION_FINISH_5 >= 53
+# define MSGPACK_PP_ITERATION_5 53
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 54 && MSGPACK_PP_ITERATION_FINISH_5 >= 54
+# define MSGPACK_PP_ITERATION_5 54
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 55 && MSGPACK_PP_ITERATION_FINISH_5 >= 55
+# define MSGPACK_PP_ITERATION_5 55
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 56 && MSGPACK_PP_ITERATION_FINISH_5 >= 56
+# define MSGPACK_PP_ITERATION_5 56
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 57 && MSGPACK_PP_ITERATION_FINISH_5 >= 57
+# define MSGPACK_PP_ITERATION_5 57
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 58 && MSGPACK_PP_ITERATION_FINISH_5 >= 58
+# define MSGPACK_PP_ITERATION_5 58
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 59 && MSGPACK_PP_ITERATION_FINISH_5 >= 59
+# define MSGPACK_PP_ITERATION_5 59
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 60 && MSGPACK_PP_ITERATION_FINISH_5 >= 60
+# define MSGPACK_PP_ITERATION_5 60
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 61 && MSGPACK_PP_ITERATION_FINISH_5 >= 61
+# define MSGPACK_PP_ITERATION_5 61
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 62 && MSGPACK_PP_ITERATION_FINISH_5 >= 62
+# define MSGPACK_PP_ITERATION_5 62
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 63 && MSGPACK_PP_ITERATION_FINISH_5 >= 63
+# define MSGPACK_PP_ITERATION_5 63
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 64 && MSGPACK_PP_ITERATION_FINISH_5 >= 64
+# define MSGPACK_PP_ITERATION_5 64
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 65 && MSGPACK_PP_ITERATION_FINISH_5 >= 65
+# define MSGPACK_PP_ITERATION_5 65
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 66 && MSGPACK_PP_ITERATION_FINISH_5 >= 66
+# define MSGPACK_PP_ITERATION_5 66
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 67 && MSGPACK_PP_ITERATION_FINISH_5 >= 67
+# define MSGPACK_PP_ITERATION_5 67
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 68 && MSGPACK_PP_ITERATION_FINISH_5 >= 68
+# define MSGPACK_PP_ITERATION_5 68
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 69 && MSGPACK_PP_ITERATION_FINISH_5 >= 69
+# define MSGPACK_PP_ITERATION_5 69
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 70 && MSGPACK_PP_ITERATION_FINISH_5 >= 70
+# define MSGPACK_PP_ITERATION_5 70
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 71 && MSGPACK_PP_ITERATION_FINISH_5 >= 71
+# define MSGPACK_PP_ITERATION_5 71
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 72 && MSGPACK_PP_ITERATION_FINISH_5 >= 72
+# define MSGPACK_PP_ITERATION_5 72
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 73 && MSGPACK_PP_ITERATION_FINISH_5 >= 73
+# define MSGPACK_PP_ITERATION_5 73
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 74 && MSGPACK_PP_ITERATION_FINISH_5 >= 74
+# define MSGPACK_PP_ITERATION_5 74
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 75 && MSGPACK_PP_ITERATION_FINISH_5 >= 75
+# define MSGPACK_PP_ITERATION_5 75
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 76 && MSGPACK_PP_ITERATION_FINISH_5 >= 76
+# define MSGPACK_PP_ITERATION_5 76
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 77 && MSGPACK_PP_ITERATION_FINISH_5 >= 77
+# define MSGPACK_PP_ITERATION_5 77
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 78 && MSGPACK_PP_ITERATION_FINISH_5 >= 78
+# define MSGPACK_PP_ITERATION_5 78
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 79 && MSGPACK_PP_ITERATION_FINISH_5 >= 79
+# define MSGPACK_PP_ITERATION_5 79
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 80 && MSGPACK_PP_ITERATION_FINISH_5 >= 80
+# define MSGPACK_PP_ITERATION_5 80
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 81 && MSGPACK_PP_ITERATION_FINISH_5 >= 81
+# define MSGPACK_PP_ITERATION_5 81
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 82 && MSGPACK_PP_ITERATION_FINISH_5 >= 82
+# define MSGPACK_PP_ITERATION_5 82
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 83 && MSGPACK_PP_ITERATION_FINISH_5 >= 83
+# define MSGPACK_PP_ITERATION_5 83
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 84 && MSGPACK_PP_ITERATION_FINISH_5 >= 84
+# define MSGPACK_PP_ITERATION_5 84
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 85 && MSGPACK_PP_ITERATION_FINISH_5 >= 85
+# define MSGPACK_PP_ITERATION_5 85
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 86 && MSGPACK_PP_ITERATION_FINISH_5 >= 86
+# define MSGPACK_PP_ITERATION_5 86
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 87 && MSGPACK_PP_ITERATION_FINISH_5 >= 87
+# define MSGPACK_PP_ITERATION_5 87
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 88 && MSGPACK_PP_ITERATION_FINISH_5 >= 88
+# define MSGPACK_PP_ITERATION_5 88
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 89 && MSGPACK_PP_ITERATION_FINISH_5 >= 89
+# define MSGPACK_PP_ITERATION_5 89
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 90 && MSGPACK_PP_ITERATION_FINISH_5 >= 90
+# define MSGPACK_PP_ITERATION_5 90
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 91 && MSGPACK_PP_ITERATION_FINISH_5 >= 91
+# define MSGPACK_PP_ITERATION_5 91
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 92 && MSGPACK_PP_ITERATION_FINISH_5 >= 92
+# define MSGPACK_PP_ITERATION_5 92
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 93 && MSGPACK_PP_ITERATION_FINISH_5 >= 93
+# define MSGPACK_PP_ITERATION_5 93
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 94 && MSGPACK_PP_ITERATION_FINISH_5 >= 94
+# define MSGPACK_PP_ITERATION_5 94
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 95 && MSGPACK_PP_ITERATION_FINISH_5 >= 95
+# define MSGPACK_PP_ITERATION_5 95
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 96 && MSGPACK_PP_ITERATION_FINISH_5 >= 96
+# define MSGPACK_PP_ITERATION_5 96
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 97 && MSGPACK_PP_ITERATION_FINISH_5 >= 97
+# define MSGPACK_PP_ITERATION_5 97
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 98 && MSGPACK_PP_ITERATION_FINISH_5 >= 98
+# define MSGPACK_PP_ITERATION_5 98
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 99 && MSGPACK_PP_ITERATION_FINISH_5 >= 99
+# define MSGPACK_PP_ITERATION_5 99
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 100 && MSGPACK_PP_ITERATION_FINISH_5 >= 100
+# define MSGPACK_PP_ITERATION_5 100
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 101 && MSGPACK_PP_ITERATION_FINISH_5 >= 101
+# define MSGPACK_PP_ITERATION_5 101
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 102 && MSGPACK_PP_ITERATION_FINISH_5 >= 102
+# define MSGPACK_PP_ITERATION_5 102
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 103 && MSGPACK_PP_ITERATION_FINISH_5 >= 103
+# define MSGPACK_PP_ITERATION_5 103
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 104 && MSGPACK_PP_ITERATION_FINISH_5 >= 104
+# define MSGPACK_PP_ITERATION_5 104
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 105 && MSGPACK_PP_ITERATION_FINISH_5 >= 105
+# define MSGPACK_PP_ITERATION_5 105
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 106 && MSGPACK_PP_ITERATION_FINISH_5 >= 106
+# define MSGPACK_PP_ITERATION_5 106
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 107 && MSGPACK_PP_ITERATION_FINISH_5 >= 107
+# define MSGPACK_PP_ITERATION_5 107
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 108 && MSGPACK_PP_ITERATION_FINISH_5 >= 108
+# define MSGPACK_PP_ITERATION_5 108
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 109 && MSGPACK_PP_ITERATION_FINISH_5 >= 109
+# define MSGPACK_PP_ITERATION_5 109
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 110 && MSGPACK_PP_ITERATION_FINISH_5 >= 110
+# define MSGPACK_PP_ITERATION_5 110
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 111 && MSGPACK_PP_ITERATION_FINISH_5 >= 111
+# define MSGPACK_PP_ITERATION_5 111
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 112 && MSGPACK_PP_ITERATION_FINISH_5 >= 112
+# define MSGPACK_PP_ITERATION_5 112
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 113 && MSGPACK_PP_ITERATION_FINISH_5 >= 113
+# define MSGPACK_PP_ITERATION_5 113
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 114 && MSGPACK_PP_ITERATION_FINISH_5 >= 114
+# define MSGPACK_PP_ITERATION_5 114
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 115 && MSGPACK_PP_ITERATION_FINISH_5 >= 115
+# define MSGPACK_PP_ITERATION_5 115
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 116 && MSGPACK_PP_ITERATION_FINISH_5 >= 116
+# define MSGPACK_PP_ITERATION_5 116
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 117 && MSGPACK_PP_ITERATION_FINISH_5 >= 117
+# define MSGPACK_PP_ITERATION_5 117
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 118 && MSGPACK_PP_ITERATION_FINISH_5 >= 118
+# define MSGPACK_PP_ITERATION_5 118
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 119 && MSGPACK_PP_ITERATION_FINISH_5 >= 119
+# define MSGPACK_PP_ITERATION_5 119
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 120 && MSGPACK_PP_ITERATION_FINISH_5 >= 120
+# define MSGPACK_PP_ITERATION_5 120
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 121 && MSGPACK_PP_ITERATION_FINISH_5 >= 121
+# define MSGPACK_PP_ITERATION_5 121
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 122 && MSGPACK_PP_ITERATION_FINISH_5 >= 122
+# define MSGPACK_PP_ITERATION_5 122
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 123 && MSGPACK_PP_ITERATION_FINISH_5 >= 123
+# define MSGPACK_PP_ITERATION_5 123
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 124 && MSGPACK_PP_ITERATION_FINISH_5 >= 124
+# define MSGPACK_PP_ITERATION_5 124
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 125 && MSGPACK_PP_ITERATION_FINISH_5 >= 125
+# define MSGPACK_PP_ITERATION_5 125
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 126 && MSGPACK_PP_ITERATION_FINISH_5 >= 126
+# define MSGPACK_PP_ITERATION_5 126
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 127 && MSGPACK_PP_ITERATION_FINISH_5 >= 127
+# define MSGPACK_PP_ITERATION_5 127
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 128 && MSGPACK_PP_ITERATION_FINISH_5 >= 128
+# define MSGPACK_PP_ITERATION_5 128
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 129 && MSGPACK_PP_ITERATION_FINISH_5 >= 129
+# define MSGPACK_PP_ITERATION_5 129
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 130 && MSGPACK_PP_ITERATION_FINISH_5 >= 130
+# define MSGPACK_PP_ITERATION_5 130
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 131 && MSGPACK_PP_ITERATION_FINISH_5 >= 131
+# define MSGPACK_PP_ITERATION_5 131
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 132 && MSGPACK_PP_ITERATION_FINISH_5 >= 132
+# define MSGPACK_PP_ITERATION_5 132
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 133 && MSGPACK_PP_ITERATION_FINISH_5 >= 133
+# define MSGPACK_PP_ITERATION_5 133
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 134 && MSGPACK_PP_ITERATION_FINISH_5 >= 134
+# define MSGPACK_PP_ITERATION_5 134
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 135 && MSGPACK_PP_ITERATION_FINISH_5 >= 135
+# define MSGPACK_PP_ITERATION_5 135
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 136 && MSGPACK_PP_ITERATION_FINISH_5 >= 136
+# define MSGPACK_PP_ITERATION_5 136
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 137 && MSGPACK_PP_ITERATION_FINISH_5 >= 137
+# define MSGPACK_PP_ITERATION_5 137
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 138 && MSGPACK_PP_ITERATION_FINISH_5 >= 138
+# define MSGPACK_PP_ITERATION_5 138
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 139 && MSGPACK_PP_ITERATION_FINISH_5 >= 139
+# define MSGPACK_PP_ITERATION_5 139
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 140 && MSGPACK_PP_ITERATION_FINISH_5 >= 140
+# define MSGPACK_PP_ITERATION_5 140
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 141 && MSGPACK_PP_ITERATION_FINISH_5 >= 141
+# define MSGPACK_PP_ITERATION_5 141
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 142 && MSGPACK_PP_ITERATION_FINISH_5 >= 142
+# define MSGPACK_PP_ITERATION_5 142
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 143 && MSGPACK_PP_ITERATION_FINISH_5 >= 143
+# define MSGPACK_PP_ITERATION_5 143
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 144 && MSGPACK_PP_ITERATION_FINISH_5 >= 144
+# define MSGPACK_PP_ITERATION_5 144
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 145 && MSGPACK_PP_ITERATION_FINISH_5 >= 145
+# define MSGPACK_PP_ITERATION_5 145
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 146 && MSGPACK_PP_ITERATION_FINISH_5 >= 146
+# define MSGPACK_PP_ITERATION_5 146
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 147 && MSGPACK_PP_ITERATION_FINISH_5 >= 147
+# define MSGPACK_PP_ITERATION_5 147
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 148 && MSGPACK_PP_ITERATION_FINISH_5 >= 148
+# define MSGPACK_PP_ITERATION_5 148
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 149 && MSGPACK_PP_ITERATION_FINISH_5 >= 149
+# define MSGPACK_PP_ITERATION_5 149
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 150 && MSGPACK_PP_ITERATION_FINISH_5 >= 150
+# define MSGPACK_PP_ITERATION_5 150
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 151 && MSGPACK_PP_ITERATION_FINISH_5 >= 151
+# define MSGPACK_PP_ITERATION_5 151
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 152 && MSGPACK_PP_ITERATION_FINISH_5 >= 152
+# define MSGPACK_PP_ITERATION_5 152
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 153 && MSGPACK_PP_ITERATION_FINISH_5 >= 153
+# define MSGPACK_PP_ITERATION_5 153
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 154 && MSGPACK_PP_ITERATION_FINISH_5 >= 154
+# define MSGPACK_PP_ITERATION_5 154
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 155 && MSGPACK_PP_ITERATION_FINISH_5 >= 155
+# define MSGPACK_PP_ITERATION_5 155
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 156 && MSGPACK_PP_ITERATION_FINISH_5 >= 156
+# define MSGPACK_PP_ITERATION_5 156
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 157 && MSGPACK_PP_ITERATION_FINISH_5 >= 157
+# define MSGPACK_PP_ITERATION_5 157
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 158 && MSGPACK_PP_ITERATION_FINISH_5 >= 158
+# define MSGPACK_PP_ITERATION_5 158
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 159 && MSGPACK_PP_ITERATION_FINISH_5 >= 159
+# define MSGPACK_PP_ITERATION_5 159
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 160 && MSGPACK_PP_ITERATION_FINISH_5 >= 160
+# define MSGPACK_PP_ITERATION_5 160
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 161 && MSGPACK_PP_ITERATION_FINISH_5 >= 161
+# define MSGPACK_PP_ITERATION_5 161
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 162 && MSGPACK_PP_ITERATION_FINISH_5 >= 162
+# define MSGPACK_PP_ITERATION_5 162
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 163 && MSGPACK_PP_ITERATION_FINISH_5 >= 163
+# define MSGPACK_PP_ITERATION_5 163
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 164 && MSGPACK_PP_ITERATION_FINISH_5 >= 164
+# define MSGPACK_PP_ITERATION_5 164
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 165 && MSGPACK_PP_ITERATION_FINISH_5 >= 165
+# define MSGPACK_PP_ITERATION_5 165
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 166 && MSGPACK_PP_ITERATION_FINISH_5 >= 166
+# define MSGPACK_PP_ITERATION_5 166
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 167 && MSGPACK_PP_ITERATION_FINISH_5 >= 167
+# define MSGPACK_PP_ITERATION_5 167
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 168 && MSGPACK_PP_ITERATION_FINISH_5 >= 168
+# define MSGPACK_PP_ITERATION_5 168
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 169 && MSGPACK_PP_ITERATION_FINISH_5 >= 169
+# define MSGPACK_PP_ITERATION_5 169
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 170 && MSGPACK_PP_ITERATION_FINISH_5 >= 170
+# define MSGPACK_PP_ITERATION_5 170
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 171 && MSGPACK_PP_ITERATION_FINISH_5 >= 171
+# define MSGPACK_PP_ITERATION_5 171
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 172 && MSGPACK_PP_ITERATION_FINISH_5 >= 172
+# define MSGPACK_PP_ITERATION_5 172
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 173 && MSGPACK_PP_ITERATION_FINISH_5 >= 173
+# define MSGPACK_PP_ITERATION_5 173
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 174 && MSGPACK_PP_ITERATION_FINISH_5 >= 174
+# define MSGPACK_PP_ITERATION_5 174
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 175 && MSGPACK_PP_ITERATION_FINISH_5 >= 175
+# define MSGPACK_PP_ITERATION_5 175
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 176 && MSGPACK_PP_ITERATION_FINISH_5 >= 176
+# define MSGPACK_PP_ITERATION_5 176
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 177 && MSGPACK_PP_ITERATION_FINISH_5 >= 177
+# define MSGPACK_PP_ITERATION_5 177
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 178 && MSGPACK_PP_ITERATION_FINISH_5 >= 178
+# define MSGPACK_PP_ITERATION_5 178
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 179 && MSGPACK_PP_ITERATION_FINISH_5 >= 179
+# define MSGPACK_PP_ITERATION_5 179
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 180 && MSGPACK_PP_ITERATION_FINISH_5 >= 180
+# define MSGPACK_PP_ITERATION_5 180
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 181 && MSGPACK_PP_ITERATION_FINISH_5 >= 181
+# define MSGPACK_PP_ITERATION_5 181
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 182 && MSGPACK_PP_ITERATION_FINISH_5 >= 182
+# define MSGPACK_PP_ITERATION_5 182
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 183 && MSGPACK_PP_ITERATION_FINISH_5 >= 183
+# define MSGPACK_PP_ITERATION_5 183
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 184 && MSGPACK_PP_ITERATION_FINISH_5 >= 184
+# define MSGPACK_PP_ITERATION_5 184
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 185 && MSGPACK_PP_ITERATION_FINISH_5 >= 185
+# define MSGPACK_PP_ITERATION_5 185
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 186 && MSGPACK_PP_ITERATION_FINISH_5 >= 186
+# define MSGPACK_PP_ITERATION_5 186
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 187 && MSGPACK_PP_ITERATION_FINISH_5 >= 187
+# define MSGPACK_PP_ITERATION_5 187
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 188 && MSGPACK_PP_ITERATION_FINISH_5 >= 188
+# define MSGPACK_PP_ITERATION_5 188
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 189 && MSGPACK_PP_ITERATION_FINISH_5 >= 189
+# define MSGPACK_PP_ITERATION_5 189
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 190 && MSGPACK_PP_ITERATION_FINISH_5 >= 190
+# define MSGPACK_PP_ITERATION_5 190
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 191 && MSGPACK_PP_ITERATION_FINISH_5 >= 191
+# define MSGPACK_PP_ITERATION_5 191
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 192 && MSGPACK_PP_ITERATION_FINISH_5 >= 192
+# define MSGPACK_PP_ITERATION_5 192
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 193 && MSGPACK_PP_ITERATION_FINISH_5 >= 193
+# define MSGPACK_PP_ITERATION_5 193
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 194 && MSGPACK_PP_ITERATION_FINISH_5 >= 194
+# define MSGPACK_PP_ITERATION_5 194
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 195 && MSGPACK_PP_ITERATION_FINISH_5 >= 195
+# define MSGPACK_PP_ITERATION_5 195
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 196 && MSGPACK_PP_ITERATION_FINISH_5 >= 196
+# define MSGPACK_PP_ITERATION_5 196
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 197 && MSGPACK_PP_ITERATION_FINISH_5 >= 197
+# define MSGPACK_PP_ITERATION_5 197
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 198 && MSGPACK_PP_ITERATION_FINISH_5 >= 198
+# define MSGPACK_PP_ITERATION_5 198
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 199 && MSGPACK_PP_ITERATION_FINISH_5 >= 199
+# define MSGPACK_PP_ITERATION_5 199
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 200 && MSGPACK_PP_ITERATION_FINISH_5 >= 200
+# define MSGPACK_PP_ITERATION_5 200
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 201 && MSGPACK_PP_ITERATION_FINISH_5 >= 201
+# define MSGPACK_PP_ITERATION_5 201
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 202 && MSGPACK_PP_ITERATION_FINISH_5 >= 202
+# define MSGPACK_PP_ITERATION_5 202
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 203 && MSGPACK_PP_ITERATION_FINISH_5 >= 203
+# define MSGPACK_PP_ITERATION_5 203
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 204 && MSGPACK_PP_ITERATION_FINISH_5 >= 204
+# define MSGPACK_PP_ITERATION_5 204
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 205 && MSGPACK_PP_ITERATION_FINISH_5 >= 205
+# define MSGPACK_PP_ITERATION_5 205
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 206 && MSGPACK_PP_ITERATION_FINISH_5 >= 206
+# define MSGPACK_PP_ITERATION_5 206
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 207 && MSGPACK_PP_ITERATION_FINISH_5 >= 207
+# define MSGPACK_PP_ITERATION_5 207
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 208 && MSGPACK_PP_ITERATION_FINISH_5 >= 208
+# define MSGPACK_PP_ITERATION_5 208
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 209 && MSGPACK_PP_ITERATION_FINISH_5 >= 209
+# define MSGPACK_PP_ITERATION_5 209
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 210 && MSGPACK_PP_ITERATION_FINISH_5 >= 210
+# define MSGPACK_PP_ITERATION_5 210
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 211 && MSGPACK_PP_ITERATION_FINISH_5 >= 211
+# define MSGPACK_PP_ITERATION_5 211
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 212 && MSGPACK_PP_ITERATION_FINISH_5 >= 212
+# define MSGPACK_PP_ITERATION_5 212
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 213 && MSGPACK_PP_ITERATION_FINISH_5 >= 213
+# define MSGPACK_PP_ITERATION_5 213
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 214 && MSGPACK_PP_ITERATION_FINISH_5 >= 214
+# define MSGPACK_PP_ITERATION_5 214
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 215 && MSGPACK_PP_ITERATION_FINISH_5 >= 215
+# define MSGPACK_PP_ITERATION_5 215
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 216 && MSGPACK_PP_ITERATION_FINISH_5 >= 216
+# define MSGPACK_PP_ITERATION_5 216
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 217 && MSGPACK_PP_ITERATION_FINISH_5 >= 217
+# define MSGPACK_PP_ITERATION_5 217
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 218 && MSGPACK_PP_ITERATION_FINISH_5 >= 218
+# define MSGPACK_PP_ITERATION_5 218
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 219 && MSGPACK_PP_ITERATION_FINISH_5 >= 219
+# define MSGPACK_PP_ITERATION_5 219
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 220 && MSGPACK_PP_ITERATION_FINISH_5 >= 220
+# define MSGPACK_PP_ITERATION_5 220
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 221 && MSGPACK_PP_ITERATION_FINISH_5 >= 221
+# define MSGPACK_PP_ITERATION_5 221
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 222 && MSGPACK_PP_ITERATION_FINISH_5 >= 222
+# define MSGPACK_PP_ITERATION_5 222
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 223 && MSGPACK_PP_ITERATION_FINISH_5 >= 223
+# define MSGPACK_PP_ITERATION_5 223
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 224 && MSGPACK_PP_ITERATION_FINISH_5 >= 224
+# define MSGPACK_PP_ITERATION_5 224
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 225 && MSGPACK_PP_ITERATION_FINISH_5 >= 225
+# define MSGPACK_PP_ITERATION_5 225
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 226 && MSGPACK_PP_ITERATION_FINISH_5 >= 226
+# define MSGPACK_PP_ITERATION_5 226
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 227 && MSGPACK_PP_ITERATION_FINISH_5 >= 227
+# define MSGPACK_PP_ITERATION_5 227
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 228 && MSGPACK_PP_ITERATION_FINISH_5 >= 228
+# define MSGPACK_PP_ITERATION_5 228
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 229 && MSGPACK_PP_ITERATION_FINISH_5 >= 229
+# define MSGPACK_PP_ITERATION_5 229
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 230 && MSGPACK_PP_ITERATION_FINISH_5 >= 230
+# define MSGPACK_PP_ITERATION_5 230
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 231 && MSGPACK_PP_ITERATION_FINISH_5 >= 231
+# define MSGPACK_PP_ITERATION_5 231
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 232 && MSGPACK_PP_ITERATION_FINISH_5 >= 232
+# define MSGPACK_PP_ITERATION_5 232
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 233 && MSGPACK_PP_ITERATION_FINISH_5 >= 233
+# define MSGPACK_PP_ITERATION_5 233
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 234 && MSGPACK_PP_ITERATION_FINISH_5 >= 234
+# define MSGPACK_PP_ITERATION_5 234
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 235 && MSGPACK_PP_ITERATION_FINISH_5 >= 235
+# define MSGPACK_PP_ITERATION_5 235
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 236 && MSGPACK_PP_ITERATION_FINISH_5 >= 236
+# define MSGPACK_PP_ITERATION_5 236
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 237 && MSGPACK_PP_ITERATION_FINISH_5 >= 237
+# define MSGPACK_PP_ITERATION_5 237
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 238 && MSGPACK_PP_ITERATION_FINISH_5 >= 238
+# define MSGPACK_PP_ITERATION_5 238
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 239 && MSGPACK_PP_ITERATION_FINISH_5 >= 239
+# define MSGPACK_PP_ITERATION_5 239
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 240 && MSGPACK_PP_ITERATION_FINISH_5 >= 240
+# define MSGPACK_PP_ITERATION_5 240
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 241 && MSGPACK_PP_ITERATION_FINISH_5 >= 241
+# define MSGPACK_PP_ITERATION_5 241
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 242 && MSGPACK_PP_ITERATION_FINISH_5 >= 242
+# define MSGPACK_PP_ITERATION_5 242
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 243 && MSGPACK_PP_ITERATION_FINISH_5 >= 243
+# define MSGPACK_PP_ITERATION_5 243
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 244 && MSGPACK_PP_ITERATION_FINISH_5 >= 244
+# define MSGPACK_PP_ITERATION_5 244
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 245 && MSGPACK_PP_ITERATION_FINISH_5 >= 245
+# define MSGPACK_PP_ITERATION_5 245
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 246 && MSGPACK_PP_ITERATION_FINISH_5 >= 246
+# define MSGPACK_PP_ITERATION_5 246
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 247 && MSGPACK_PP_ITERATION_FINISH_5 >= 247
+# define MSGPACK_PP_ITERATION_5 247
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 248 && MSGPACK_PP_ITERATION_FINISH_5 >= 248
+# define MSGPACK_PP_ITERATION_5 248
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 249 && MSGPACK_PP_ITERATION_FINISH_5 >= 249
+# define MSGPACK_PP_ITERATION_5 249
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 250 && MSGPACK_PP_ITERATION_FINISH_5 >= 250
+# define MSGPACK_PP_ITERATION_5 250
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 251 && MSGPACK_PP_ITERATION_FINISH_5 >= 251
+# define MSGPACK_PP_ITERATION_5 251
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 252 && MSGPACK_PP_ITERATION_FINISH_5 >= 252
+# define MSGPACK_PP_ITERATION_5 252
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 253 && MSGPACK_PP_ITERATION_FINISH_5 >= 253
+# define MSGPACK_PP_ITERATION_5 253
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 254 && MSGPACK_PP_ITERATION_FINISH_5 >= 254
+# define MSGPACK_PP_ITERATION_5 254
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 255 && MSGPACK_PP_ITERATION_FINISH_5 >= 255
+# define MSGPACK_PP_ITERATION_5 255
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_START_5 <= 256 && MSGPACK_PP_ITERATION_FINISH_5 >= 256
+# define MSGPACK_PP_ITERATION_5 256
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# endif
+#
+# undef MSGPACK_PP_ITERATION_DEPTH
+# define MSGPACK_PP_ITERATION_DEPTH() 4
+#
+# undef MSGPACK_PP_ITERATION_START_5
+# undef MSGPACK_PP_ITERATION_FINISH_5
+# undef MSGPACK_PP_FILENAME_5
+#
+# undef MSGPACK_PP_ITERATION_FLAGS_5
+# undef MSGPACK_PP_ITERATION_PARAMS_5
diff --git a/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/reverse1.hpp b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/reverse1.hpp
new file mode 100644
index 0000000000..fa838a7b78
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/reverse1.hpp
@@ -0,0 +1,1296 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 256 && MSGPACK_PP_ITERATION_START_1 >= 256
+# define MSGPACK_PP_ITERATION_1 256
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 255 && MSGPACK_PP_ITERATION_START_1 >= 255
+# define MSGPACK_PP_ITERATION_1 255
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 254 && MSGPACK_PP_ITERATION_START_1 >= 254
+# define MSGPACK_PP_ITERATION_1 254
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 253 && MSGPACK_PP_ITERATION_START_1 >= 253
+# define MSGPACK_PP_ITERATION_1 253
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 252 && MSGPACK_PP_ITERATION_START_1 >= 252
+# define MSGPACK_PP_ITERATION_1 252
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 251 && MSGPACK_PP_ITERATION_START_1 >= 251
+# define MSGPACK_PP_ITERATION_1 251
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 250 && MSGPACK_PP_ITERATION_START_1 >= 250
+# define MSGPACK_PP_ITERATION_1 250
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 249 && MSGPACK_PP_ITERATION_START_1 >= 249
+# define MSGPACK_PP_ITERATION_1 249
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 248 && MSGPACK_PP_ITERATION_START_1 >= 248
+# define MSGPACK_PP_ITERATION_1 248
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 247 && MSGPACK_PP_ITERATION_START_1 >= 247
+# define MSGPACK_PP_ITERATION_1 247
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 246 && MSGPACK_PP_ITERATION_START_1 >= 246
+# define MSGPACK_PP_ITERATION_1 246
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 245 && MSGPACK_PP_ITERATION_START_1 >= 245
+# define MSGPACK_PP_ITERATION_1 245
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 244 && MSGPACK_PP_ITERATION_START_1 >= 244
+# define MSGPACK_PP_ITERATION_1 244
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 243 && MSGPACK_PP_ITERATION_START_1 >= 243
+# define MSGPACK_PP_ITERATION_1 243
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 242 && MSGPACK_PP_ITERATION_START_1 >= 242
+# define MSGPACK_PP_ITERATION_1 242
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 241 && MSGPACK_PP_ITERATION_START_1 >= 241
+# define MSGPACK_PP_ITERATION_1 241
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 240 && MSGPACK_PP_ITERATION_START_1 >= 240
+# define MSGPACK_PP_ITERATION_1 240
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 239 && MSGPACK_PP_ITERATION_START_1 >= 239
+# define MSGPACK_PP_ITERATION_1 239
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 238 && MSGPACK_PP_ITERATION_START_1 >= 238
+# define MSGPACK_PP_ITERATION_1 238
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 237 && MSGPACK_PP_ITERATION_START_1 >= 237
+# define MSGPACK_PP_ITERATION_1 237
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 236 && MSGPACK_PP_ITERATION_START_1 >= 236
+# define MSGPACK_PP_ITERATION_1 236
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 235 && MSGPACK_PP_ITERATION_START_1 >= 235
+# define MSGPACK_PP_ITERATION_1 235
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 234 && MSGPACK_PP_ITERATION_START_1 >= 234
+# define MSGPACK_PP_ITERATION_1 234
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 233 && MSGPACK_PP_ITERATION_START_1 >= 233
+# define MSGPACK_PP_ITERATION_1 233
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 232 && MSGPACK_PP_ITERATION_START_1 >= 232
+# define MSGPACK_PP_ITERATION_1 232
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 231 && MSGPACK_PP_ITERATION_START_1 >= 231
+# define MSGPACK_PP_ITERATION_1 231
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 230 && MSGPACK_PP_ITERATION_START_1 >= 230
+# define MSGPACK_PP_ITERATION_1 230
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 229 && MSGPACK_PP_ITERATION_START_1 >= 229
+# define MSGPACK_PP_ITERATION_1 229
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 228 && MSGPACK_PP_ITERATION_START_1 >= 228
+# define MSGPACK_PP_ITERATION_1 228
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 227 && MSGPACK_PP_ITERATION_START_1 >= 227
+# define MSGPACK_PP_ITERATION_1 227
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 226 && MSGPACK_PP_ITERATION_START_1 >= 226
+# define MSGPACK_PP_ITERATION_1 226
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 225 && MSGPACK_PP_ITERATION_START_1 >= 225
+# define MSGPACK_PP_ITERATION_1 225
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 224 && MSGPACK_PP_ITERATION_START_1 >= 224
+# define MSGPACK_PP_ITERATION_1 224
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 223 && MSGPACK_PP_ITERATION_START_1 >= 223
+# define MSGPACK_PP_ITERATION_1 223
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 222 && MSGPACK_PP_ITERATION_START_1 >= 222
+# define MSGPACK_PP_ITERATION_1 222
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 221 && MSGPACK_PP_ITERATION_START_1 >= 221
+# define MSGPACK_PP_ITERATION_1 221
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 220 && MSGPACK_PP_ITERATION_START_1 >= 220
+# define MSGPACK_PP_ITERATION_1 220
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 219 && MSGPACK_PP_ITERATION_START_1 >= 219
+# define MSGPACK_PP_ITERATION_1 219
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 218 && MSGPACK_PP_ITERATION_START_1 >= 218
+# define MSGPACK_PP_ITERATION_1 218
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 217 && MSGPACK_PP_ITERATION_START_1 >= 217
+# define MSGPACK_PP_ITERATION_1 217
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 216 && MSGPACK_PP_ITERATION_START_1 >= 216
+# define MSGPACK_PP_ITERATION_1 216
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 215 && MSGPACK_PP_ITERATION_START_1 >= 215
+# define MSGPACK_PP_ITERATION_1 215
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 214 && MSGPACK_PP_ITERATION_START_1 >= 214
+# define MSGPACK_PP_ITERATION_1 214
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 213 && MSGPACK_PP_ITERATION_START_1 >= 213
+# define MSGPACK_PP_ITERATION_1 213
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 212 && MSGPACK_PP_ITERATION_START_1 >= 212
+# define MSGPACK_PP_ITERATION_1 212
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 211 && MSGPACK_PP_ITERATION_START_1 >= 211
+# define MSGPACK_PP_ITERATION_1 211
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 210 && MSGPACK_PP_ITERATION_START_1 >= 210
+# define MSGPACK_PP_ITERATION_1 210
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 209 && MSGPACK_PP_ITERATION_START_1 >= 209
+# define MSGPACK_PP_ITERATION_1 209
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 208 && MSGPACK_PP_ITERATION_START_1 >= 208
+# define MSGPACK_PP_ITERATION_1 208
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 207 && MSGPACK_PP_ITERATION_START_1 >= 207
+# define MSGPACK_PP_ITERATION_1 207
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 206 && MSGPACK_PP_ITERATION_START_1 >= 206
+# define MSGPACK_PP_ITERATION_1 206
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 205 && MSGPACK_PP_ITERATION_START_1 >= 205
+# define MSGPACK_PP_ITERATION_1 205
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 204 && MSGPACK_PP_ITERATION_START_1 >= 204
+# define MSGPACK_PP_ITERATION_1 204
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 203 && MSGPACK_PP_ITERATION_START_1 >= 203
+# define MSGPACK_PP_ITERATION_1 203
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 202 && MSGPACK_PP_ITERATION_START_1 >= 202
+# define MSGPACK_PP_ITERATION_1 202
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 201 && MSGPACK_PP_ITERATION_START_1 >= 201
+# define MSGPACK_PP_ITERATION_1 201
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 200 && MSGPACK_PP_ITERATION_START_1 >= 200
+# define MSGPACK_PP_ITERATION_1 200
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 199 && MSGPACK_PP_ITERATION_START_1 >= 199
+# define MSGPACK_PP_ITERATION_1 199
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 198 && MSGPACK_PP_ITERATION_START_1 >= 198
+# define MSGPACK_PP_ITERATION_1 198
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 197 && MSGPACK_PP_ITERATION_START_1 >= 197
+# define MSGPACK_PP_ITERATION_1 197
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 196 && MSGPACK_PP_ITERATION_START_1 >= 196
+# define MSGPACK_PP_ITERATION_1 196
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 195 && MSGPACK_PP_ITERATION_START_1 >= 195
+# define MSGPACK_PP_ITERATION_1 195
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 194 && MSGPACK_PP_ITERATION_START_1 >= 194
+# define MSGPACK_PP_ITERATION_1 194
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 193 && MSGPACK_PP_ITERATION_START_1 >= 193
+# define MSGPACK_PP_ITERATION_1 193
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 192 && MSGPACK_PP_ITERATION_START_1 >= 192
+# define MSGPACK_PP_ITERATION_1 192
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 191 && MSGPACK_PP_ITERATION_START_1 >= 191
+# define MSGPACK_PP_ITERATION_1 191
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 190 && MSGPACK_PP_ITERATION_START_1 >= 190
+# define MSGPACK_PP_ITERATION_1 190
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 189 && MSGPACK_PP_ITERATION_START_1 >= 189
+# define MSGPACK_PP_ITERATION_1 189
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 188 && MSGPACK_PP_ITERATION_START_1 >= 188
+# define MSGPACK_PP_ITERATION_1 188
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 187 && MSGPACK_PP_ITERATION_START_1 >= 187
+# define MSGPACK_PP_ITERATION_1 187
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 186 && MSGPACK_PP_ITERATION_START_1 >= 186
+# define MSGPACK_PP_ITERATION_1 186
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 185 && MSGPACK_PP_ITERATION_START_1 >= 185
+# define MSGPACK_PP_ITERATION_1 185
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 184 && MSGPACK_PP_ITERATION_START_1 >= 184
+# define MSGPACK_PP_ITERATION_1 184
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 183 && MSGPACK_PP_ITERATION_START_1 >= 183
+# define MSGPACK_PP_ITERATION_1 183
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 182 && MSGPACK_PP_ITERATION_START_1 >= 182
+# define MSGPACK_PP_ITERATION_1 182
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 181 && MSGPACK_PP_ITERATION_START_1 >= 181
+# define MSGPACK_PP_ITERATION_1 181
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 180 && MSGPACK_PP_ITERATION_START_1 >= 180
+# define MSGPACK_PP_ITERATION_1 180
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 179 && MSGPACK_PP_ITERATION_START_1 >= 179
+# define MSGPACK_PP_ITERATION_1 179
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 178 && MSGPACK_PP_ITERATION_START_1 >= 178
+# define MSGPACK_PP_ITERATION_1 178
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 177 && MSGPACK_PP_ITERATION_START_1 >= 177
+# define MSGPACK_PP_ITERATION_1 177
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 176 && MSGPACK_PP_ITERATION_START_1 >= 176
+# define MSGPACK_PP_ITERATION_1 176
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 175 && MSGPACK_PP_ITERATION_START_1 >= 175
+# define MSGPACK_PP_ITERATION_1 175
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 174 && MSGPACK_PP_ITERATION_START_1 >= 174
+# define MSGPACK_PP_ITERATION_1 174
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 173 && MSGPACK_PP_ITERATION_START_1 >= 173
+# define MSGPACK_PP_ITERATION_1 173
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 172 && MSGPACK_PP_ITERATION_START_1 >= 172
+# define MSGPACK_PP_ITERATION_1 172
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 171 && MSGPACK_PP_ITERATION_START_1 >= 171
+# define MSGPACK_PP_ITERATION_1 171
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 170 && MSGPACK_PP_ITERATION_START_1 >= 170
+# define MSGPACK_PP_ITERATION_1 170
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 169 && MSGPACK_PP_ITERATION_START_1 >= 169
+# define MSGPACK_PP_ITERATION_1 169
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 168 && MSGPACK_PP_ITERATION_START_1 >= 168
+# define MSGPACK_PP_ITERATION_1 168
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 167 && MSGPACK_PP_ITERATION_START_1 >= 167
+# define MSGPACK_PP_ITERATION_1 167
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 166 && MSGPACK_PP_ITERATION_START_1 >= 166
+# define MSGPACK_PP_ITERATION_1 166
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 165 && MSGPACK_PP_ITERATION_START_1 >= 165
+# define MSGPACK_PP_ITERATION_1 165
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 164 && MSGPACK_PP_ITERATION_START_1 >= 164
+# define MSGPACK_PP_ITERATION_1 164
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 163 && MSGPACK_PP_ITERATION_START_1 >= 163
+# define MSGPACK_PP_ITERATION_1 163
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 162 && MSGPACK_PP_ITERATION_START_1 >= 162
+# define MSGPACK_PP_ITERATION_1 162
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 161 && MSGPACK_PP_ITERATION_START_1 >= 161
+# define MSGPACK_PP_ITERATION_1 161
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 160 && MSGPACK_PP_ITERATION_START_1 >= 160
+# define MSGPACK_PP_ITERATION_1 160
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 159 && MSGPACK_PP_ITERATION_START_1 >= 159
+# define MSGPACK_PP_ITERATION_1 159
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 158 && MSGPACK_PP_ITERATION_START_1 >= 158
+# define MSGPACK_PP_ITERATION_1 158
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 157 && MSGPACK_PP_ITERATION_START_1 >= 157
+# define MSGPACK_PP_ITERATION_1 157
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 156 && MSGPACK_PP_ITERATION_START_1 >= 156
+# define MSGPACK_PP_ITERATION_1 156
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 155 && MSGPACK_PP_ITERATION_START_1 >= 155
+# define MSGPACK_PP_ITERATION_1 155
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 154 && MSGPACK_PP_ITERATION_START_1 >= 154
+# define MSGPACK_PP_ITERATION_1 154
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 153 && MSGPACK_PP_ITERATION_START_1 >= 153
+# define MSGPACK_PP_ITERATION_1 153
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 152 && MSGPACK_PP_ITERATION_START_1 >= 152
+# define MSGPACK_PP_ITERATION_1 152
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 151 && MSGPACK_PP_ITERATION_START_1 >= 151
+# define MSGPACK_PP_ITERATION_1 151
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 150 && MSGPACK_PP_ITERATION_START_1 >= 150
+# define MSGPACK_PP_ITERATION_1 150
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 149 && MSGPACK_PP_ITERATION_START_1 >= 149
+# define MSGPACK_PP_ITERATION_1 149
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 148 && MSGPACK_PP_ITERATION_START_1 >= 148
+# define MSGPACK_PP_ITERATION_1 148
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 147 && MSGPACK_PP_ITERATION_START_1 >= 147
+# define MSGPACK_PP_ITERATION_1 147
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 146 && MSGPACK_PP_ITERATION_START_1 >= 146
+# define MSGPACK_PP_ITERATION_1 146
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 145 && MSGPACK_PP_ITERATION_START_1 >= 145
+# define MSGPACK_PP_ITERATION_1 145
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 144 && MSGPACK_PP_ITERATION_START_1 >= 144
+# define MSGPACK_PP_ITERATION_1 144
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 143 && MSGPACK_PP_ITERATION_START_1 >= 143
+# define MSGPACK_PP_ITERATION_1 143
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 142 && MSGPACK_PP_ITERATION_START_1 >= 142
+# define MSGPACK_PP_ITERATION_1 142
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 141 && MSGPACK_PP_ITERATION_START_1 >= 141
+# define MSGPACK_PP_ITERATION_1 141
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 140 && MSGPACK_PP_ITERATION_START_1 >= 140
+# define MSGPACK_PP_ITERATION_1 140
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 139 && MSGPACK_PP_ITERATION_START_1 >= 139
+# define MSGPACK_PP_ITERATION_1 139
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 138 && MSGPACK_PP_ITERATION_START_1 >= 138
+# define MSGPACK_PP_ITERATION_1 138
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 137 && MSGPACK_PP_ITERATION_START_1 >= 137
+# define MSGPACK_PP_ITERATION_1 137
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 136 && MSGPACK_PP_ITERATION_START_1 >= 136
+# define MSGPACK_PP_ITERATION_1 136
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 135 && MSGPACK_PP_ITERATION_START_1 >= 135
+# define MSGPACK_PP_ITERATION_1 135
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 134 && MSGPACK_PP_ITERATION_START_1 >= 134
+# define MSGPACK_PP_ITERATION_1 134
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 133 && MSGPACK_PP_ITERATION_START_1 >= 133
+# define MSGPACK_PP_ITERATION_1 133
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 132 && MSGPACK_PP_ITERATION_START_1 >= 132
+# define MSGPACK_PP_ITERATION_1 132
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 131 && MSGPACK_PP_ITERATION_START_1 >= 131
+# define MSGPACK_PP_ITERATION_1 131
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 130 && MSGPACK_PP_ITERATION_START_1 >= 130
+# define MSGPACK_PP_ITERATION_1 130
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 129 && MSGPACK_PP_ITERATION_START_1 >= 129
+# define MSGPACK_PP_ITERATION_1 129
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 128 && MSGPACK_PP_ITERATION_START_1 >= 128
+# define MSGPACK_PP_ITERATION_1 128
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 127 && MSGPACK_PP_ITERATION_START_1 >= 127
+# define MSGPACK_PP_ITERATION_1 127
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 126 && MSGPACK_PP_ITERATION_START_1 >= 126
+# define MSGPACK_PP_ITERATION_1 126
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 125 && MSGPACK_PP_ITERATION_START_1 >= 125
+# define MSGPACK_PP_ITERATION_1 125
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 124 && MSGPACK_PP_ITERATION_START_1 >= 124
+# define MSGPACK_PP_ITERATION_1 124
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 123 && MSGPACK_PP_ITERATION_START_1 >= 123
+# define MSGPACK_PP_ITERATION_1 123
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 122 && MSGPACK_PP_ITERATION_START_1 >= 122
+# define MSGPACK_PP_ITERATION_1 122
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 121 && MSGPACK_PP_ITERATION_START_1 >= 121
+# define MSGPACK_PP_ITERATION_1 121
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 120 && MSGPACK_PP_ITERATION_START_1 >= 120
+# define MSGPACK_PP_ITERATION_1 120
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 119 && MSGPACK_PP_ITERATION_START_1 >= 119
+# define MSGPACK_PP_ITERATION_1 119
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 118 && MSGPACK_PP_ITERATION_START_1 >= 118
+# define MSGPACK_PP_ITERATION_1 118
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 117 && MSGPACK_PP_ITERATION_START_1 >= 117
+# define MSGPACK_PP_ITERATION_1 117
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 116 && MSGPACK_PP_ITERATION_START_1 >= 116
+# define MSGPACK_PP_ITERATION_1 116
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 115 && MSGPACK_PP_ITERATION_START_1 >= 115
+# define MSGPACK_PP_ITERATION_1 115
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 114 && MSGPACK_PP_ITERATION_START_1 >= 114
+# define MSGPACK_PP_ITERATION_1 114
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 113 && MSGPACK_PP_ITERATION_START_1 >= 113
+# define MSGPACK_PP_ITERATION_1 113
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 112 && MSGPACK_PP_ITERATION_START_1 >= 112
+# define MSGPACK_PP_ITERATION_1 112
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 111 && MSGPACK_PP_ITERATION_START_1 >= 111
+# define MSGPACK_PP_ITERATION_1 111
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 110 && MSGPACK_PP_ITERATION_START_1 >= 110
+# define MSGPACK_PP_ITERATION_1 110
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 109 && MSGPACK_PP_ITERATION_START_1 >= 109
+# define MSGPACK_PP_ITERATION_1 109
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 108 && MSGPACK_PP_ITERATION_START_1 >= 108
+# define MSGPACK_PP_ITERATION_1 108
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 107 && MSGPACK_PP_ITERATION_START_1 >= 107
+# define MSGPACK_PP_ITERATION_1 107
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 106 && MSGPACK_PP_ITERATION_START_1 >= 106
+# define MSGPACK_PP_ITERATION_1 106
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 105 && MSGPACK_PP_ITERATION_START_1 >= 105
+# define MSGPACK_PP_ITERATION_1 105
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 104 && MSGPACK_PP_ITERATION_START_1 >= 104
+# define MSGPACK_PP_ITERATION_1 104
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 103 && MSGPACK_PP_ITERATION_START_1 >= 103
+# define MSGPACK_PP_ITERATION_1 103
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 102 && MSGPACK_PP_ITERATION_START_1 >= 102
+# define MSGPACK_PP_ITERATION_1 102
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 101 && MSGPACK_PP_ITERATION_START_1 >= 101
+# define MSGPACK_PP_ITERATION_1 101
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 100 && MSGPACK_PP_ITERATION_START_1 >= 100
+# define MSGPACK_PP_ITERATION_1 100
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 99 && MSGPACK_PP_ITERATION_START_1 >= 99
+# define MSGPACK_PP_ITERATION_1 99
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 98 && MSGPACK_PP_ITERATION_START_1 >= 98
+# define MSGPACK_PP_ITERATION_1 98
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 97 && MSGPACK_PP_ITERATION_START_1 >= 97
+# define MSGPACK_PP_ITERATION_1 97
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 96 && MSGPACK_PP_ITERATION_START_1 >= 96
+# define MSGPACK_PP_ITERATION_1 96
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 95 && MSGPACK_PP_ITERATION_START_1 >= 95
+# define MSGPACK_PP_ITERATION_1 95
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 94 && MSGPACK_PP_ITERATION_START_1 >= 94
+# define MSGPACK_PP_ITERATION_1 94
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 93 && MSGPACK_PP_ITERATION_START_1 >= 93
+# define MSGPACK_PP_ITERATION_1 93
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 92 && MSGPACK_PP_ITERATION_START_1 >= 92
+# define MSGPACK_PP_ITERATION_1 92
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 91 && MSGPACK_PP_ITERATION_START_1 >= 91
+# define MSGPACK_PP_ITERATION_1 91
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 90 && MSGPACK_PP_ITERATION_START_1 >= 90
+# define MSGPACK_PP_ITERATION_1 90
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 89 && MSGPACK_PP_ITERATION_START_1 >= 89
+# define MSGPACK_PP_ITERATION_1 89
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 88 && MSGPACK_PP_ITERATION_START_1 >= 88
+# define MSGPACK_PP_ITERATION_1 88
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 87 && MSGPACK_PP_ITERATION_START_1 >= 87
+# define MSGPACK_PP_ITERATION_1 87
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 86 && MSGPACK_PP_ITERATION_START_1 >= 86
+# define MSGPACK_PP_ITERATION_1 86
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 85 && MSGPACK_PP_ITERATION_START_1 >= 85
+# define MSGPACK_PP_ITERATION_1 85
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 84 && MSGPACK_PP_ITERATION_START_1 >= 84
+# define MSGPACK_PP_ITERATION_1 84
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 83 && MSGPACK_PP_ITERATION_START_1 >= 83
+# define MSGPACK_PP_ITERATION_1 83
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 82 && MSGPACK_PP_ITERATION_START_1 >= 82
+# define MSGPACK_PP_ITERATION_1 82
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 81 && MSGPACK_PP_ITERATION_START_1 >= 81
+# define MSGPACK_PP_ITERATION_1 81
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 80 && MSGPACK_PP_ITERATION_START_1 >= 80
+# define MSGPACK_PP_ITERATION_1 80
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 79 && MSGPACK_PP_ITERATION_START_1 >= 79
+# define MSGPACK_PP_ITERATION_1 79
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 78 && MSGPACK_PP_ITERATION_START_1 >= 78
+# define MSGPACK_PP_ITERATION_1 78
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 77 && MSGPACK_PP_ITERATION_START_1 >= 77
+# define MSGPACK_PP_ITERATION_1 77
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 76 && MSGPACK_PP_ITERATION_START_1 >= 76
+# define MSGPACK_PP_ITERATION_1 76
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 75 && MSGPACK_PP_ITERATION_START_1 >= 75
+# define MSGPACK_PP_ITERATION_1 75
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 74 && MSGPACK_PP_ITERATION_START_1 >= 74
+# define MSGPACK_PP_ITERATION_1 74
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 73 && MSGPACK_PP_ITERATION_START_1 >= 73
+# define MSGPACK_PP_ITERATION_1 73
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 72 && MSGPACK_PP_ITERATION_START_1 >= 72
+# define MSGPACK_PP_ITERATION_1 72
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 71 && MSGPACK_PP_ITERATION_START_1 >= 71
+# define MSGPACK_PP_ITERATION_1 71
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 70 && MSGPACK_PP_ITERATION_START_1 >= 70
+# define MSGPACK_PP_ITERATION_1 70
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 69 && MSGPACK_PP_ITERATION_START_1 >= 69
+# define MSGPACK_PP_ITERATION_1 69
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 68 && MSGPACK_PP_ITERATION_START_1 >= 68
+# define MSGPACK_PP_ITERATION_1 68
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 67 && MSGPACK_PP_ITERATION_START_1 >= 67
+# define MSGPACK_PP_ITERATION_1 67
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 66 && MSGPACK_PP_ITERATION_START_1 >= 66
+# define MSGPACK_PP_ITERATION_1 66
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 65 && MSGPACK_PP_ITERATION_START_1 >= 65
+# define MSGPACK_PP_ITERATION_1 65
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 64 && MSGPACK_PP_ITERATION_START_1 >= 64
+# define MSGPACK_PP_ITERATION_1 64
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 63 && MSGPACK_PP_ITERATION_START_1 >= 63
+# define MSGPACK_PP_ITERATION_1 63
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 62 && MSGPACK_PP_ITERATION_START_1 >= 62
+# define MSGPACK_PP_ITERATION_1 62
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 61 && MSGPACK_PP_ITERATION_START_1 >= 61
+# define MSGPACK_PP_ITERATION_1 61
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 60 && MSGPACK_PP_ITERATION_START_1 >= 60
+# define MSGPACK_PP_ITERATION_1 60
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 59 && MSGPACK_PP_ITERATION_START_1 >= 59
+# define MSGPACK_PP_ITERATION_1 59
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 58 && MSGPACK_PP_ITERATION_START_1 >= 58
+# define MSGPACK_PP_ITERATION_1 58
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 57 && MSGPACK_PP_ITERATION_START_1 >= 57
+# define MSGPACK_PP_ITERATION_1 57
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 56 && MSGPACK_PP_ITERATION_START_1 >= 56
+# define MSGPACK_PP_ITERATION_1 56
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 55 && MSGPACK_PP_ITERATION_START_1 >= 55
+# define MSGPACK_PP_ITERATION_1 55
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 54 && MSGPACK_PP_ITERATION_START_1 >= 54
+# define MSGPACK_PP_ITERATION_1 54
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 53 && MSGPACK_PP_ITERATION_START_1 >= 53
+# define MSGPACK_PP_ITERATION_1 53
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 52 && MSGPACK_PP_ITERATION_START_1 >= 52
+# define MSGPACK_PP_ITERATION_1 52
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 51 && MSGPACK_PP_ITERATION_START_1 >= 51
+# define MSGPACK_PP_ITERATION_1 51
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 50 && MSGPACK_PP_ITERATION_START_1 >= 50
+# define MSGPACK_PP_ITERATION_1 50
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 49 && MSGPACK_PP_ITERATION_START_1 >= 49
+# define MSGPACK_PP_ITERATION_1 49
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 48 && MSGPACK_PP_ITERATION_START_1 >= 48
+# define MSGPACK_PP_ITERATION_1 48
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 47 && MSGPACK_PP_ITERATION_START_1 >= 47
+# define MSGPACK_PP_ITERATION_1 47
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 46 && MSGPACK_PP_ITERATION_START_1 >= 46
+# define MSGPACK_PP_ITERATION_1 46
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 45 && MSGPACK_PP_ITERATION_START_1 >= 45
+# define MSGPACK_PP_ITERATION_1 45
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 44 && MSGPACK_PP_ITERATION_START_1 >= 44
+# define MSGPACK_PP_ITERATION_1 44
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 43 && MSGPACK_PP_ITERATION_START_1 >= 43
+# define MSGPACK_PP_ITERATION_1 43
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 42 && MSGPACK_PP_ITERATION_START_1 >= 42
+# define MSGPACK_PP_ITERATION_1 42
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 41 && MSGPACK_PP_ITERATION_START_1 >= 41
+# define MSGPACK_PP_ITERATION_1 41
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 40 && MSGPACK_PP_ITERATION_START_1 >= 40
+# define MSGPACK_PP_ITERATION_1 40
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 39 && MSGPACK_PP_ITERATION_START_1 >= 39
+# define MSGPACK_PP_ITERATION_1 39
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 38 && MSGPACK_PP_ITERATION_START_1 >= 38
+# define MSGPACK_PP_ITERATION_1 38
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 37 && MSGPACK_PP_ITERATION_START_1 >= 37
+# define MSGPACK_PP_ITERATION_1 37
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 36 && MSGPACK_PP_ITERATION_START_1 >= 36
+# define MSGPACK_PP_ITERATION_1 36
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 35 && MSGPACK_PP_ITERATION_START_1 >= 35
+# define MSGPACK_PP_ITERATION_1 35
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 34 && MSGPACK_PP_ITERATION_START_1 >= 34
+# define MSGPACK_PP_ITERATION_1 34
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 33 && MSGPACK_PP_ITERATION_START_1 >= 33
+# define MSGPACK_PP_ITERATION_1 33
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 32 && MSGPACK_PP_ITERATION_START_1 >= 32
+# define MSGPACK_PP_ITERATION_1 32
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 31 && MSGPACK_PP_ITERATION_START_1 >= 31
+# define MSGPACK_PP_ITERATION_1 31
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 30 && MSGPACK_PP_ITERATION_START_1 >= 30
+# define MSGPACK_PP_ITERATION_1 30
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 29 && MSGPACK_PP_ITERATION_START_1 >= 29
+# define MSGPACK_PP_ITERATION_1 29
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 28 && MSGPACK_PP_ITERATION_START_1 >= 28
+# define MSGPACK_PP_ITERATION_1 28
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 27 && MSGPACK_PP_ITERATION_START_1 >= 27
+# define MSGPACK_PP_ITERATION_1 27
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 26 && MSGPACK_PP_ITERATION_START_1 >= 26
+# define MSGPACK_PP_ITERATION_1 26
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 25 && MSGPACK_PP_ITERATION_START_1 >= 25
+# define MSGPACK_PP_ITERATION_1 25
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 24 && MSGPACK_PP_ITERATION_START_1 >= 24
+# define MSGPACK_PP_ITERATION_1 24
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 23 && MSGPACK_PP_ITERATION_START_1 >= 23
+# define MSGPACK_PP_ITERATION_1 23
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 22 && MSGPACK_PP_ITERATION_START_1 >= 22
+# define MSGPACK_PP_ITERATION_1 22
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 21 && MSGPACK_PP_ITERATION_START_1 >= 21
+# define MSGPACK_PP_ITERATION_1 21
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 20 && MSGPACK_PP_ITERATION_START_1 >= 20
+# define MSGPACK_PP_ITERATION_1 20
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 19 && MSGPACK_PP_ITERATION_START_1 >= 19
+# define MSGPACK_PP_ITERATION_1 19
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 18 && MSGPACK_PP_ITERATION_START_1 >= 18
+# define MSGPACK_PP_ITERATION_1 18
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 17 && MSGPACK_PP_ITERATION_START_1 >= 17
+# define MSGPACK_PP_ITERATION_1 17
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 16 && MSGPACK_PP_ITERATION_START_1 >= 16
+# define MSGPACK_PP_ITERATION_1 16
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 15 && MSGPACK_PP_ITERATION_START_1 >= 15
+# define MSGPACK_PP_ITERATION_1 15
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 14 && MSGPACK_PP_ITERATION_START_1 >= 14
+# define MSGPACK_PP_ITERATION_1 14
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 13 && MSGPACK_PP_ITERATION_START_1 >= 13
+# define MSGPACK_PP_ITERATION_1 13
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 12 && MSGPACK_PP_ITERATION_START_1 >= 12
+# define MSGPACK_PP_ITERATION_1 12
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 11 && MSGPACK_PP_ITERATION_START_1 >= 11
+# define MSGPACK_PP_ITERATION_1 11
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 10 && MSGPACK_PP_ITERATION_START_1 >= 10
+# define MSGPACK_PP_ITERATION_1 10
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 9 && MSGPACK_PP_ITERATION_START_1 >= 9
+# define MSGPACK_PP_ITERATION_1 9
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 8 && MSGPACK_PP_ITERATION_START_1 >= 8
+# define MSGPACK_PP_ITERATION_1 8
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 7 && MSGPACK_PP_ITERATION_START_1 >= 7
+# define MSGPACK_PP_ITERATION_1 7
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 6 && MSGPACK_PP_ITERATION_START_1 >= 6
+# define MSGPACK_PP_ITERATION_1 6
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 5 && MSGPACK_PP_ITERATION_START_1 >= 5
+# define MSGPACK_PP_ITERATION_1 5
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 4 && MSGPACK_PP_ITERATION_START_1 >= 4
+# define MSGPACK_PP_ITERATION_1 4
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 3 && MSGPACK_PP_ITERATION_START_1 >= 3
+# define MSGPACK_PP_ITERATION_1 3
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 2 && MSGPACK_PP_ITERATION_START_1 >= 2
+# define MSGPACK_PP_ITERATION_1 2
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 1 && MSGPACK_PP_ITERATION_START_1 >= 1
+# define MSGPACK_PP_ITERATION_1 1
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_1 <= 0 && MSGPACK_PP_ITERATION_START_1 >= 0
+# define MSGPACK_PP_ITERATION_1 0
+# include MSGPACK_PP_FILENAME_1
+# undef MSGPACK_PP_ITERATION_1
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/reverse2.hpp b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/reverse2.hpp
new file mode 100644
index 0000000000..c5ad594b2b
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/reverse2.hpp
@@ -0,0 +1,1296 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 256 && MSGPACK_PP_ITERATION_START_2 >= 256
+# define MSGPACK_PP_ITERATION_2 256
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 255 && MSGPACK_PP_ITERATION_START_2 >= 255
+# define MSGPACK_PP_ITERATION_2 255
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 254 && MSGPACK_PP_ITERATION_START_2 >= 254
+# define MSGPACK_PP_ITERATION_2 254
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 253 && MSGPACK_PP_ITERATION_START_2 >= 253
+# define MSGPACK_PP_ITERATION_2 253
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 252 && MSGPACK_PP_ITERATION_START_2 >= 252
+# define MSGPACK_PP_ITERATION_2 252
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 251 && MSGPACK_PP_ITERATION_START_2 >= 251
+# define MSGPACK_PP_ITERATION_2 251
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 250 && MSGPACK_PP_ITERATION_START_2 >= 250
+# define MSGPACK_PP_ITERATION_2 250
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 249 && MSGPACK_PP_ITERATION_START_2 >= 249
+# define MSGPACK_PP_ITERATION_2 249
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 248 && MSGPACK_PP_ITERATION_START_2 >= 248
+# define MSGPACK_PP_ITERATION_2 248
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 247 && MSGPACK_PP_ITERATION_START_2 >= 247
+# define MSGPACK_PP_ITERATION_2 247
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 246 && MSGPACK_PP_ITERATION_START_2 >= 246
+# define MSGPACK_PP_ITERATION_2 246
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 245 && MSGPACK_PP_ITERATION_START_2 >= 245
+# define MSGPACK_PP_ITERATION_2 245
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 244 && MSGPACK_PP_ITERATION_START_2 >= 244
+# define MSGPACK_PP_ITERATION_2 244
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 243 && MSGPACK_PP_ITERATION_START_2 >= 243
+# define MSGPACK_PP_ITERATION_2 243
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 242 && MSGPACK_PP_ITERATION_START_2 >= 242
+# define MSGPACK_PP_ITERATION_2 242
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 241 && MSGPACK_PP_ITERATION_START_2 >= 241
+# define MSGPACK_PP_ITERATION_2 241
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 240 && MSGPACK_PP_ITERATION_START_2 >= 240
+# define MSGPACK_PP_ITERATION_2 240
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 239 && MSGPACK_PP_ITERATION_START_2 >= 239
+# define MSGPACK_PP_ITERATION_2 239
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 238 && MSGPACK_PP_ITERATION_START_2 >= 238
+# define MSGPACK_PP_ITERATION_2 238
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 237 && MSGPACK_PP_ITERATION_START_2 >= 237
+# define MSGPACK_PP_ITERATION_2 237
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 236 && MSGPACK_PP_ITERATION_START_2 >= 236
+# define MSGPACK_PP_ITERATION_2 236
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 235 && MSGPACK_PP_ITERATION_START_2 >= 235
+# define MSGPACK_PP_ITERATION_2 235
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 234 && MSGPACK_PP_ITERATION_START_2 >= 234
+# define MSGPACK_PP_ITERATION_2 234
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 233 && MSGPACK_PP_ITERATION_START_2 >= 233
+# define MSGPACK_PP_ITERATION_2 233
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 232 && MSGPACK_PP_ITERATION_START_2 >= 232
+# define MSGPACK_PP_ITERATION_2 232
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 231 && MSGPACK_PP_ITERATION_START_2 >= 231
+# define MSGPACK_PP_ITERATION_2 231
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 230 && MSGPACK_PP_ITERATION_START_2 >= 230
+# define MSGPACK_PP_ITERATION_2 230
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 229 && MSGPACK_PP_ITERATION_START_2 >= 229
+# define MSGPACK_PP_ITERATION_2 229
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 228 && MSGPACK_PP_ITERATION_START_2 >= 228
+# define MSGPACK_PP_ITERATION_2 228
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 227 && MSGPACK_PP_ITERATION_START_2 >= 227
+# define MSGPACK_PP_ITERATION_2 227
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 226 && MSGPACK_PP_ITERATION_START_2 >= 226
+# define MSGPACK_PP_ITERATION_2 226
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 225 && MSGPACK_PP_ITERATION_START_2 >= 225
+# define MSGPACK_PP_ITERATION_2 225
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 224 && MSGPACK_PP_ITERATION_START_2 >= 224
+# define MSGPACK_PP_ITERATION_2 224
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 223 && MSGPACK_PP_ITERATION_START_2 >= 223
+# define MSGPACK_PP_ITERATION_2 223
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 222 && MSGPACK_PP_ITERATION_START_2 >= 222
+# define MSGPACK_PP_ITERATION_2 222
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 221 && MSGPACK_PP_ITERATION_START_2 >= 221
+# define MSGPACK_PP_ITERATION_2 221
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 220 && MSGPACK_PP_ITERATION_START_2 >= 220
+# define MSGPACK_PP_ITERATION_2 220
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 219 && MSGPACK_PP_ITERATION_START_2 >= 219
+# define MSGPACK_PP_ITERATION_2 219
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 218 && MSGPACK_PP_ITERATION_START_2 >= 218
+# define MSGPACK_PP_ITERATION_2 218
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 217 && MSGPACK_PP_ITERATION_START_2 >= 217
+# define MSGPACK_PP_ITERATION_2 217
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 216 && MSGPACK_PP_ITERATION_START_2 >= 216
+# define MSGPACK_PP_ITERATION_2 216
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 215 && MSGPACK_PP_ITERATION_START_2 >= 215
+# define MSGPACK_PP_ITERATION_2 215
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 214 && MSGPACK_PP_ITERATION_START_2 >= 214
+# define MSGPACK_PP_ITERATION_2 214
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 213 && MSGPACK_PP_ITERATION_START_2 >= 213
+# define MSGPACK_PP_ITERATION_2 213
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 212 && MSGPACK_PP_ITERATION_START_2 >= 212
+# define MSGPACK_PP_ITERATION_2 212
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 211 && MSGPACK_PP_ITERATION_START_2 >= 211
+# define MSGPACK_PP_ITERATION_2 211
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 210 && MSGPACK_PP_ITERATION_START_2 >= 210
+# define MSGPACK_PP_ITERATION_2 210
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 209 && MSGPACK_PP_ITERATION_START_2 >= 209
+# define MSGPACK_PP_ITERATION_2 209
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 208 && MSGPACK_PP_ITERATION_START_2 >= 208
+# define MSGPACK_PP_ITERATION_2 208
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 207 && MSGPACK_PP_ITERATION_START_2 >= 207
+# define MSGPACK_PP_ITERATION_2 207
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 206 && MSGPACK_PP_ITERATION_START_2 >= 206
+# define MSGPACK_PP_ITERATION_2 206
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 205 && MSGPACK_PP_ITERATION_START_2 >= 205
+# define MSGPACK_PP_ITERATION_2 205
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 204 && MSGPACK_PP_ITERATION_START_2 >= 204
+# define MSGPACK_PP_ITERATION_2 204
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 203 && MSGPACK_PP_ITERATION_START_2 >= 203
+# define MSGPACK_PP_ITERATION_2 203
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 202 && MSGPACK_PP_ITERATION_START_2 >= 202
+# define MSGPACK_PP_ITERATION_2 202
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 201 && MSGPACK_PP_ITERATION_START_2 >= 201
+# define MSGPACK_PP_ITERATION_2 201
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 200 && MSGPACK_PP_ITERATION_START_2 >= 200
+# define MSGPACK_PP_ITERATION_2 200
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 199 && MSGPACK_PP_ITERATION_START_2 >= 199
+# define MSGPACK_PP_ITERATION_2 199
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 198 && MSGPACK_PP_ITERATION_START_2 >= 198
+# define MSGPACK_PP_ITERATION_2 198
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 197 && MSGPACK_PP_ITERATION_START_2 >= 197
+# define MSGPACK_PP_ITERATION_2 197
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 196 && MSGPACK_PP_ITERATION_START_2 >= 196
+# define MSGPACK_PP_ITERATION_2 196
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 195 && MSGPACK_PP_ITERATION_START_2 >= 195
+# define MSGPACK_PP_ITERATION_2 195
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 194 && MSGPACK_PP_ITERATION_START_2 >= 194
+# define MSGPACK_PP_ITERATION_2 194
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 193 && MSGPACK_PP_ITERATION_START_2 >= 193
+# define MSGPACK_PP_ITERATION_2 193
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 192 && MSGPACK_PP_ITERATION_START_2 >= 192
+# define MSGPACK_PP_ITERATION_2 192
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 191 && MSGPACK_PP_ITERATION_START_2 >= 191
+# define MSGPACK_PP_ITERATION_2 191
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 190 && MSGPACK_PP_ITERATION_START_2 >= 190
+# define MSGPACK_PP_ITERATION_2 190
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 189 && MSGPACK_PP_ITERATION_START_2 >= 189
+# define MSGPACK_PP_ITERATION_2 189
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 188 && MSGPACK_PP_ITERATION_START_2 >= 188
+# define MSGPACK_PP_ITERATION_2 188
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 187 && MSGPACK_PP_ITERATION_START_2 >= 187
+# define MSGPACK_PP_ITERATION_2 187
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 186 && MSGPACK_PP_ITERATION_START_2 >= 186
+# define MSGPACK_PP_ITERATION_2 186
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 185 && MSGPACK_PP_ITERATION_START_2 >= 185
+# define MSGPACK_PP_ITERATION_2 185
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 184 && MSGPACK_PP_ITERATION_START_2 >= 184
+# define MSGPACK_PP_ITERATION_2 184
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 183 && MSGPACK_PP_ITERATION_START_2 >= 183
+# define MSGPACK_PP_ITERATION_2 183
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 182 && MSGPACK_PP_ITERATION_START_2 >= 182
+# define MSGPACK_PP_ITERATION_2 182
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 181 && MSGPACK_PP_ITERATION_START_2 >= 181
+# define MSGPACK_PP_ITERATION_2 181
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 180 && MSGPACK_PP_ITERATION_START_2 >= 180
+# define MSGPACK_PP_ITERATION_2 180
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 179 && MSGPACK_PP_ITERATION_START_2 >= 179
+# define MSGPACK_PP_ITERATION_2 179
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 178 && MSGPACK_PP_ITERATION_START_2 >= 178
+# define MSGPACK_PP_ITERATION_2 178
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 177 && MSGPACK_PP_ITERATION_START_2 >= 177
+# define MSGPACK_PP_ITERATION_2 177
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 176 && MSGPACK_PP_ITERATION_START_2 >= 176
+# define MSGPACK_PP_ITERATION_2 176
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 175 && MSGPACK_PP_ITERATION_START_2 >= 175
+# define MSGPACK_PP_ITERATION_2 175
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 174 && MSGPACK_PP_ITERATION_START_2 >= 174
+# define MSGPACK_PP_ITERATION_2 174
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 173 && MSGPACK_PP_ITERATION_START_2 >= 173
+# define MSGPACK_PP_ITERATION_2 173
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 172 && MSGPACK_PP_ITERATION_START_2 >= 172
+# define MSGPACK_PP_ITERATION_2 172
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 171 && MSGPACK_PP_ITERATION_START_2 >= 171
+# define MSGPACK_PP_ITERATION_2 171
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 170 && MSGPACK_PP_ITERATION_START_2 >= 170
+# define MSGPACK_PP_ITERATION_2 170
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 169 && MSGPACK_PP_ITERATION_START_2 >= 169
+# define MSGPACK_PP_ITERATION_2 169
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 168 && MSGPACK_PP_ITERATION_START_2 >= 168
+# define MSGPACK_PP_ITERATION_2 168
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 167 && MSGPACK_PP_ITERATION_START_2 >= 167
+# define MSGPACK_PP_ITERATION_2 167
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 166 && MSGPACK_PP_ITERATION_START_2 >= 166
+# define MSGPACK_PP_ITERATION_2 166
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 165 && MSGPACK_PP_ITERATION_START_2 >= 165
+# define MSGPACK_PP_ITERATION_2 165
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 164 && MSGPACK_PP_ITERATION_START_2 >= 164
+# define MSGPACK_PP_ITERATION_2 164
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 163 && MSGPACK_PP_ITERATION_START_2 >= 163
+# define MSGPACK_PP_ITERATION_2 163
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 162 && MSGPACK_PP_ITERATION_START_2 >= 162
+# define MSGPACK_PP_ITERATION_2 162
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 161 && MSGPACK_PP_ITERATION_START_2 >= 161
+# define MSGPACK_PP_ITERATION_2 161
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 160 && MSGPACK_PP_ITERATION_START_2 >= 160
+# define MSGPACK_PP_ITERATION_2 160
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 159 && MSGPACK_PP_ITERATION_START_2 >= 159
+# define MSGPACK_PP_ITERATION_2 159
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 158 && MSGPACK_PP_ITERATION_START_2 >= 158
+# define MSGPACK_PP_ITERATION_2 158
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 157 && MSGPACK_PP_ITERATION_START_2 >= 157
+# define MSGPACK_PP_ITERATION_2 157
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 156 && MSGPACK_PP_ITERATION_START_2 >= 156
+# define MSGPACK_PP_ITERATION_2 156
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 155 && MSGPACK_PP_ITERATION_START_2 >= 155
+# define MSGPACK_PP_ITERATION_2 155
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 154 && MSGPACK_PP_ITERATION_START_2 >= 154
+# define MSGPACK_PP_ITERATION_2 154
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 153 && MSGPACK_PP_ITERATION_START_2 >= 153
+# define MSGPACK_PP_ITERATION_2 153
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 152 && MSGPACK_PP_ITERATION_START_2 >= 152
+# define MSGPACK_PP_ITERATION_2 152
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 151 && MSGPACK_PP_ITERATION_START_2 >= 151
+# define MSGPACK_PP_ITERATION_2 151
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 150 && MSGPACK_PP_ITERATION_START_2 >= 150
+# define MSGPACK_PP_ITERATION_2 150
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 149 && MSGPACK_PP_ITERATION_START_2 >= 149
+# define MSGPACK_PP_ITERATION_2 149
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 148 && MSGPACK_PP_ITERATION_START_2 >= 148
+# define MSGPACK_PP_ITERATION_2 148
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 147 && MSGPACK_PP_ITERATION_START_2 >= 147
+# define MSGPACK_PP_ITERATION_2 147
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 146 && MSGPACK_PP_ITERATION_START_2 >= 146
+# define MSGPACK_PP_ITERATION_2 146
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 145 && MSGPACK_PP_ITERATION_START_2 >= 145
+# define MSGPACK_PP_ITERATION_2 145
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 144 && MSGPACK_PP_ITERATION_START_2 >= 144
+# define MSGPACK_PP_ITERATION_2 144
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 143 && MSGPACK_PP_ITERATION_START_2 >= 143
+# define MSGPACK_PP_ITERATION_2 143
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 142 && MSGPACK_PP_ITERATION_START_2 >= 142
+# define MSGPACK_PP_ITERATION_2 142
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 141 && MSGPACK_PP_ITERATION_START_2 >= 141
+# define MSGPACK_PP_ITERATION_2 141
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 140 && MSGPACK_PP_ITERATION_START_2 >= 140
+# define MSGPACK_PP_ITERATION_2 140
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 139 && MSGPACK_PP_ITERATION_START_2 >= 139
+# define MSGPACK_PP_ITERATION_2 139
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 138 && MSGPACK_PP_ITERATION_START_2 >= 138
+# define MSGPACK_PP_ITERATION_2 138
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 137 && MSGPACK_PP_ITERATION_START_2 >= 137
+# define MSGPACK_PP_ITERATION_2 137
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 136 && MSGPACK_PP_ITERATION_START_2 >= 136
+# define MSGPACK_PP_ITERATION_2 136
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 135 && MSGPACK_PP_ITERATION_START_2 >= 135
+# define MSGPACK_PP_ITERATION_2 135
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 134 && MSGPACK_PP_ITERATION_START_2 >= 134
+# define MSGPACK_PP_ITERATION_2 134
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 133 && MSGPACK_PP_ITERATION_START_2 >= 133
+# define MSGPACK_PP_ITERATION_2 133
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 132 && MSGPACK_PP_ITERATION_START_2 >= 132
+# define MSGPACK_PP_ITERATION_2 132
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 131 && MSGPACK_PP_ITERATION_START_2 >= 131
+# define MSGPACK_PP_ITERATION_2 131
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 130 && MSGPACK_PP_ITERATION_START_2 >= 130
+# define MSGPACK_PP_ITERATION_2 130
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 129 && MSGPACK_PP_ITERATION_START_2 >= 129
+# define MSGPACK_PP_ITERATION_2 129
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 128 && MSGPACK_PP_ITERATION_START_2 >= 128
+# define MSGPACK_PP_ITERATION_2 128
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 127 && MSGPACK_PP_ITERATION_START_2 >= 127
+# define MSGPACK_PP_ITERATION_2 127
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 126 && MSGPACK_PP_ITERATION_START_2 >= 126
+# define MSGPACK_PP_ITERATION_2 126
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 125 && MSGPACK_PP_ITERATION_START_2 >= 125
+# define MSGPACK_PP_ITERATION_2 125
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 124 && MSGPACK_PP_ITERATION_START_2 >= 124
+# define MSGPACK_PP_ITERATION_2 124
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 123 && MSGPACK_PP_ITERATION_START_2 >= 123
+# define MSGPACK_PP_ITERATION_2 123
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 122 && MSGPACK_PP_ITERATION_START_2 >= 122
+# define MSGPACK_PP_ITERATION_2 122
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 121 && MSGPACK_PP_ITERATION_START_2 >= 121
+# define MSGPACK_PP_ITERATION_2 121
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 120 && MSGPACK_PP_ITERATION_START_2 >= 120
+# define MSGPACK_PP_ITERATION_2 120
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 119 && MSGPACK_PP_ITERATION_START_2 >= 119
+# define MSGPACK_PP_ITERATION_2 119
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 118 && MSGPACK_PP_ITERATION_START_2 >= 118
+# define MSGPACK_PP_ITERATION_2 118
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 117 && MSGPACK_PP_ITERATION_START_2 >= 117
+# define MSGPACK_PP_ITERATION_2 117
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 116 && MSGPACK_PP_ITERATION_START_2 >= 116
+# define MSGPACK_PP_ITERATION_2 116
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 115 && MSGPACK_PP_ITERATION_START_2 >= 115
+# define MSGPACK_PP_ITERATION_2 115
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 114 && MSGPACK_PP_ITERATION_START_2 >= 114
+# define MSGPACK_PP_ITERATION_2 114
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 113 && MSGPACK_PP_ITERATION_START_2 >= 113
+# define MSGPACK_PP_ITERATION_2 113
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 112 && MSGPACK_PP_ITERATION_START_2 >= 112
+# define MSGPACK_PP_ITERATION_2 112
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 111 && MSGPACK_PP_ITERATION_START_2 >= 111
+# define MSGPACK_PP_ITERATION_2 111
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 110 && MSGPACK_PP_ITERATION_START_2 >= 110
+# define MSGPACK_PP_ITERATION_2 110
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 109 && MSGPACK_PP_ITERATION_START_2 >= 109
+# define MSGPACK_PP_ITERATION_2 109
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 108 && MSGPACK_PP_ITERATION_START_2 >= 108
+# define MSGPACK_PP_ITERATION_2 108
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 107 && MSGPACK_PP_ITERATION_START_2 >= 107
+# define MSGPACK_PP_ITERATION_2 107
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 106 && MSGPACK_PP_ITERATION_START_2 >= 106
+# define MSGPACK_PP_ITERATION_2 106
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 105 && MSGPACK_PP_ITERATION_START_2 >= 105
+# define MSGPACK_PP_ITERATION_2 105
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 104 && MSGPACK_PP_ITERATION_START_2 >= 104
+# define MSGPACK_PP_ITERATION_2 104
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 103 && MSGPACK_PP_ITERATION_START_2 >= 103
+# define MSGPACK_PP_ITERATION_2 103
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 102 && MSGPACK_PP_ITERATION_START_2 >= 102
+# define MSGPACK_PP_ITERATION_2 102
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 101 && MSGPACK_PP_ITERATION_START_2 >= 101
+# define MSGPACK_PP_ITERATION_2 101
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 100 && MSGPACK_PP_ITERATION_START_2 >= 100
+# define MSGPACK_PP_ITERATION_2 100
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 99 && MSGPACK_PP_ITERATION_START_2 >= 99
+# define MSGPACK_PP_ITERATION_2 99
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 98 && MSGPACK_PP_ITERATION_START_2 >= 98
+# define MSGPACK_PP_ITERATION_2 98
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 97 && MSGPACK_PP_ITERATION_START_2 >= 97
+# define MSGPACK_PP_ITERATION_2 97
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 96 && MSGPACK_PP_ITERATION_START_2 >= 96
+# define MSGPACK_PP_ITERATION_2 96
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 95 && MSGPACK_PP_ITERATION_START_2 >= 95
+# define MSGPACK_PP_ITERATION_2 95
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 94 && MSGPACK_PP_ITERATION_START_2 >= 94
+# define MSGPACK_PP_ITERATION_2 94
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 93 && MSGPACK_PP_ITERATION_START_2 >= 93
+# define MSGPACK_PP_ITERATION_2 93
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 92 && MSGPACK_PP_ITERATION_START_2 >= 92
+# define MSGPACK_PP_ITERATION_2 92
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 91 && MSGPACK_PP_ITERATION_START_2 >= 91
+# define MSGPACK_PP_ITERATION_2 91
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 90 && MSGPACK_PP_ITERATION_START_2 >= 90
+# define MSGPACK_PP_ITERATION_2 90
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 89 && MSGPACK_PP_ITERATION_START_2 >= 89
+# define MSGPACK_PP_ITERATION_2 89
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 88 && MSGPACK_PP_ITERATION_START_2 >= 88
+# define MSGPACK_PP_ITERATION_2 88
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 87 && MSGPACK_PP_ITERATION_START_2 >= 87
+# define MSGPACK_PP_ITERATION_2 87
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 86 && MSGPACK_PP_ITERATION_START_2 >= 86
+# define MSGPACK_PP_ITERATION_2 86
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 85 && MSGPACK_PP_ITERATION_START_2 >= 85
+# define MSGPACK_PP_ITERATION_2 85
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 84 && MSGPACK_PP_ITERATION_START_2 >= 84
+# define MSGPACK_PP_ITERATION_2 84
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 83 && MSGPACK_PP_ITERATION_START_2 >= 83
+# define MSGPACK_PP_ITERATION_2 83
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 82 && MSGPACK_PP_ITERATION_START_2 >= 82
+# define MSGPACK_PP_ITERATION_2 82
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 81 && MSGPACK_PP_ITERATION_START_2 >= 81
+# define MSGPACK_PP_ITERATION_2 81
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 80 && MSGPACK_PP_ITERATION_START_2 >= 80
+# define MSGPACK_PP_ITERATION_2 80
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 79 && MSGPACK_PP_ITERATION_START_2 >= 79
+# define MSGPACK_PP_ITERATION_2 79
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 78 && MSGPACK_PP_ITERATION_START_2 >= 78
+# define MSGPACK_PP_ITERATION_2 78
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 77 && MSGPACK_PP_ITERATION_START_2 >= 77
+# define MSGPACK_PP_ITERATION_2 77
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 76 && MSGPACK_PP_ITERATION_START_2 >= 76
+# define MSGPACK_PP_ITERATION_2 76
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 75 && MSGPACK_PP_ITERATION_START_2 >= 75
+# define MSGPACK_PP_ITERATION_2 75
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 74 && MSGPACK_PP_ITERATION_START_2 >= 74
+# define MSGPACK_PP_ITERATION_2 74
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 73 && MSGPACK_PP_ITERATION_START_2 >= 73
+# define MSGPACK_PP_ITERATION_2 73
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 72 && MSGPACK_PP_ITERATION_START_2 >= 72
+# define MSGPACK_PP_ITERATION_2 72
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 71 && MSGPACK_PP_ITERATION_START_2 >= 71
+# define MSGPACK_PP_ITERATION_2 71
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 70 && MSGPACK_PP_ITERATION_START_2 >= 70
+# define MSGPACK_PP_ITERATION_2 70
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 69 && MSGPACK_PP_ITERATION_START_2 >= 69
+# define MSGPACK_PP_ITERATION_2 69
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 68 && MSGPACK_PP_ITERATION_START_2 >= 68
+# define MSGPACK_PP_ITERATION_2 68
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 67 && MSGPACK_PP_ITERATION_START_2 >= 67
+# define MSGPACK_PP_ITERATION_2 67
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 66 && MSGPACK_PP_ITERATION_START_2 >= 66
+# define MSGPACK_PP_ITERATION_2 66
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 65 && MSGPACK_PP_ITERATION_START_2 >= 65
+# define MSGPACK_PP_ITERATION_2 65
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 64 && MSGPACK_PP_ITERATION_START_2 >= 64
+# define MSGPACK_PP_ITERATION_2 64
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 63 && MSGPACK_PP_ITERATION_START_2 >= 63
+# define MSGPACK_PP_ITERATION_2 63
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 62 && MSGPACK_PP_ITERATION_START_2 >= 62
+# define MSGPACK_PP_ITERATION_2 62
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 61 && MSGPACK_PP_ITERATION_START_2 >= 61
+# define MSGPACK_PP_ITERATION_2 61
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 60 && MSGPACK_PP_ITERATION_START_2 >= 60
+# define MSGPACK_PP_ITERATION_2 60
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 59 && MSGPACK_PP_ITERATION_START_2 >= 59
+# define MSGPACK_PP_ITERATION_2 59
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 58 && MSGPACK_PP_ITERATION_START_2 >= 58
+# define MSGPACK_PP_ITERATION_2 58
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 57 && MSGPACK_PP_ITERATION_START_2 >= 57
+# define MSGPACK_PP_ITERATION_2 57
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 56 && MSGPACK_PP_ITERATION_START_2 >= 56
+# define MSGPACK_PP_ITERATION_2 56
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 55 && MSGPACK_PP_ITERATION_START_2 >= 55
+# define MSGPACK_PP_ITERATION_2 55
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 54 && MSGPACK_PP_ITERATION_START_2 >= 54
+# define MSGPACK_PP_ITERATION_2 54
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 53 && MSGPACK_PP_ITERATION_START_2 >= 53
+# define MSGPACK_PP_ITERATION_2 53
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 52 && MSGPACK_PP_ITERATION_START_2 >= 52
+# define MSGPACK_PP_ITERATION_2 52
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 51 && MSGPACK_PP_ITERATION_START_2 >= 51
+# define MSGPACK_PP_ITERATION_2 51
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 50 && MSGPACK_PP_ITERATION_START_2 >= 50
+# define MSGPACK_PP_ITERATION_2 50
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 49 && MSGPACK_PP_ITERATION_START_2 >= 49
+# define MSGPACK_PP_ITERATION_2 49
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 48 && MSGPACK_PP_ITERATION_START_2 >= 48
+# define MSGPACK_PP_ITERATION_2 48
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 47 && MSGPACK_PP_ITERATION_START_2 >= 47
+# define MSGPACK_PP_ITERATION_2 47
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 46 && MSGPACK_PP_ITERATION_START_2 >= 46
+# define MSGPACK_PP_ITERATION_2 46
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 45 && MSGPACK_PP_ITERATION_START_2 >= 45
+# define MSGPACK_PP_ITERATION_2 45
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 44 && MSGPACK_PP_ITERATION_START_2 >= 44
+# define MSGPACK_PP_ITERATION_2 44
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 43 && MSGPACK_PP_ITERATION_START_2 >= 43
+# define MSGPACK_PP_ITERATION_2 43
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 42 && MSGPACK_PP_ITERATION_START_2 >= 42
+# define MSGPACK_PP_ITERATION_2 42
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 41 && MSGPACK_PP_ITERATION_START_2 >= 41
+# define MSGPACK_PP_ITERATION_2 41
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 40 && MSGPACK_PP_ITERATION_START_2 >= 40
+# define MSGPACK_PP_ITERATION_2 40
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 39 && MSGPACK_PP_ITERATION_START_2 >= 39
+# define MSGPACK_PP_ITERATION_2 39
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 38 && MSGPACK_PP_ITERATION_START_2 >= 38
+# define MSGPACK_PP_ITERATION_2 38
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 37 && MSGPACK_PP_ITERATION_START_2 >= 37
+# define MSGPACK_PP_ITERATION_2 37
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 36 && MSGPACK_PP_ITERATION_START_2 >= 36
+# define MSGPACK_PP_ITERATION_2 36
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 35 && MSGPACK_PP_ITERATION_START_2 >= 35
+# define MSGPACK_PP_ITERATION_2 35
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 34 && MSGPACK_PP_ITERATION_START_2 >= 34
+# define MSGPACK_PP_ITERATION_2 34
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 33 && MSGPACK_PP_ITERATION_START_2 >= 33
+# define MSGPACK_PP_ITERATION_2 33
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 32 && MSGPACK_PP_ITERATION_START_2 >= 32
+# define MSGPACK_PP_ITERATION_2 32
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 31 && MSGPACK_PP_ITERATION_START_2 >= 31
+# define MSGPACK_PP_ITERATION_2 31
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 30 && MSGPACK_PP_ITERATION_START_2 >= 30
+# define MSGPACK_PP_ITERATION_2 30
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 29 && MSGPACK_PP_ITERATION_START_2 >= 29
+# define MSGPACK_PP_ITERATION_2 29
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 28 && MSGPACK_PP_ITERATION_START_2 >= 28
+# define MSGPACK_PP_ITERATION_2 28
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 27 && MSGPACK_PP_ITERATION_START_2 >= 27
+# define MSGPACK_PP_ITERATION_2 27
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 26 && MSGPACK_PP_ITERATION_START_2 >= 26
+# define MSGPACK_PP_ITERATION_2 26
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 25 && MSGPACK_PP_ITERATION_START_2 >= 25
+# define MSGPACK_PP_ITERATION_2 25
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 24 && MSGPACK_PP_ITERATION_START_2 >= 24
+# define MSGPACK_PP_ITERATION_2 24
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 23 && MSGPACK_PP_ITERATION_START_2 >= 23
+# define MSGPACK_PP_ITERATION_2 23
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 22 && MSGPACK_PP_ITERATION_START_2 >= 22
+# define MSGPACK_PP_ITERATION_2 22
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 21 && MSGPACK_PP_ITERATION_START_2 >= 21
+# define MSGPACK_PP_ITERATION_2 21
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 20 && MSGPACK_PP_ITERATION_START_2 >= 20
+# define MSGPACK_PP_ITERATION_2 20
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 19 && MSGPACK_PP_ITERATION_START_2 >= 19
+# define MSGPACK_PP_ITERATION_2 19
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 18 && MSGPACK_PP_ITERATION_START_2 >= 18
+# define MSGPACK_PP_ITERATION_2 18
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 17 && MSGPACK_PP_ITERATION_START_2 >= 17
+# define MSGPACK_PP_ITERATION_2 17
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 16 && MSGPACK_PP_ITERATION_START_2 >= 16
+# define MSGPACK_PP_ITERATION_2 16
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 15 && MSGPACK_PP_ITERATION_START_2 >= 15
+# define MSGPACK_PP_ITERATION_2 15
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 14 && MSGPACK_PP_ITERATION_START_2 >= 14
+# define MSGPACK_PP_ITERATION_2 14
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 13 && MSGPACK_PP_ITERATION_START_2 >= 13
+# define MSGPACK_PP_ITERATION_2 13
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 12 && MSGPACK_PP_ITERATION_START_2 >= 12
+# define MSGPACK_PP_ITERATION_2 12
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 11 && MSGPACK_PP_ITERATION_START_2 >= 11
+# define MSGPACK_PP_ITERATION_2 11
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 10 && MSGPACK_PP_ITERATION_START_2 >= 10
+# define MSGPACK_PP_ITERATION_2 10
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 9 && MSGPACK_PP_ITERATION_START_2 >= 9
+# define MSGPACK_PP_ITERATION_2 9
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 8 && MSGPACK_PP_ITERATION_START_2 >= 8
+# define MSGPACK_PP_ITERATION_2 8
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 7 && MSGPACK_PP_ITERATION_START_2 >= 7
+# define MSGPACK_PP_ITERATION_2 7
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 6 && MSGPACK_PP_ITERATION_START_2 >= 6
+# define MSGPACK_PP_ITERATION_2 6
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 5 && MSGPACK_PP_ITERATION_START_2 >= 5
+# define MSGPACK_PP_ITERATION_2 5
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 4 && MSGPACK_PP_ITERATION_START_2 >= 4
+# define MSGPACK_PP_ITERATION_2 4
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 3 && MSGPACK_PP_ITERATION_START_2 >= 3
+# define MSGPACK_PP_ITERATION_2 3
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 2 && MSGPACK_PP_ITERATION_START_2 >= 2
+# define MSGPACK_PP_ITERATION_2 2
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 1 && MSGPACK_PP_ITERATION_START_2 >= 1
+# define MSGPACK_PP_ITERATION_2 1
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_2 <= 0 && MSGPACK_PP_ITERATION_START_2 >= 0
+# define MSGPACK_PP_ITERATION_2 0
+# include MSGPACK_PP_FILENAME_2
+# undef MSGPACK_PP_ITERATION_2
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/reverse3.hpp b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/reverse3.hpp
new file mode 100644
index 0000000000..3b003742d9
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/reverse3.hpp
@@ -0,0 +1,1296 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 256 && MSGPACK_PP_ITERATION_START_3 >= 256
+# define MSGPACK_PP_ITERATION_3 256
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 255 && MSGPACK_PP_ITERATION_START_3 >= 255
+# define MSGPACK_PP_ITERATION_3 255
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 254 && MSGPACK_PP_ITERATION_START_3 >= 254
+# define MSGPACK_PP_ITERATION_3 254
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 253 && MSGPACK_PP_ITERATION_START_3 >= 253
+# define MSGPACK_PP_ITERATION_3 253
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 252 && MSGPACK_PP_ITERATION_START_3 >= 252
+# define MSGPACK_PP_ITERATION_3 252
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 251 && MSGPACK_PP_ITERATION_START_3 >= 251
+# define MSGPACK_PP_ITERATION_3 251
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 250 && MSGPACK_PP_ITERATION_START_3 >= 250
+# define MSGPACK_PP_ITERATION_3 250
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 249 && MSGPACK_PP_ITERATION_START_3 >= 249
+# define MSGPACK_PP_ITERATION_3 249
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 248 && MSGPACK_PP_ITERATION_START_3 >= 248
+# define MSGPACK_PP_ITERATION_3 248
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 247 && MSGPACK_PP_ITERATION_START_3 >= 247
+# define MSGPACK_PP_ITERATION_3 247
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 246 && MSGPACK_PP_ITERATION_START_3 >= 246
+# define MSGPACK_PP_ITERATION_3 246
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 245 && MSGPACK_PP_ITERATION_START_3 >= 245
+# define MSGPACK_PP_ITERATION_3 245
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 244 && MSGPACK_PP_ITERATION_START_3 >= 244
+# define MSGPACK_PP_ITERATION_3 244
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 243 && MSGPACK_PP_ITERATION_START_3 >= 243
+# define MSGPACK_PP_ITERATION_3 243
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 242 && MSGPACK_PP_ITERATION_START_3 >= 242
+# define MSGPACK_PP_ITERATION_3 242
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 241 && MSGPACK_PP_ITERATION_START_3 >= 241
+# define MSGPACK_PP_ITERATION_3 241
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 240 && MSGPACK_PP_ITERATION_START_3 >= 240
+# define MSGPACK_PP_ITERATION_3 240
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 239 && MSGPACK_PP_ITERATION_START_3 >= 239
+# define MSGPACK_PP_ITERATION_3 239
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 238 && MSGPACK_PP_ITERATION_START_3 >= 238
+# define MSGPACK_PP_ITERATION_3 238
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 237 && MSGPACK_PP_ITERATION_START_3 >= 237
+# define MSGPACK_PP_ITERATION_3 237
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 236 && MSGPACK_PP_ITERATION_START_3 >= 236
+# define MSGPACK_PP_ITERATION_3 236
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 235 && MSGPACK_PP_ITERATION_START_3 >= 235
+# define MSGPACK_PP_ITERATION_3 235
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 234 && MSGPACK_PP_ITERATION_START_3 >= 234
+# define MSGPACK_PP_ITERATION_3 234
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 233 && MSGPACK_PP_ITERATION_START_3 >= 233
+# define MSGPACK_PP_ITERATION_3 233
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 232 && MSGPACK_PP_ITERATION_START_3 >= 232
+# define MSGPACK_PP_ITERATION_3 232
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 231 && MSGPACK_PP_ITERATION_START_3 >= 231
+# define MSGPACK_PP_ITERATION_3 231
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 230 && MSGPACK_PP_ITERATION_START_3 >= 230
+# define MSGPACK_PP_ITERATION_3 230
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 229 && MSGPACK_PP_ITERATION_START_3 >= 229
+# define MSGPACK_PP_ITERATION_3 229
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 228 && MSGPACK_PP_ITERATION_START_3 >= 228
+# define MSGPACK_PP_ITERATION_3 228
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 227 && MSGPACK_PP_ITERATION_START_3 >= 227
+# define MSGPACK_PP_ITERATION_3 227
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 226 && MSGPACK_PP_ITERATION_START_3 >= 226
+# define MSGPACK_PP_ITERATION_3 226
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 225 && MSGPACK_PP_ITERATION_START_3 >= 225
+# define MSGPACK_PP_ITERATION_3 225
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 224 && MSGPACK_PP_ITERATION_START_3 >= 224
+# define MSGPACK_PP_ITERATION_3 224
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 223 && MSGPACK_PP_ITERATION_START_3 >= 223
+# define MSGPACK_PP_ITERATION_3 223
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 222 && MSGPACK_PP_ITERATION_START_3 >= 222
+# define MSGPACK_PP_ITERATION_3 222
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 221 && MSGPACK_PP_ITERATION_START_3 >= 221
+# define MSGPACK_PP_ITERATION_3 221
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 220 && MSGPACK_PP_ITERATION_START_3 >= 220
+# define MSGPACK_PP_ITERATION_3 220
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 219 && MSGPACK_PP_ITERATION_START_3 >= 219
+# define MSGPACK_PP_ITERATION_3 219
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 218 && MSGPACK_PP_ITERATION_START_3 >= 218
+# define MSGPACK_PP_ITERATION_3 218
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 217 && MSGPACK_PP_ITERATION_START_3 >= 217
+# define MSGPACK_PP_ITERATION_3 217
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 216 && MSGPACK_PP_ITERATION_START_3 >= 216
+# define MSGPACK_PP_ITERATION_3 216
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 215 && MSGPACK_PP_ITERATION_START_3 >= 215
+# define MSGPACK_PP_ITERATION_3 215
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 214 && MSGPACK_PP_ITERATION_START_3 >= 214
+# define MSGPACK_PP_ITERATION_3 214
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 213 && MSGPACK_PP_ITERATION_START_3 >= 213
+# define MSGPACK_PP_ITERATION_3 213
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 212 && MSGPACK_PP_ITERATION_START_3 >= 212
+# define MSGPACK_PP_ITERATION_3 212
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 211 && MSGPACK_PP_ITERATION_START_3 >= 211
+# define MSGPACK_PP_ITERATION_3 211
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 210 && MSGPACK_PP_ITERATION_START_3 >= 210
+# define MSGPACK_PP_ITERATION_3 210
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 209 && MSGPACK_PP_ITERATION_START_3 >= 209
+# define MSGPACK_PP_ITERATION_3 209
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 208 && MSGPACK_PP_ITERATION_START_3 >= 208
+# define MSGPACK_PP_ITERATION_3 208
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 207 && MSGPACK_PP_ITERATION_START_3 >= 207
+# define MSGPACK_PP_ITERATION_3 207
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 206 && MSGPACK_PP_ITERATION_START_3 >= 206
+# define MSGPACK_PP_ITERATION_3 206
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 205 && MSGPACK_PP_ITERATION_START_3 >= 205
+# define MSGPACK_PP_ITERATION_3 205
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 204 && MSGPACK_PP_ITERATION_START_3 >= 204
+# define MSGPACK_PP_ITERATION_3 204
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 203 && MSGPACK_PP_ITERATION_START_3 >= 203
+# define MSGPACK_PP_ITERATION_3 203
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 202 && MSGPACK_PP_ITERATION_START_3 >= 202
+# define MSGPACK_PP_ITERATION_3 202
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 201 && MSGPACK_PP_ITERATION_START_3 >= 201
+# define MSGPACK_PP_ITERATION_3 201
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 200 && MSGPACK_PP_ITERATION_START_3 >= 200
+# define MSGPACK_PP_ITERATION_3 200
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 199 && MSGPACK_PP_ITERATION_START_3 >= 199
+# define MSGPACK_PP_ITERATION_3 199
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 198 && MSGPACK_PP_ITERATION_START_3 >= 198
+# define MSGPACK_PP_ITERATION_3 198
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 197 && MSGPACK_PP_ITERATION_START_3 >= 197
+# define MSGPACK_PP_ITERATION_3 197
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 196 && MSGPACK_PP_ITERATION_START_3 >= 196
+# define MSGPACK_PP_ITERATION_3 196
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 195 && MSGPACK_PP_ITERATION_START_3 >= 195
+# define MSGPACK_PP_ITERATION_3 195
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 194 && MSGPACK_PP_ITERATION_START_3 >= 194
+# define MSGPACK_PP_ITERATION_3 194
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 193 && MSGPACK_PP_ITERATION_START_3 >= 193
+# define MSGPACK_PP_ITERATION_3 193
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 192 && MSGPACK_PP_ITERATION_START_3 >= 192
+# define MSGPACK_PP_ITERATION_3 192
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 191 && MSGPACK_PP_ITERATION_START_3 >= 191
+# define MSGPACK_PP_ITERATION_3 191
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 190 && MSGPACK_PP_ITERATION_START_3 >= 190
+# define MSGPACK_PP_ITERATION_3 190
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 189 && MSGPACK_PP_ITERATION_START_3 >= 189
+# define MSGPACK_PP_ITERATION_3 189
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 188 && MSGPACK_PP_ITERATION_START_3 >= 188
+# define MSGPACK_PP_ITERATION_3 188
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 187 && MSGPACK_PP_ITERATION_START_3 >= 187
+# define MSGPACK_PP_ITERATION_3 187
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 186 && MSGPACK_PP_ITERATION_START_3 >= 186
+# define MSGPACK_PP_ITERATION_3 186
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 185 && MSGPACK_PP_ITERATION_START_3 >= 185
+# define MSGPACK_PP_ITERATION_3 185
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 184 && MSGPACK_PP_ITERATION_START_3 >= 184
+# define MSGPACK_PP_ITERATION_3 184
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 183 && MSGPACK_PP_ITERATION_START_3 >= 183
+# define MSGPACK_PP_ITERATION_3 183
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 182 && MSGPACK_PP_ITERATION_START_3 >= 182
+# define MSGPACK_PP_ITERATION_3 182
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 181 && MSGPACK_PP_ITERATION_START_3 >= 181
+# define MSGPACK_PP_ITERATION_3 181
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 180 && MSGPACK_PP_ITERATION_START_3 >= 180
+# define MSGPACK_PP_ITERATION_3 180
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 179 && MSGPACK_PP_ITERATION_START_3 >= 179
+# define MSGPACK_PP_ITERATION_3 179
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 178 && MSGPACK_PP_ITERATION_START_3 >= 178
+# define MSGPACK_PP_ITERATION_3 178
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 177 && MSGPACK_PP_ITERATION_START_3 >= 177
+# define MSGPACK_PP_ITERATION_3 177
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 176 && MSGPACK_PP_ITERATION_START_3 >= 176
+# define MSGPACK_PP_ITERATION_3 176
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 175 && MSGPACK_PP_ITERATION_START_3 >= 175
+# define MSGPACK_PP_ITERATION_3 175
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 174 && MSGPACK_PP_ITERATION_START_3 >= 174
+# define MSGPACK_PP_ITERATION_3 174
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 173 && MSGPACK_PP_ITERATION_START_3 >= 173
+# define MSGPACK_PP_ITERATION_3 173
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 172 && MSGPACK_PP_ITERATION_START_3 >= 172
+# define MSGPACK_PP_ITERATION_3 172
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 171 && MSGPACK_PP_ITERATION_START_3 >= 171
+# define MSGPACK_PP_ITERATION_3 171
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 170 && MSGPACK_PP_ITERATION_START_3 >= 170
+# define MSGPACK_PP_ITERATION_3 170
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 169 && MSGPACK_PP_ITERATION_START_3 >= 169
+# define MSGPACK_PP_ITERATION_3 169
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 168 && MSGPACK_PP_ITERATION_START_3 >= 168
+# define MSGPACK_PP_ITERATION_3 168
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 167 && MSGPACK_PP_ITERATION_START_3 >= 167
+# define MSGPACK_PP_ITERATION_3 167
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 166 && MSGPACK_PP_ITERATION_START_3 >= 166
+# define MSGPACK_PP_ITERATION_3 166
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 165 && MSGPACK_PP_ITERATION_START_3 >= 165
+# define MSGPACK_PP_ITERATION_3 165
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 164 && MSGPACK_PP_ITERATION_START_3 >= 164
+# define MSGPACK_PP_ITERATION_3 164
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 163 && MSGPACK_PP_ITERATION_START_3 >= 163
+# define MSGPACK_PP_ITERATION_3 163
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 162 && MSGPACK_PP_ITERATION_START_3 >= 162
+# define MSGPACK_PP_ITERATION_3 162
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 161 && MSGPACK_PP_ITERATION_START_3 >= 161
+# define MSGPACK_PP_ITERATION_3 161
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 160 && MSGPACK_PP_ITERATION_START_3 >= 160
+# define MSGPACK_PP_ITERATION_3 160
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 159 && MSGPACK_PP_ITERATION_START_3 >= 159
+# define MSGPACK_PP_ITERATION_3 159
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 158 && MSGPACK_PP_ITERATION_START_3 >= 158
+# define MSGPACK_PP_ITERATION_3 158
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 157 && MSGPACK_PP_ITERATION_START_3 >= 157
+# define MSGPACK_PP_ITERATION_3 157
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 156 && MSGPACK_PP_ITERATION_START_3 >= 156
+# define MSGPACK_PP_ITERATION_3 156
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 155 && MSGPACK_PP_ITERATION_START_3 >= 155
+# define MSGPACK_PP_ITERATION_3 155
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 154 && MSGPACK_PP_ITERATION_START_3 >= 154
+# define MSGPACK_PP_ITERATION_3 154
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 153 && MSGPACK_PP_ITERATION_START_3 >= 153
+# define MSGPACK_PP_ITERATION_3 153
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 152 && MSGPACK_PP_ITERATION_START_3 >= 152
+# define MSGPACK_PP_ITERATION_3 152
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 151 && MSGPACK_PP_ITERATION_START_3 >= 151
+# define MSGPACK_PP_ITERATION_3 151
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 150 && MSGPACK_PP_ITERATION_START_3 >= 150
+# define MSGPACK_PP_ITERATION_3 150
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 149 && MSGPACK_PP_ITERATION_START_3 >= 149
+# define MSGPACK_PP_ITERATION_3 149
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 148 && MSGPACK_PP_ITERATION_START_3 >= 148
+# define MSGPACK_PP_ITERATION_3 148
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 147 && MSGPACK_PP_ITERATION_START_3 >= 147
+# define MSGPACK_PP_ITERATION_3 147
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 146 && MSGPACK_PP_ITERATION_START_3 >= 146
+# define MSGPACK_PP_ITERATION_3 146
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 145 && MSGPACK_PP_ITERATION_START_3 >= 145
+# define MSGPACK_PP_ITERATION_3 145
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 144 && MSGPACK_PP_ITERATION_START_3 >= 144
+# define MSGPACK_PP_ITERATION_3 144
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 143 && MSGPACK_PP_ITERATION_START_3 >= 143
+# define MSGPACK_PP_ITERATION_3 143
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 142 && MSGPACK_PP_ITERATION_START_3 >= 142
+# define MSGPACK_PP_ITERATION_3 142
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 141 && MSGPACK_PP_ITERATION_START_3 >= 141
+# define MSGPACK_PP_ITERATION_3 141
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 140 && MSGPACK_PP_ITERATION_START_3 >= 140
+# define MSGPACK_PP_ITERATION_3 140
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 139 && MSGPACK_PP_ITERATION_START_3 >= 139
+# define MSGPACK_PP_ITERATION_3 139
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 138 && MSGPACK_PP_ITERATION_START_3 >= 138
+# define MSGPACK_PP_ITERATION_3 138
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 137 && MSGPACK_PP_ITERATION_START_3 >= 137
+# define MSGPACK_PP_ITERATION_3 137
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 136 && MSGPACK_PP_ITERATION_START_3 >= 136
+# define MSGPACK_PP_ITERATION_3 136
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 135 && MSGPACK_PP_ITERATION_START_3 >= 135
+# define MSGPACK_PP_ITERATION_3 135
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 134 && MSGPACK_PP_ITERATION_START_3 >= 134
+# define MSGPACK_PP_ITERATION_3 134
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 133 && MSGPACK_PP_ITERATION_START_3 >= 133
+# define MSGPACK_PP_ITERATION_3 133
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 132 && MSGPACK_PP_ITERATION_START_3 >= 132
+# define MSGPACK_PP_ITERATION_3 132
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 131 && MSGPACK_PP_ITERATION_START_3 >= 131
+# define MSGPACK_PP_ITERATION_3 131
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 130 && MSGPACK_PP_ITERATION_START_3 >= 130
+# define MSGPACK_PP_ITERATION_3 130
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 129 && MSGPACK_PP_ITERATION_START_3 >= 129
+# define MSGPACK_PP_ITERATION_3 129
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 128 && MSGPACK_PP_ITERATION_START_3 >= 128
+# define MSGPACK_PP_ITERATION_3 128
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 127 && MSGPACK_PP_ITERATION_START_3 >= 127
+# define MSGPACK_PP_ITERATION_3 127
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 126 && MSGPACK_PP_ITERATION_START_3 >= 126
+# define MSGPACK_PP_ITERATION_3 126
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 125 && MSGPACK_PP_ITERATION_START_3 >= 125
+# define MSGPACK_PP_ITERATION_3 125
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 124 && MSGPACK_PP_ITERATION_START_3 >= 124
+# define MSGPACK_PP_ITERATION_3 124
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 123 && MSGPACK_PP_ITERATION_START_3 >= 123
+# define MSGPACK_PP_ITERATION_3 123
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 122 && MSGPACK_PP_ITERATION_START_3 >= 122
+# define MSGPACK_PP_ITERATION_3 122
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 121 && MSGPACK_PP_ITERATION_START_3 >= 121
+# define MSGPACK_PP_ITERATION_3 121
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 120 && MSGPACK_PP_ITERATION_START_3 >= 120
+# define MSGPACK_PP_ITERATION_3 120
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 119 && MSGPACK_PP_ITERATION_START_3 >= 119
+# define MSGPACK_PP_ITERATION_3 119
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 118 && MSGPACK_PP_ITERATION_START_3 >= 118
+# define MSGPACK_PP_ITERATION_3 118
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 117 && MSGPACK_PP_ITERATION_START_3 >= 117
+# define MSGPACK_PP_ITERATION_3 117
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 116 && MSGPACK_PP_ITERATION_START_3 >= 116
+# define MSGPACK_PP_ITERATION_3 116
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 115 && MSGPACK_PP_ITERATION_START_3 >= 115
+# define MSGPACK_PP_ITERATION_3 115
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 114 && MSGPACK_PP_ITERATION_START_3 >= 114
+# define MSGPACK_PP_ITERATION_3 114
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 113 && MSGPACK_PP_ITERATION_START_3 >= 113
+# define MSGPACK_PP_ITERATION_3 113
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 112 && MSGPACK_PP_ITERATION_START_3 >= 112
+# define MSGPACK_PP_ITERATION_3 112
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 111 && MSGPACK_PP_ITERATION_START_3 >= 111
+# define MSGPACK_PP_ITERATION_3 111
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 110 && MSGPACK_PP_ITERATION_START_3 >= 110
+# define MSGPACK_PP_ITERATION_3 110
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 109 && MSGPACK_PP_ITERATION_START_3 >= 109
+# define MSGPACK_PP_ITERATION_3 109
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 108 && MSGPACK_PP_ITERATION_START_3 >= 108
+# define MSGPACK_PP_ITERATION_3 108
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 107 && MSGPACK_PP_ITERATION_START_3 >= 107
+# define MSGPACK_PP_ITERATION_3 107
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 106 && MSGPACK_PP_ITERATION_START_3 >= 106
+# define MSGPACK_PP_ITERATION_3 106
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 105 && MSGPACK_PP_ITERATION_START_3 >= 105
+# define MSGPACK_PP_ITERATION_3 105
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 104 && MSGPACK_PP_ITERATION_START_3 >= 104
+# define MSGPACK_PP_ITERATION_3 104
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 103 && MSGPACK_PP_ITERATION_START_3 >= 103
+# define MSGPACK_PP_ITERATION_3 103
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 102 && MSGPACK_PP_ITERATION_START_3 >= 102
+# define MSGPACK_PP_ITERATION_3 102
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 101 && MSGPACK_PP_ITERATION_START_3 >= 101
+# define MSGPACK_PP_ITERATION_3 101
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 100 && MSGPACK_PP_ITERATION_START_3 >= 100
+# define MSGPACK_PP_ITERATION_3 100
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 99 && MSGPACK_PP_ITERATION_START_3 >= 99
+# define MSGPACK_PP_ITERATION_3 99
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 98 && MSGPACK_PP_ITERATION_START_3 >= 98
+# define MSGPACK_PP_ITERATION_3 98
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 97 && MSGPACK_PP_ITERATION_START_3 >= 97
+# define MSGPACK_PP_ITERATION_3 97
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 96 && MSGPACK_PP_ITERATION_START_3 >= 96
+# define MSGPACK_PP_ITERATION_3 96
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 95 && MSGPACK_PP_ITERATION_START_3 >= 95
+# define MSGPACK_PP_ITERATION_3 95
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 94 && MSGPACK_PP_ITERATION_START_3 >= 94
+# define MSGPACK_PP_ITERATION_3 94
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 93 && MSGPACK_PP_ITERATION_START_3 >= 93
+# define MSGPACK_PP_ITERATION_3 93
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 92 && MSGPACK_PP_ITERATION_START_3 >= 92
+# define MSGPACK_PP_ITERATION_3 92
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 91 && MSGPACK_PP_ITERATION_START_3 >= 91
+# define MSGPACK_PP_ITERATION_3 91
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 90 && MSGPACK_PP_ITERATION_START_3 >= 90
+# define MSGPACK_PP_ITERATION_3 90
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 89 && MSGPACK_PP_ITERATION_START_3 >= 89
+# define MSGPACK_PP_ITERATION_3 89
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 88 && MSGPACK_PP_ITERATION_START_3 >= 88
+# define MSGPACK_PP_ITERATION_3 88
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 87 && MSGPACK_PP_ITERATION_START_3 >= 87
+# define MSGPACK_PP_ITERATION_3 87
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 86 && MSGPACK_PP_ITERATION_START_3 >= 86
+# define MSGPACK_PP_ITERATION_3 86
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 85 && MSGPACK_PP_ITERATION_START_3 >= 85
+# define MSGPACK_PP_ITERATION_3 85
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 84 && MSGPACK_PP_ITERATION_START_3 >= 84
+# define MSGPACK_PP_ITERATION_3 84
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 83 && MSGPACK_PP_ITERATION_START_3 >= 83
+# define MSGPACK_PP_ITERATION_3 83
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 82 && MSGPACK_PP_ITERATION_START_3 >= 82
+# define MSGPACK_PP_ITERATION_3 82
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 81 && MSGPACK_PP_ITERATION_START_3 >= 81
+# define MSGPACK_PP_ITERATION_3 81
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 80 && MSGPACK_PP_ITERATION_START_3 >= 80
+# define MSGPACK_PP_ITERATION_3 80
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 79 && MSGPACK_PP_ITERATION_START_3 >= 79
+# define MSGPACK_PP_ITERATION_3 79
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 78 && MSGPACK_PP_ITERATION_START_3 >= 78
+# define MSGPACK_PP_ITERATION_3 78
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 77 && MSGPACK_PP_ITERATION_START_3 >= 77
+# define MSGPACK_PP_ITERATION_3 77
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 76 && MSGPACK_PP_ITERATION_START_3 >= 76
+# define MSGPACK_PP_ITERATION_3 76
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 75 && MSGPACK_PP_ITERATION_START_3 >= 75
+# define MSGPACK_PP_ITERATION_3 75
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 74 && MSGPACK_PP_ITERATION_START_3 >= 74
+# define MSGPACK_PP_ITERATION_3 74
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 73 && MSGPACK_PP_ITERATION_START_3 >= 73
+# define MSGPACK_PP_ITERATION_3 73
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 72 && MSGPACK_PP_ITERATION_START_3 >= 72
+# define MSGPACK_PP_ITERATION_3 72
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 71 && MSGPACK_PP_ITERATION_START_3 >= 71
+# define MSGPACK_PP_ITERATION_3 71
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 70 && MSGPACK_PP_ITERATION_START_3 >= 70
+# define MSGPACK_PP_ITERATION_3 70
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 69 && MSGPACK_PP_ITERATION_START_3 >= 69
+# define MSGPACK_PP_ITERATION_3 69
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 68 && MSGPACK_PP_ITERATION_START_3 >= 68
+# define MSGPACK_PP_ITERATION_3 68
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 67 && MSGPACK_PP_ITERATION_START_3 >= 67
+# define MSGPACK_PP_ITERATION_3 67
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 66 && MSGPACK_PP_ITERATION_START_3 >= 66
+# define MSGPACK_PP_ITERATION_3 66
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 65 && MSGPACK_PP_ITERATION_START_3 >= 65
+# define MSGPACK_PP_ITERATION_3 65
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 64 && MSGPACK_PP_ITERATION_START_3 >= 64
+# define MSGPACK_PP_ITERATION_3 64
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 63 && MSGPACK_PP_ITERATION_START_3 >= 63
+# define MSGPACK_PP_ITERATION_3 63
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 62 && MSGPACK_PP_ITERATION_START_3 >= 62
+# define MSGPACK_PP_ITERATION_3 62
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 61 && MSGPACK_PP_ITERATION_START_3 >= 61
+# define MSGPACK_PP_ITERATION_3 61
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 60 && MSGPACK_PP_ITERATION_START_3 >= 60
+# define MSGPACK_PP_ITERATION_3 60
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 59 && MSGPACK_PP_ITERATION_START_3 >= 59
+# define MSGPACK_PP_ITERATION_3 59
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 58 && MSGPACK_PP_ITERATION_START_3 >= 58
+# define MSGPACK_PP_ITERATION_3 58
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 57 && MSGPACK_PP_ITERATION_START_3 >= 57
+# define MSGPACK_PP_ITERATION_3 57
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 56 && MSGPACK_PP_ITERATION_START_3 >= 56
+# define MSGPACK_PP_ITERATION_3 56
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 55 && MSGPACK_PP_ITERATION_START_3 >= 55
+# define MSGPACK_PP_ITERATION_3 55
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 54 && MSGPACK_PP_ITERATION_START_3 >= 54
+# define MSGPACK_PP_ITERATION_3 54
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 53 && MSGPACK_PP_ITERATION_START_3 >= 53
+# define MSGPACK_PP_ITERATION_3 53
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 52 && MSGPACK_PP_ITERATION_START_3 >= 52
+# define MSGPACK_PP_ITERATION_3 52
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 51 && MSGPACK_PP_ITERATION_START_3 >= 51
+# define MSGPACK_PP_ITERATION_3 51
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 50 && MSGPACK_PP_ITERATION_START_3 >= 50
+# define MSGPACK_PP_ITERATION_3 50
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 49 && MSGPACK_PP_ITERATION_START_3 >= 49
+# define MSGPACK_PP_ITERATION_3 49
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 48 && MSGPACK_PP_ITERATION_START_3 >= 48
+# define MSGPACK_PP_ITERATION_3 48
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 47 && MSGPACK_PP_ITERATION_START_3 >= 47
+# define MSGPACK_PP_ITERATION_3 47
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 46 && MSGPACK_PP_ITERATION_START_3 >= 46
+# define MSGPACK_PP_ITERATION_3 46
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 45 && MSGPACK_PP_ITERATION_START_3 >= 45
+# define MSGPACK_PP_ITERATION_3 45
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 44 && MSGPACK_PP_ITERATION_START_3 >= 44
+# define MSGPACK_PP_ITERATION_3 44
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 43 && MSGPACK_PP_ITERATION_START_3 >= 43
+# define MSGPACK_PP_ITERATION_3 43
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 42 && MSGPACK_PP_ITERATION_START_3 >= 42
+# define MSGPACK_PP_ITERATION_3 42
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 41 && MSGPACK_PP_ITERATION_START_3 >= 41
+# define MSGPACK_PP_ITERATION_3 41
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 40 && MSGPACK_PP_ITERATION_START_3 >= 40
+# define MSGPACK_PP_ITERATION_3 40
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 39 && MSGPACK_PP_ITERATION_START_3 >= 39
+# define MSGPACK_PP_ITERATION_3 39
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 38 && MSGPACK_PP_ITERATION_START_3 >= 38
+# define MSGPACK_PP_ITERATION_3 38
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 37 && MSGPACK_PP_ITERATION_START_3 >= 37
+# define MSGPACK_PP_ITERATION_3 37
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 36 && MSGPACK_PP_ITERATION_START_3 >= 36
+# define MSGPACK_PP_ITERATION_3 36
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 35 && MSGPACK_PP_ITERATION_START_3 >= 35
+# define MSGPACK_PP_ITERATION_3 35
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 34 && MSGPACK_PP_ITERATION_START_3 >= 34
+# define MSGPACK_PP_ITERATION_3 34
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 33 && MSGPACK_PP_ITERATION_START_3 >= 33
+# define MSGPACK_PP_ITERATION_3 33
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 32 && MSGPACK_PP_ITERATION_START_3 >= 32
+# define MSGPACK_PP_ITERATION_3 32
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 31 && MSGPACK_PP_ITERATION_START_3 >= 31
+# define MSGPACK_PP_ITERATION_3 31
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 30 && MSGPACK_PP_ITERATION_START_3 >= 30
+# define MSGPACK_PP_ITERATION_3 30
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 29 && MSGPACK_PP_ITERATION_START_3 >= 29
+# define MSGPACK_PP_ITERATION_3 29
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 28 && MSGPACK_PP_ITERATION_START_3 >= 28
+# define MSGPACK_PP_ITERATION_3 28
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 27 && MSGPACK_PP_ITERATION_START_3 >= 27
+# define MSGPACK_PP_ITERATION_3 27
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 26 && MSGPACK_PP_ITERATION_START_3 >= 26
+# define MSGPACK_PP_ITERATION_3 26
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 25 && MSGPACK_PP_ITERATION_START_3 >= 25
+# define MSGPACK_PP_ITERATION_3 25
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 24 && MSGPACK_PP_ITERATION_START_3 >= 24
+# define MSGPACK_PP_ITERATION_3 24
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 23 && MSGPACK_PP_ITERATION_START_3 >= 23
+# define MSGPACK_PP_ITERATION_3 23
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 22 && MSGPACK_PP_ITERATION_START_3 >= 22
+# define MSGPACK_PP_ITERATION_3 22
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 21 && MSGPACK_PP_ITERATION_START_3 >= 21
+# define MSGPACK_PP_ITERATION_3 21
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 20 && MSGPACK_PP_ITERATION_START_3 >= 20
+# define MSGPACK_PP_ITERATION_3 20
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 19 && MSGPACK_PP_ITERATION_START_3 >= 19
+# define MSGPACK_PP_ITERATION_3 19
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 18 && MSGPACK_PP_ITERATION_START_3 >= 18
+# define MSGPACK_PP_ITERATION_3 18
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 17 && MSGPACK_PP_ITERATION_START_3 >= 17
+# define MSGPACK_PP_ITERATION_3 17
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 16 && MSGPACK_PP_ITERATION_START_3 >= 16
+# define MSGPACK_PP_ITERATION_3 16
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 15 && MSGPACK_PP_ITERATION_START_3 >= 15
+# define MSGPACK_PP_ITERATION_3 15
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 14 && MSGPACK_PP_ITERATION_START_3 >= 14
+# define MSGPACK_PP_ITERATION_3 14
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 13 && MSGPACK_PP_ITERATION_START_3 >= 13
+# define MSGPACK_PP_ITERATION_3 13
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 12 && MSGPACK_PP_ITERATION_START_3 >= 12
+# define MSGPACK_PP_ITERATION_3 12
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 11 && MSGPACK_PP_ITERATION_START_3 >= 11
+# define MSGPACK_PP_ITERATION_3 11
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 10 && MSGPACK_PP_ITERATION_START_3 >= 10
+# define MSGPACK_PP_ITERATION_3 10
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 9 && MSGPACK_PP_ITERATION_START_3 >= 9
+# define MSGPACK_PP_ITERATION_3 9
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 8 && MSGPACK_PP_ITERATION_START_3 >= 8
+# define MSGPACK_PP_ITERATION_3 8
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 7 && MSGPACK_PP_ITERATION_START_3 >= 7
+# define MSGPACK_PP_ITERATION_3 7
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 6 && MSGPACK_PP_ITERATION_START_3 >= 6
+# define MSGPACK_PP_ITERATION_3 6
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 5 && MSGPACK_PP_ITERATION_START_3 >= 5
+# define MSGPACK_PP_ITERATION_3 5
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 4 && MSGPACK_PP_ITERATION_START_3 >= 4
+# define MSGPACK_PP_ITERATION_3 4
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 3 && MSGPACK_PP_ITERATION_START_3 >= 3
+# define MSGPACK_PP_ITERATION_3 3
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 2 && MSGPACK_PP_ITERATION_START_3 >= 2
+# define MSGPACK_PP_ITERATION_3 2
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 1 && MSGPACK_PP_ITERATION_START_3 >= 1
+# define MSGPACK_PP_ITERATION_3 1
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_3 <= 0 && MSGPACK_PP_ITERATION_START_3 >= 0
+# define MSGPACK_PP_ITERATION_3 0
+# include MSGPACK_PP_FILENAME_3
+# undef MSGPACK_PP_ITERATION_3
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/reverse4.hpp b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/reverse4.hpp
new file mode 100644
index 0000000000..2a85d56fe9
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/reverse4.hpp
@@ -0,0 +1,1296 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 256 && MSGPACK_PP_ITERATION_START_4 >= 256
+# define MSGPACK_PP_ITERATION_4 256
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 255 && MSGPACK_PP_ITERATION_START_4 >= 255
+# define MSGPACK_PP_ITERATION_4 255
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 254 && MSGPACK_PP_ITERATION_START_4 >= 254
+# define MSGPACK_PP_ITERATION_4 254
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 253 && MSGPACK_PP_ITERATION_START_4 >= 253
+# define MSGPACK_PP_ITERATION_4 253
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 252 && MSGPACK_PP_ITERATION_START_4 >= 252
+# define MSGPACK_PP_ITERATION_4 252
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 251 && MSGPACK_PP_ITERATION_START_4 >= 251
+# define MSGPACK_PP_ITERATION_4 251
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 250 && MSGPACK_PP_ITERATION_START_4 >= 250
+# define MSGPACK_PP_ITERATION_4 250
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 249 && MSGPACK_PP_ITERATION_START_4 >= 249
+# define MSGPACK_PP_ITERATION_4 249
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 248 && MSGPACK_PP_ITERATION_START_4 >= 248
+# define MSGPACK_PP_ITERATION_4 248
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 247 && MSGPACK_PP_ITERATION_START_4 >= 247
+# define MSGPACK_PP_ITERATION_4 247
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 246 && MSGPACK_PP_ITERATION_START_4 >= 246
+# define MSGPACK_PP_ITERATION_4 246
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 245 && MSGPACK_PP_ITERATION_START_4 >= 245
+# define MSGPACK_PP_ITERATION_4 245
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 244 && MSGPACK_PP_ITERATION_START_4 >= 244
+# define MSGPACK_PP_ITERATION_4 244
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 243 && MSGPACK_PP_ITERATION_START_4 >= 243
+# define MSGPACK_PP_ITERATION_4 243
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 242 && MSGPACK_PP_ITERATION_START_4 >= 242
+# define MSGPACK_PP_ITERATION_4 242
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 241 && MSGPACK_PP_ITERATION_START_4 >= 241
+# define MSGPACK_PP_ITERATION_4 241
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 240 && MSGPACK_PP_ITERATION_START_4 >= 240
+# define MSGPACK_PP_ITERATION_4 240
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 239 && MSGPACK_PP_ITERATION_START_4 >= 239
+# define MSGPACK_PP_ITERATION_4 239
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 238 && MSGPACK_PP_ITERATION_START_4 >= 238
+# define MSGPACK_PP_ITERATION_4 238
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 237 && MSGPACK_PP_ITERATION_START_4 >= 237
+# define MSGPACK_PP_ITERATION_4 237
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 236 && MSGPACK_PP_ITERATION_START_4 >= 236
+# define MSGPACK_PP_ITERATION_4 236
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 235 && MSGPACK_PP_ITERATION_START_4 >= 235
+# define MSGPACK_PP_ITERATION_4 235
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 234 && MSGPACK_PP_ITERATION_START_4 >= 234
+# define MSGPACK_PP_ITERATION_4 234
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 233 && MSGPACK_PP_ITERATION_START_4 >= 233
+# define MSGPACK_PP_ITERATION_4 233
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 232 && MSGPACK_PP_ITERATION_START_4 >= 232
+# define MSGPACK_PP_ITERATION_4 232
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 231 && MSGPACK_PP_ITERATION_START_4 >= 231
+# define MSGPACK_PP_ITERATION_4 231
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 230 && MSGPACK_PP_ITERATION_START_4 >= 230
+# define MSGPACK_PP_ITERATION_4 230
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 229 && MSGPACK_PP_ITERATION_START_4 >= 229
+# define MSGPACK_PP_ITERATION_4 229
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 228 && MSGPACK_PP_ITERATION_START_4 >= 228
+# define MSGPACK_PP_ITERATION_4 228
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 227 && MSGPACK_PP_ITERATION_START_4 >= 227
+# define MSGPACK_PP_ITERATION_4 227
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 226 && MSGPACK_PP_ITERATION_START_4 >= 226
+# define MSGPACK_PP_ITERATION_4 226
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 225 && MSGPACK_PP_ITERATION_START_4 >= 225
+# define MSGPACK_PP_ITERATION_4 225
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 224 && MSGPACK_PP_ITERATION_START_4 >= 224
+# define MSGPACK_PP_ITERATION_4 224
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 223 && MSGPACK_PP_ITERATION_START_4 >= 223
+# define MSGPACK_PP_ITERATION_4 223
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 222 && MSGPACK_PP_ITERATION_START_4 >= 222
+# define MSGPACK_PP_ITERATION_4 222
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 221 && MSGPACK_PP_ITERATION_START_4 >= 221
+# define MSGPACK_PP_ITERATION_4 221
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 220 && MSGPACK_PP_ITERATION_START_4 >= 220
+# define MSGPACK_PP_ITERATION_4 220
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 219 && MSGPACK_PP_ITERATION_START_4 >= 219
+# define MSGPACK_PP_ITERATION_4 219
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 218 && MSGPACK_PP_ITERATION_START_4 >= 218
+# define MSGPACK_PP_ITERATION_4 218
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 217 && MSGPACK_PP_ITERATION_START_4 >= 217
+# define MSGPACK_PP_ITERATION_4 217
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 216 && MSGPACK_PP_ITERATION_START_4 >= 216
+# define MSGPACK_PP_ITERATION_4 216
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 215 && MSGPACK_PP_ITERATION_START_4 >= 215
+# define MSGPACK_PP_ITERATION_4 215
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 214 && MSGPACK_PP_ITERATION_START_4 >= 214
+# define MSGPACK_PP_ITERATION_4 214
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 213 && MSGPACK_PP_ITERATION_START_4 >= 213
+# define MSGPACK_PP_ITERATION_4 213
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 212 && MSGPACK_PP_ITERATION_START_4 >= 212
+# define MSGPACK_PP_ITERATION_4 212
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 211 && MSGPACK_PP_ITERATION_START_4 >= 211
+# define MSGPACK_PP_ITERATION_4 211
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 210 && MSGPACK_PP_ITERATION_START_4 >= 210
+# define MSGPACK_PP_ITERATION_4 210
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 209 && MSGPACK_PP_ITERATION_START_4 >= 209
+# define MSGPACK_PP_ITERATION_4 209
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 208 && MSGPACK_PP_ITERATION_START_4 >= 208
+# define MSGPACK_PP_ITERATION_4 208
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 207 && MSGPACK_PP_ITERATION_START_4 >= 207
+# define MSGPACK_PP_ITERATION_4 207
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 206 && MSGPACK_PP_ITERATION_START_4 >= 206
+# define MSGPACK_PP_ITERATION_4 206
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 205 && MSGPACK_PP_ITERATION_START_4 >= 205
+# define MSGPACK_PP_ITERATION_4 205
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 204 && MSGPACK_PP_ITERATION_START_4 >= 204
+# define MSGPACK_PP_ITERATION_4 204
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 203 && MSGPACK_PP_ITERATION_START_4 >= 203
+# define MSGPACK_PP_ITERATION_4 203
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 202 && MSGPACK_PP_ITERATION_START_4 >= 202
+# define MSGPACK_PP_ITERATION_4 202
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 201 && MSGPACK_PP_ITERATION_START_4 >= 201
+# define MSGPACK_PP_ITERATION_4 201
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 200 && MSGPACK_PP_ITERATION_START_4 >= 200
+# define MSGPACK_PP_ITERATION_4 200
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 199 && MSGPACK_PP_ITERATION_START_4 >= 199
+# define MSGPACK_PP_ITERATION_4 199
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 198 && MSGPACK_PP_ITERATION_START_4 >= 198
+# define MSGPACK_PP_ITERATION_4 198
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 197 && MSGPACK_PP_ITERATION_START_4 >= 197
+# define MSGPACK_PP_ITERATION_4 197
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 196 && MSGPACK_PP_ITERATION_START_4 >= 196
+# define MSGPACK_PP_ITERATION_4 196
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 195 && MSGPACK_PP_ITERATION_START_4 >= 195
+# define MSGPACK_PP_ITERATION_4 195
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 194 && MSGPACK_PP_ITERATION_START_4 >= 194
+# define MSGPACK_PP_ITERATION_4 194
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 193 && MSGPACK_PP_ITERATION_START_4 >= 193
+# define MSGPACK_PP_ITERATION_4 193
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 192 && MSGPACK_PP_ITERATION_START_4 >= 192
+# define MSGPACK_PP_ITERATION_4 192
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 191 && MSGPACK_PP_ITERATION_START_4 >= 191
+# define MSGPACK_PP_ITERATION_4 191
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 190 && MSGPACK_PP_ITERATION_START_4 >= 190
+# define MSGPACK_PP_ITERATION_4 190
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 189 && MSGPACK_PP_ITERATION_START_4 >= 189
+# define MSGPACK_PP_ITERATION_4 189
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 188 && MSGPACK_PP_ITERATION_START_4 >= 188
+# define MSGPACK_PP_ITERATION_4 188
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 187 && MSGPACK_PP_ITERATION_START_4 >= 187
+# define MSGPACK_PP_ITERATION_4 187
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 186 && MSGPACK_PP_ITERATION_START_4 >= 186
+# define MSGPACK_PP_ITERATION_4 186
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 185 && MSGPACK_PP_ITERATION_START_4 >= 185
+# define MSGPACK_PP_ITERATION_4 185
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 184 && MSGPACK_PP_ITERATION_START_4 >= 184
+# define MSGPACK_PP_ITERATION_4 184
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 183 && MSGPACK_PP_ITERATION_START_4 >= 183
+# define MSGPACK_PP_ITERATION_4 183
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 182 && MSGPACK_PP_ITERATION_START_4 >= 182
+# define MSGPACK_PP_ITERATION_4 182
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 181 && MSGPACK_PP_ITERATION_START_4 >= 181
+# define MSGPACK_PP_ITERATION_4 181
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 180 && MSGPACK_PP_ITERATION_START_4 >= 180
+# define MSGPACK_PP_ITERATION_4 180
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 179 && MSGPACK_PP_ITERATION_START_4 >= 179
+# define MSGPACK_PP_ITERATION_4 179
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 178 && MSGPACK_PP_ITERATION_START_4 >= 178
+# define MSGPACK_PP_ITERATION_4 178
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 177 && MSGPACK_PP_ITERATION_START_4 >= 177
+# define MSGPACK_PP_ITERATION_4 177
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 176 && MSGPACK_PP_ITERATION_START_4 >= 176
+# define MSGPACK_PP_ITERATION_4 176
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 175 && MSGPACK_PP_ITERATION_START_4 >= 175
+# define MSGPACK_PP_ITERATION_4 175
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 174 && MSGPACK_PP_ITERATION_START_4 >= 174
+# define MSGPACK_PP_ITERATION_4 174
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 173 && MSGPACK_PP_ITERATION_START_4 >= 173
+# define MSGPACK_PP_ITERATION_4 173
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 172 && MSGPACK_PP_ITERATION_START_4 >= 172
+# define MSGPACK_PP_ITERATION_4 172
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 171 && MSGPACK_PP_ITERATION_START_4 >= 171
+# define MSGPACK_PP_ITERATION_4 171
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 170 && MSGPACK_PP_ITERATION_START_4 >= 170
+# define MSGPACK_PP_ITERATION_4 170
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 169 && MSGPACK_PP_ITERATION_START_4 >= 169
+# define MSGPACK_PP_ITERATION_4 169
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 168 && MSGPACK_PP_ITERATION_START_4 >= 168
+# define MSGPACK_PP_ITERATION_4 168
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 167 && MSGPACK_PP_ITERATION_START_4 >= 167
+# define MSGPACK_PP_ITERATION_4 167
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 166 && MSGPACK_PP_ITERATION_START_4 >= 166
+# define MSGPACK_PP_ITERATION_4 166
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 165 && MSGPACK_PP_ITERATION_START_4 >= 165
+# define MSGPACK_PP_ITERATION_4 165
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 164 && MSGPACK_PP_ITERATION_START_4 >= 164
+# define MSGPACK_PP_ITERATION_4 164
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 163 && MSGPACK_PP_ITERATION_START_4 >= 163
+# define MSGPACK_PP_ITERATION_4 163
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 162 && MSGPACK_PP_ITERATION_START_4 >= 162
+# define MSGPACK_PP_ITERATION_4 162
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 161 && MSGPACK_PP_ITERATION_START_4 >= 161
+# define MSGPACK_PP_ITERATION_4 161
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 160 && MSGPACK_PP_ITERATION_START_4 >= 160
+# define MSGPACK_PP_ITERATION_4 160
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 159 && MSGPACK_PP_ITERATION_START_4 >= 159
+# define MSGPACK_PP_ITERATION_4 159
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 158 && MSGPACK_PP_ITERATION_START_4 >= 158
+# define MSGPACK_PP_ITERATION_4 158
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 157 && MSGPACK_PP_ITERATION_START_4 >= 157
+# define MSGPACK_PP_ITERATION_4 157
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 156 && MSGPACK_PP_ITERATION_START_4 >= 156
+# define MSGPACK_PP_ITERATION_4 156
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 155 && MSGPACK_PP_ITERATION_START_4 >= 155
+# define MSGPACK_PP_ITERATION_4 155
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 154 && MSGPACK_PP_ITERATION_START_4 >= 154
+# define MSGPACK_PP_ITERATION_4 154
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 153 && MSGPACK_PP_ITERATION_START_4 >= 153
+# define MSGPACK_PP_ITERATION_4 153
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 152 && MSGPACK_PP_ITERATION_START_4 >= 152
+# define MSGPACK_PP_ITERATION_4 152
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 151 && MSGPACK_PP_ITERATION_START_4 >= 151
+# define MSGPACK_PP_ITERATION_4 151
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 150 && MSGPACK_PP_ITERATION_START_4 >= 150
+# define MSGPACK_PP_ITERATION_4 150
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 149 && MSGPACK_PP_ITERATION_START_4 >= 149
+# define MSGPACK_PP_ITERATION_4 149
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 148 && MSGPACK_PP_ITERATION_START_4 >= 148
+# define MSGPACK_PP_ITERATION_4 148
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 147 && MSGPACK_PP_ITERATION_START_4 >= 147
+# define MSGPACK_PP_ITERATION_4 147
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 146 && MSGPACK_PP_ITERATION_START_4 >= 146
+# define MSGPACK_PP_ITERATION_4 146
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 145 && MSGPACK_PP_ITERATION_START_4 >= 145
+# define MSGPACK_PP_ITERATION_4 145
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 144 && MSGPACK_PP_ITERATION_START_4 >= 144
+# define MSGPACK_PP_ITERATION_4 144
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 143 && MSGPACK_PP_ITERATION_START_4 >= 143
+# define MSGPACK_PP_ITERATION_4 143
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 142 && MSGPACK_PP_ITERATION_START_4 >= 142
+# define MSGPACK_PP_ITERATION_4 142
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 141 && MSGPACK_PP_ITERATION_START_4 >= 141
+# define MSGPACK_PP_ITERATION_4 141
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 140 && MSGPACK_PP_ITERATION_START_4 >= 140
+# define MSGPACK_PP_ITERATION_4 140
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 139 && MSGPACK_PP_ITERATION_START_4 >= 139
+# define MSGPACK_PP_ITERATION_4 139
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 138 && MSGPACK_PP_ITERATION_START_4 >= 138
+# define MSGPACK_PP_ITERATION_4 138
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 137 && MSGPACK_PP_ITERATION_START_4 >= 137
+# define MSGPACK_PP_ITERATION_4 137
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 136 && MSGPACK_PP_ITERATION_START_4 >= 136
+# define MSGPACK_PP_ITERATION_4 136
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 135 && MSGPACK_PP_ITERATION_START_4 >= 135
+# define MSGPACK_PP_ITERATION_4 135
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 134 && MSGPACK_PP_ITERATION_START_4 >= 134
+# define MSGPACK_PP_ITERATION_4 134
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 133 && MSGPACK_PP_ITERATION_START_4 >= 133
+# define MSGPACK_PP_ITERATION_4 133
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 132 && MSGPACK_PP_ITERATION_START_4 >= 132
+# define MSGPACK_PP_ITERATION_4 132
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 131 && MSGPACK_PP_ITERATION_START_4 >= 131
+# define MSGPACK_PP_ITERATION_4 131
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 130 && MSGPACK_PP_ITERATION_START_4 >= 130
+# define MSGPACK_PP_ITERATION_4 130
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 129 && MSGPACK_PP_ITERATION_START_4 >= 129
+# define MSGPACK_PP_ITERATION_4 129
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 128 && MSGPACK_PP_ITERATION_START_4 >= 128
+# define MSGPACK_PP_ITERATION_4 128
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 127 && MSGPACK_PP_ITERATION_START_4 >= 127
+# define MSGPACK_PP_ITERATION_4 127
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 126 && MSGPACK_PP_ITERATION_START_4 >= 126
+# define MSGPACK_PP_ITERATION_4 126
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 125 && MSGPACK_PP_ITERATION_START_4 >= 125
+# define MSGPACK_PP_ITERATION_4 125
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 124 && MSGPACK_PP_ITERATION_START_4 >= 124
+# define MSGPACK_PP_ITERATION_4 124
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 123 && MSGPACK_PP_ITERATION_START_4 >= 123
+# define MSGPACK_PP_ITERATION_4 123
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 122 && MSGPACK_PP_ITERATION_START_4 >= 122
+# define MSGPACK_PP_ITERATION_4 122
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 121 && MSGPACK_PP_ITERATION_START_4 >= 121
+# define MSGPACK_PP_ITERATION_4 121
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 120 && MSGPACK_PP_ITERATION_START_4 >= 120
+# define MSGPACK_PP_ITERATION_4 120
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 119 && MSGPACK_PP_ITERATION_START_4 >= 119
+# define MSGPACK_PP_ITERATION_4 119
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 118 && MSGPACK_PP_ITERATION_START_4 >= 118
+# define MSGPACK_PP_ITERATION_4 118
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 117 && MSGPACK_PP_ITERATION_START_4 >= 117
+# define MSGPACK_PP_ITERATION_4 117
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 116 && MSGPACK_PP_ITERATION_START_4 >= 116
+# define MSGPACK_PP_ITERATION_4 116
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 115 && MSGPACK_PP_ITERATION_START_4 >= 115
+# define MSGPACK_PP_ITERATION_4 115
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 114 && MSGPACK_PP_ITERATION_START_4 >= 114
+# define MSGPACK_PP_ITERATION_4 114
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 113 && MSGPACK_PP_ITERATION_START_4 >= 113
+# define MSGPACK_PP_ITERATION_4 113
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 112 && MSGPACK_PP_ITERATION_START_4 >= 112
+# define MSGPACK_PP_ITERATION_4 112
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 111 && MSGPACK_PP_ITERATION_START_4 >= 111
+# define MSGPACK_PP_ITERATION_4 111
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 110 && MSGPACK_PP_ITERATION_START_4 >= 110
+# define MSGPACK_PP_ITERATION_4 110
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 109 && MSGPACK_PP_ITERATION_START_4 >= 109
+# define MSGPACK_PP_ITERATION_4 109
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 108 && MSGPACK_PP_ITERATION_START_4 >= 108
+# define MSGPACK_PP_ITERATION_4 108
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 107 && MSGPACK_PP_ITERATION_START_4 >= 107
+# define MSGPACK_PP_ITERATION_4 107
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 106 && MSGPACK_PP_ITERATION_START_4 >= 106
+# define MSGPACK_PP_ITERATION_4 106
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 105 && MSGPACK_PP_ITERATION_START_4 >= 105
+# define MSGPACK_PP_ITERATION_4 105
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 104 && MSGPACK_PP_ITERATION_START_4 >= 104
+# define MSGPACK_PP_ITERATION_4 104
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 103 && MSGPACK_PP_ITERATION_START_4 >= 103
+# define MSGPACK_PP_ITERATION_4 103
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 102 && MSGPACK_PP_ITERATION_START_4 >= 102
+# define MSGPACK_PP_ITERATION_4 102
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 101 && MSGPACK_PP_ITERATION_START_4 >= 101
+# define MSGPACK_PP_ITERATION_4 101
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 100 && MSGPACK_PP_ITERATION_START_4 >= 100
+# define MSGPACK_PP_ITERATION_4 100
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 99 && MSGPACK_PP_ITERATION_START_4 >= 99
+# define MSGPACK_PP_ITERATION_4 99
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 98 && MSGPACK_PP_ITERATION_START_4 >= 98
+# define MSGPACK_PP_ITERATION_4 98
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 97 && MSGPACK_PP_ITERATION_START_4 >= 97
+# define MSGPACK_PP_ITERATION_4 97
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 96 && MSGPACK_PP_ITERATION_START_4 >= 96
+# define MSGPACK_PP_ITERATION_4 96
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 95 && MSGPACK_PP_ITERATION_START_4 >= 95
+# define MSGPACK_PP_ITERATION_4 95
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 94 && MSGPACK_PP_ITERATION_START_4 >= 94
+# define MSGPACK_PP_ITERATION_4 94
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 93 && MSGPACK_PP_ITERATION_START_4 >= 93
+# define MSGPACK_PP_ITERATION_4 93
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 92 && MSGPACK_PP_ITERATION_START_4 >= 92
+# define MSGPACK_PP_ITERATION_4 92
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 91 && MSGPACK_PP_ITERATION_START_4 >= 91
+# define MSGPACK_PP_ITERATION_4 91
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 90 && MSGPACK_PP_ITERATION_START_4 >= 90
+# define MSGPACK_PP_ITERATION_4 90
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 89 && MSGPACK_PP_ITERATION_START_4 >= 89
+# define MSGPACK_PP_ITERATION_4 89
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 88 && MSGPACK_PP_ITERATION_START_4 >= 88
+# define MSGPACK_PP_ITERATION_4 88
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 87 && MSGPACK_PP_ITERATION_START_4 >= 87
+# define MSGPACK_PP_ITERATION_4 87
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 86 && MSGPACK_PP_ITERATION_START_4 >= 86
+# define MSGPACK_PP_ITERATION_4 86
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 85 && MSGPACK_PP_ITERATION_START_4 >= 85
+# define MSGPACK_PP_ITERATION_4 85
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 84 && MSGPACK_PP_ITERATION_START_4 >= 84
+# define MSGPACK_PP_ITERATION_4 84
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 83 && MSGPACK_PP_ITERATION_START_4 >= 83
+# define MSGPACK_PP_ITERATION_4 83
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 82 && MSGPACK_PP_ITERATION_START_4 >= 82
+# define MSGPACK_PP_ITERATION_4 82
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 81 && MSGPACK_PP_ITERATION_START_4 >= 81
+# define MSGPACK_PP_ITERATION_4 81
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 80 && MSGPACK_PP_ITERATION_START_4 >= 80
+# define MSGPACK_PP_ITERATION_4 80
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 79 && MSGPACK_PP_ITERATION_START_4 >= 79
+# define MSGPACK_PP_ITERATION_4 79
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 78 && MSGPACK_PP_ITERATION_START_4 >= 78
+# define MSGPACK_PP_ITERATION_4 78
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 77 && MSGPACK_PP_ITERATION_START_4 >= 77
+# define MSGPACK_PP_ITERATION_4 77
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 76 && MSGPACK_PP_ITERATION_START_4 >= 76
+# define MSGPACK_PP_ITERATION_4 76
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 75 && MSGPACK_PP_ITERATION_START_4 >= 75
+# define MSGPACK_PP_ITERATION_4 75
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 74 && MSGPACK_PP_ITERATION_START_4 >= 74
+# define MSGPACK_PP_ITERATION_4 74
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 73 && MSGPACK_PP_ITERATION_START_4 >= 73
+# define MSGPACK_PP_ITERATION_4 73
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 72 && MSGPACK_PP_ITERATION_START_4 >= 72
+# define MSGPACK_PP_ITERATION_4 72
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 71 && MSGPACK_PP_ITERATION_START_4 >= 71
+# define MSGPACK_PP_ITERATION_4 71
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 70 && MSGPACK_PP_ITERATION_START_4 >= 70
+# define MSGPACK_PP_ITERATION_4 70
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 69 && MSGPACK_PP_ITERATION_START_4 >= 69
+# define MSGPACK_PP_ITERATION_4 69
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 68 && MSGPACK_PP_ITERATION_START_4 >= 68
+# define MSGPACK_PP_ITERATION_4 68
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 67 && MSGPACK_PP_ITERATION_START_4 >= 67
+# define MSGPACK_PP_ITERATION_4 67
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 66 && MSGPACK_PP_ITERATION_START_4 >= 66
+# define MSGPACK_PP_ITERATION_4 66
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 65 && MSGPACK_PP_ITERATION_START_4 >= 65
+# define MSGPACK_PP_ITERATION_4 65
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 64 && MSGPACK_PP_ITERATION_START_4 >= 64
+# define MSGPACK_PP_ITERATION_4 64
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 63 && MSGPACK_PP_ITERATION_START_4 >= 63
+# define MSGPACK_PP_ITERATION_4 63
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 62 && MSGPACK_PP_ITERATION_START_4 >= 62
+# define MSGPACK_PP_ITERATION_4 62
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 61 && MSGPACK_PP_ITERATION_START_4 >= 61
+# define MSGPACK_PP_ITERATION_4 61
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 60 && MSGPACK_PP_ITERATION_START_4 >= 60
+# define MSGPACK_PP_ITERATION_4 60
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 59 && MSGPACK_PP_ITERATION_START_4 >= 59
+# define MSGPACK_PP_ITERATION_4 59
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 58 && MSGPACK_PP_ITERATION_START_4 >= 58
+# define MSGPACK_PP_ITERATION_4 58
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 57 && MSGPACK_PP_ITERATION_START_4 >= 57
+# define MSGPACK_PP_ITERATION_4 57
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 56 && MSGPACK_PP_ITERATION_START_4 >= 56
+# define MSGPACK_PP_ITERATION_4 56
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 55 && MSGPACK_PP_ITERATION_START_4 >= 55
+# define MSGPACK_PP_ITERATION_4 55
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 54 && MSGPACK_PP_ITERATION_START_4 >= 54
+# define MSGPACK_PP_ITERATION_4 54
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 53 && MSGPACK_PP_ITERATION_START_4 >= 53
+# define MSGPACK_PP_ITERATION_4 53
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 52 && MSGPACK_PP_ITERATION_START_4 >= 52
+# define MSGPACK_PP_ITERATION_4 52
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 51 && MSGPACK_PP_ITERATION_START_4 >= 51
+# define MSGPACK_PP_ITERATION_4 51
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 50 && MSGPACK_PP_ITERATION_START_4 >= 50
+# define MSGPACK_PP_ITERATION_4 50
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 49 && MSGPACK_PP_ITERATION_START_4 >= 49
+# define MSGPACK_PP_ITERATION_4 49
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 48 && MSGPACK_PP_ITERATION_START_4 >= 48
+# define MSGPACK_PP_ITERATION_4 48
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 47 && MSGPACK_PP_ITERATION_START_4 >= 47
+# define MSGPACK_PP_ITERATION_4 47
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 46 && MSGPACK_PP_ITERATION_START_4 >= 46
+# define MSGPACK_PP_ITERATION_4 46
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 45 && MSGPACK_PP_ITERATION_START_4 >= 45
+# define MSGPACK_PP_ITERATION_4 45
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 44 && MSGPACK_PP_ITERATION_START_4 >= 44
+# define MSGPACK_PP_ITERATION_4 44
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 43 && MSGPACK_PP_ITERATION_START_4 >= 43
+# define MSGPACK_PP_ITERATION_4 43
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 42 && MSGPACK_PP_ITERATION_START_4 >= 42
+# define MSGPACK_PP_ITERATION_4 42
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 41 && MSGPACK_PP_ITERATION_START_4 >= 41
+# define MSGPACK_PP_ITERATION_4 41
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 40 && MSGPACK_PP_ITERATION_START_4 >= 40
+# define MSGPACK_PP_ITERATION_4 40
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 39 && MSGPACK_PP_ITERATION_START_4 >= 39
+# define MSGPACK_PP_ITERATION_4 39
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 38 && MSGPACK_PP_ITERATION_START_4 >= 38
+# define MSGPACK_PP_ITERATION_4 38
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 37 && MSGPACK_PP_ITERATION_START_4 >= 37
+# define MSGPACK_PP_ITERATION_4 37
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 36 && MSGPACK_PP_ITERATION_START_4 >= 36
+# define MSGPACK_PP_ITERATION_4 36
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 35 && MSGPACK_PP_ITERATION_START_4 >= 35
+# define MSGPACK_PP_ITERATION_4 35
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 34 && MSGPACK_PP_ITERATION_START_4 >= 34
+# define MSGPACK_PP_ITERATION_4 34
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 33 && MSGPACK_PP_ITERATION_START_4 >= 33
+# define MSGPACK_PP_ITERATION_4 33
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 32 && MSGPACK_PP_ITERATION_START_4 >= 32
+# define MSGPACK_PP_ITERATION_4 32
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 31 && MSGPACK_PP_ITERATION_START_4 >= 31
+# define MSGPACK_PP_ITERATION_4 31
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 30 && MSGPACK_PP_ITERATION_START_4 >= 30
+# define MSGPACK_PP_ITERATION_4 30
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 29 && MSGPACK_PP_ITERATION_START_4 >= 29
+# define MSGPACK_PP_ITERATION_4 29
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 28 && MSGPACK_PP_ITERATION_START_4 >= 28
+# define MSGPACK_PP_ITERATION_4 28
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 27 && MSGPACK_PP_ITERATION_START_4 >= 27
+# define MSGPACK_PP_ITERATION_4 27
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 26 && MSGPACK_PP_ITERATION_START_4 >= 26
+# define MSGPACK_PP_ITERATION_4 26
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 25 && MSGPACK_PP_ITERATION_START_4 >= 25
+# define MSGPACK_PP_ITERATION_4 25
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 24 && MSGPACK_PP_ITERATION_START_4 >= 24
+# define MSGPACK_PP_ITERATION_4 24
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 23 && MSGPACK_PP_ITERATION_START_4 >= 23
+# define MSGPACK_PP_ITERATION_4 23
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 22 && MSGPACK_PP_ITERATION_START_4 >= 22
+# define MSGPACK_PP_ITERATION_4 22
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 21 && MSGPACK_PP_ITERATION_START_4 >= 21
+# define MSGPACK_PP_ITERATION_4 21
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 20 && MSGPACK_PP_ITERATION_START_4 >= 20
+# define MSGPACK_PP_ITERATION_4 20
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 19 && MSGPACK_PP_ITERATION_START_4 >= 19
+# define MSGPACK_PP_ITERATION_4 19
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 18 && MSGPACK_PP_ITERATION_START_4 >= 18
+# define MSGPACK_PP_ITERATION_4 18
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 17 && MSGPACK_PP_ITERATION_START_4 >= 17
+# define MSGPACK_PP_ITERATION_4 17
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 16 && MSGPACK_PP_ITERATION_START_4 >= 16
+# define MSGPACK_PP_ITERATION_4 16
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 15 && MSGPACK_PP_ITERATION_START_4 >= 15
+# define MSGPACK_PP_ITERATION_4 15
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 14 && MSGPACK_PP_ITERATION_START_4 >= 14
+# define MSGPACK_PP_ITERATION_4 14
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 13 && MSGPACK_PP_ITERATION_START_4 >= 13
+# define MSGPACK_PP_ITERATION_4 13
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 12 && MSGPACK_PP_ITERATION_START_4 >= 12
+# define MSGPACK_PP_ITERATION_4 12
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 11 && MSGPACK_PP_ITERATION_START_4 >= 11
+# define MSGPACK_PP_ITERATION_4 11
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 10 && MSGPACK_PP_ITERATION_START_4 >= 10
+# define MSGPACK_PP_ITERATION_4 10
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 9 && MSGPACK_PP_ITERATION_START_4 >= 9
+# define MSGPACK_PP_ITERATION_4 9
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 8 && MSGPACK_PP_ITERATION_START_4 >= 8
+# define MSGPACK_PP_ITERATION_4 8
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 7 && MSGPACK_PP_ITERATION_START_4 >= 7
+# define MSGPACK_PP_ITERATION_4 7
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 6 && MSGPACK_PP_ITERATION_START_4 >= 6
+# define MSGPACK_PP_ITERATION_4 6
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 5 && MSGPACK_PP_ITERATION_START_4 >= 5
+# define MSGPACK_PP_ITERATION_4 5
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 4 && MSGPACK_PP_ITERATION_START_4 >= 4
+# define MSGPACK_PP_ITERATION_4 4
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 3 && MSGPACK_PP_ITERATION_START_4 >= 3
+# define MSGPACK_PP_ITERATION_4 3
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 2 && MSGPACK_PP_ITERATION_START_4 >= 2
+# define MSGPACK_PP_ITERATION_4 2
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 1 && MSGPACK_PP_ITERATION_START_4 >= 1
+# define MSGPACK_PP_ITERATION_4 1
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_4 <= 0 && MSGPACK_PP_ITERATION_START_4 >= 0
+# define MSGPACK_PP_ITERATION_4 0
+# include MSGPACK_PP_FILENAME_4
+# undef MSGPACK_PP_ITERATION_4
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/reverse5.hpp b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/reverse5.hpp
new file mode 100644
index 0000000000..6cee24d996
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/iter/reverse5.hpp
@@ -0,0 +1,1296 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 256 && MSGPACK_PP_ITERATION_START_5 >= 256
+# define MSGPACK_PP_ITERATION_5 256
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 255 && MSGPACK_PP_ITERATION_START_5 >= 255
+# define MSGPACK_PP_ITERATION_5 255
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 254 && MSGPACK_PP_ITERATION_START_5 >= 254
+# define MSGPACK_PP_ITERATION_5 254
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 253 && MSGPACK_PP_ITERATION_START_5 >= 253
+# define MSGPACK_PP_ITERATION_5 253
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 252 && MSGPACK_PP_ITERATION_START_5 >= 252
+# define MSGPACK_PP_ITERATION_5 252
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 251 && MSGPACK_PP_ITERATION_START_5 >= 251
+# define MSGPACK_PP_ITERATION_5 251
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 250 && MSGPACK_PP_ITERATION_START_5 >= 250
+# define MSGPACK_PP_ITERATION_5 250
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 249 && MSGPACK_PP_ITERATION_START_5 >= 249
+# define MSGPACK_PP_ITERATION_5 249
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 248 && MSGPACK_PP_ITERATION_START_5 >= 248
+# define MSGPACK_PP_ITERATION_5 248
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 247 && MSGPACK_PP_ITERATION_START_5 >= 247
+# define MSGPACK_PP_ITERATION_5 247
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 246 && MSGPACK_PP_ITERATION_START_5 >= 246
+# define MSGPACK_PP_ITERATION_5 246
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 245 && MSGPACK_PP_ITERATION_START_5 >= 245
+# define MSGPACK_PP_ITERATION_5 245
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 244 && MSGPACK_PP_ITERATION_START_5 >= 244
+# define MSGPACK_PP_ITERATION_5 244
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 243 && MSGPACK_PP_ITERATION_START_5 >= 243
+# define MSGPACK_PP_ITERATION_5 243
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 242 && MSGPACK_PP_ITERATION_START_5 >= 242
+# define MSGPACK_PP_ITERATION_5 242
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 241 && MSGPACK_PP_ITERATION_START_5 >= 241
+# define MSGPACK_PP_ITERATION_5 241
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 240 && MSGPACK_PP_ITERATION_START_5 >= 240
+# define MSGPACK_PP_ITERATION_5 240
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 239 && MSGPACK_PP_ITERATION_START_5 >= 239
+# define MSGPACK_PP_ITERATION_5 239
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 238 && MSGPACK_PP_ITERATION_START_5 >= 238
+# define MSGPACK_PP_ITERATION_5 238
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 237 && MSGPACK_PP_ITERATION_START_5 >= 237
+# define MSGPACK_PP_ITERATION_5 237
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 236 && MSGPACK_PP_ITERATION_START_5 >= 236
+# define MSGPACK_PP_ITERATION_5 236
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 235 && MSGPACK_PP_ITERATION_START_5 >= 235
+# define MSGPACK_PP_ITERATION_5 235
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 234 && MSGPACK_PP_ITERATION_START_5 >= 234
+# define MSGPACK_PP_ITERATION_5 234
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 233 && MSGPACK_PP_ITERATION_START_5 >= 233
+# define MSGPACK_PP_ITERATION_5 233
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 232 && MSGPACK_PP_ITERATION_START_5 >= 232
+# define MSGPACK_PP_ITERATION_5 232
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 231 && MSGPACK_PP_ITERATION_START_5 >= 231
+# define MSGPACK_PP_ITERATION_5 231
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 230 && MSGPACK_PP_ITERATION_START_5 >= 230
+# define MSGPACK_PP_ITERATION_5 230
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 229 && MSGPACK_PP_ITERATION_START_5 >= 229
+# define MSGPACK_PP_ITERATION_5 229
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 228 && MSGPACK_PP_ITERATION_START_5 >= 228
+# define MSGPACK_PP_ITERATION_5 228
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 227 && MSGPACK_PP_ITERATION_START_5 >= 227
+# define MSGPACK_PP_ITERATION_5 227
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 226 && MSGPACK_PP_ITERATION_START_5 >= 226
+# define MSGPACK_PP_ITERATION_5 226
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 225 && MSGPACK_PP_ITERATION_START_5 >= 225
+# define MSGPACK_PP_ITERATION_5 225
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 224 && MSGPACK_PP_ITERATION_START_5 >= 224
+# define MSGPACK_PP_ITERATION_5 224
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 223 && MSGPACK_PP_ITERATION_START_5 >= 223
+# define MSGPACK_PP_ITERATION_5 223
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 222 && MSGPACK_PP_ITERATION_START_5 >= 222
+# define MSGPACK_PP_ITERATION_5 222
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 221 && MSGPACK_PP_ITERATION_START_5 >= 221
+# define MSGPACK_PP_ITERATION_5 221
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 220 && MSGPACK_PP_ITERATION_START_5 >= 220
+# define MSGPACK_PP_ITERATION_5 220
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 219 && MSGPACK_PP_ITERATION_START_5 >= 219
+# define MSGPACK_PP_ITERATION_5 219
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 218 && MSGPACK_PP_ITERATION_START_5 >= 218
+# define MSGPACK_PP_ITERATION_5 218
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 217 && MSGPACK_PP_ITERATION_START_5 >= 217
+# define MSGPACK_PP_ITERATION_5 217
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 216 && MSGPACK_PP_ITERATION_START_5 >= 216
+# define MSGPACK_PP_ITERATION_5 216
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 215 && MSGPACK_PP_ITERATION_START_5 >= 215
+# define MSGPACK_PP_ITERATION_5 215
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 214 && MSGPACK_PP_ITERATION_START_5 >= 214
+# define MSGPACK_PP_ITERATION_5 214
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 213 && MSGPACK_PP_ITERATION_START_5 >= 213
+# define MSGPACK_PP_ITERATION_5 213
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 212 && MSGPACK_PP_ITERATION_START_5 >= 212
+# define MSGPACK_PP_ITERATION_5 212
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 211 && MSGPACK_PP_ITERATION_START_5 >= 211
+# define MSGPACK_PP_ITERATION_5 211
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 210 && MSGPACK_PP_ITERATION_START_5 >= 210
+# define MSGPACK_PP_ITERATION_5 210
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 209 && MSGPACK_PP_ITERATION_START_5 >= 209
+# define MSGPACK_PP_ITERATION_5 209
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 208 && MSGPACK_PP_ITERATION_START_5 >= 208
+# define MSGPACK_PP_ITERATION_5 208
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 207 && MSGPACK_PP_ITERATION_START_5 >= 207
+# define MSGPACK_PP_ITERATION_5 207
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 206 && MSGPACK_PP_ITERATION_START_5 >= 206
+# define MSGPACK_PP_ITERATION_5 206
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 205 && MSGPACK_PP_ITERATION_START_5 >= 205
+# define MSGPACK_PP_ITERATION_5 205
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 204 && MSGPACK_PP_ITERATION_START_5 >= 204
+# define MSGPACK_PP_ITERATION_5 204
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 203 && MSGPACK_PP_ITERATION_START_5 >= 203
+# define MSGPACK_PP_ITERATION_5 203
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 202 && MSGPACK_PP_ITERATION_START_5 >= 202
+# define MSGPACK_PP_ITERATION_5 202
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 201 && MSGPACK_PP_ITERATION_START_5 >= 201
+# define MSGPACK_PP_ITERATION_5 201
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 200 && MSGPACK_PP_ITERATION_START_5 >= 200
+# define MSGPACK_PP_ITERATION_5 200
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 199 && MSGPACK_PP_ITERATION_START_5 >= 199
+# define MSGPACK_PP_ITERATION_5 199
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 198 && MSGPACK_PP_ITERATION_START_5 >= 198
+# define MSGPACK_PP_ITERATION_5 198
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 197 && MSGPACK_PP_ITERATION_START_5 >= 197
+# define MSGPACK_PP_ITERATION_5 197
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 196 && MSGPACK_PP_ITERATION_START_5 >= 196
+# define MSGPACK_PP_ITERATION_5 196
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 195 && MSGPACK_PP_ITERATION_START_5 >= 195
+# define MSGPACK_PP_ITERATION_5 195
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 194 && MSGPACK_PP_ITERATION_START_5 >= 194
+# define MSGPACK_PP_ITERATION_5 194
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 193 && MSGPACK_PP_ITERATION_START_5 >= 193
+# define MSGPACK_PP_ITERATION_5 193
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 192 && MSGPACK_PP_ITERATION_START_5 >= 192
+# define MSGPACK_PP_ITERATION_5 192
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 191 && MSGPACK_PP_ITERATION_START_5 >= 191
+# define MSGPACK_PP_ITERATION_5 191
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 190 && MSGPACK_PP_ITERATION_START_5 >= 190
+# define MSGPACK_PP_ITERATION_5 190
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 189 && MSGPACK_PP_ITERATION_START_5 >= 189
+# define MSGPACK_PP_ITERATION_5 189
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 188 && MSGPACK_PP_ITERATION_START_5 >= 188
+# define MSGPACK_PP_ITERATION_5 188
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 187 && MSGPACK_PP_ITERATION_START_5 >= 187
+# define MSGPACK_PP_ITERATION_5 187
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 186 && MSGPACK_PP_ITERATION_START_5 >= 186
+# define MSGPACK_PP_ITERATION_5 186
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 185 && MSGPACK_PP_ITERATION_START_5 >= 185
+# define MSGPACK_PP_ITERATION_5 185
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 184 && MSGPACK_PP_ITERATION_START_5 >= 184
+# define MSGPACK_PP_ITERATION_5 184
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 183 && MSGPACK_PP_ITERATION_START_5 >= 183
+# define MSGPACK_PP_ITERATION_5 183
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 182 && MSGPACK_PP_ITERATION_START_5 >= 182
+# define MSGPACK_PP_ITERATION_5 182
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 181 && MSGPACK_PP_ITERATION_START_5 >= 181
+# define MSGPACK_PP_ITERATION_5 181
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 180 && MSGPACK_PP_ITERATION_START_5 >= 180
+# define MSGPACK_PP_ITERATION_5 180
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 179 && MSGPACK_PP_ITERATION_START_5 >= 179
+# define MSGPACK_PP_ITERATION_5 179
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 178 && MSGPACK_PP_ITERATION_START_5 >= 178
+# define MSGPACK_PP_ITERATION_5 178
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 177 && MSGPACK_PP_ITERATION_START_5 >= 177
+# define MSGPACK_PP_ITERATION_5 177
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 176 && MSGPACK_PP_ITERATION_START_5 >= 176
+# define MSGPACK_PP_ITERATION_5 176
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 175 && MSGPACK_PP_ITERATION_START_5 >= 175
+# define MSGPACK_PP_ITERATION_5 175
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 174 && MSGPACK_PP_ITERATION_START_5 >= 174
+# define MSGPACK_PP_ITERATION_5 174
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 173 && MSGPACK_PP_ITERATION_START_5 >= 173
+# define MSGPACK_PP_ITERATION_5 173
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 172 && MSGPACK_PP_ITERATION_START_5 >= 172
+# define MSGPACK_PP_ITERATION_5 172
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 171 && MSGPACK_PP_ITERATION_START_5 >= 171
+# define MSGPACK_PP_ITERATION_5 171
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 170 && MSGPACK_PP_ITERATION_START_5 >= 170
+# define MSGPACK_PP_ITERATION_5 170
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 169 && MSGPACK_PP_ITERATION_START_5 >= 169
+# define MSGPACK_PP_ITERATION_5 169
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 168 && MSGPACK_PP_ITERATION_START_5 >= 168
+# define MSGPACK_PP_ITERATION_5 168
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 167 && MSGPACK_PP_ITERATION_START_5 >= 167
+# define MSGPACK_PP_ITERATION_5 167
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 166 && MSGPACK_PP_ITERATION_START_5 >= 166
+# define MSGPACK_PP_ITERATION_5 166
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 165 && MSGPACK_PP_ITERATION_START_5 >= 165
+# define MSGPACK_PP_ITERATION_5 165
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 164 && MSGPACK_PP_ITERATION_START_5 >= 164
+# define MSGPACK_PP_ITERATION_5 164
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 163 && MSGPACK_PP_ITERATION_START_5 >= 163
+# define MSGPACK_PP_ITERATION_5 163
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 162 && MSGPACK_PP_ITERATION_START_5 >= 162
+# define MSGPACK_PP_ITERATION_5 162
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 161 && MSGPACK_PP_ITERATION_START_5 >= 161
+# define MSGPACK_PP_ITERATION_5 161
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 160 && MSGPACK_PP_ITERATION_START_5 >= 160
+# define MSGPACK_PP_ITERATION_5 160
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 159 && MSGPACK_PP_ITERATION_START_5 >= 159
+# define MSGPACK_PP_ITERATION_5 159
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 158 && MSGPACK_PP_ITERATION_START_5 >= 158
+# define MSGPACK_PP_ITERATION_5 158
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 157 && MSGPACK_PP_ITERATION_START_5 >= 157
+# define MSGPACK_PP_ITERATION_5 157
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 156 && MSGPACK_PP_ITERATION_START_5 >= 156
+# define MSGPACK_PP_ITERATION_5 156
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 155 && MSGPACK_PP_ITERATION_START_5 >= 155
+# define MSGPACK_PP_ITERATION_5 155
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 154 && MSGPACK_PP_ITERATION_START_5 >= 154
+# define MSGPACK_PP_ITERATION_5 154
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 153 && MSGPACK_PP_ITERATION_START_5 >= 153
+# define MSGPACK_PP_ITERATION_5 153
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 152 && MSGPACK_PP_ITERATION_START_5 >= 152
+# define MSGPACK_PP_ITERATION_5 152
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 151 && MSGPACK_PP_ITERATION_START_5 >= 151
+# define MSGPACK_PP_ITERATION_5 151
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 150 && MSGPACK_PP_ITERATION_START_5 >= 150
+# define MSGPACK_PP_ITERATION_5 150
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 149 && MSGPACK_PP_ITERATION_START_5 >= 149
+# define MSGPACK_PP_ITERATION_5 149
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 148 && MSGPACK_PP_ITERATION_START_5 >= 148
+# define MSGPACK_PP_ITERATION_5 148
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 147 && MSGPACK_PP_ITERATION_START_5 >= 147
+# define MSGPACK_PP_ITERATION_5 147
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 146 && MSGPACK_PP_ITERATION_START_5 >= 146
+# define MSGPACK_PP_ITERATION_5 146
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 145 && MSGPACK_PP_ITERATION_START_5 >= 145
+# define MSGPACK_PP_ITERATION_5 145
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 144 && MSGPACK_PP_ITERATION_START_5 >= 144
+# define MSGPACK_PP_ITERATION_5 144
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 143 && MSGPACK_PP_ITERATION_START_5 >= 143
+# define MSGPACK_PP_ITERATION_5 143
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 142 && MSGPACK_PP_ITERATION_START_5 >= 142
+# define MSGPACK_PP_ITERATION_5 142
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 141 && MSGPACK_PP_ITERATION_START_5 >= 141
+# define MSGPACK_PP_ITERATION_5 141
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 140 && MSGPACK_PP_ITERATION_START_5 >= 140
+# define MSGPACK_PP_ITERATION_5 140
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 139 && MSGPACK_PP_ITERATION_START_5 >= 139
+# define MSGPACK_PP_ITERATION_5 139
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 138 && MSGPACK_PP_ITERATION_START_5 >= 138
+# define MSGPACK_PP_ITERATION_5 138
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 137 && MSGPACK_PP_ITERATION_START_5 >= 137
+# define MSGPACK_PP_ITERATION_5 137
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 136 && MSGPACK_PP_ITERATION_START_5 >= 136
+# define MSGPACK_PP_ITERATION_5 136
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 135 && MSGPACK_PP_ITERATION_START_5 >= 135
+# define MSGPACK_PP_ITERATION_5 135
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 134 && MSGPACK_PP_ITERATION_START_5 >= 134
+# define MSGPACK_PP_ITERATION_5 134
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 133 && MSGPACK_PP_ITERATION_START_5 >= 133
+# define MSGPACK_PP_ITERATION_5 133
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 132 && MSGPACK_PP_ITERATION_START_5 >= 132
+# define MSGPACK_PP_ITERATION_5 132
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 131 && MSGPACK_PP_ITERATION_START_5 >= 131
+# define MSGPACK_PP_ITERATION_5 131
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 130 && MSGPACK_PP_ITERATION_START_5 >= 130
+# define MSGPACK_PP_ITERATION_5 130
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 129 && MSGPACK_PP_ITERATION_START_5 >= 129
+# define MSGPACK_PP_ITERATION_5 129
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 128 && MSGPACK_PP_ITERATION_START_5 >= 128
+# define MSGPACK_PP_ITERATION_5 128
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 127 && MSGPACK_PP_ITERATION_START_5 >= 127
+# define MSGPACK_PP_ITERATION_5 127
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 126 && MSGPACK_PP_ITERATION_START_5 >= 126
+# define MSGPACK_PP_ITERATION_5 126
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 125 && MSGPACK_PP_ITERATION_START_5 >= 125
+# define MSGPACK_PP_ITERATION_5 125
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 124 && MSGPACK_PP_ITERATION_START_5 >= 124
+# define MSGPACK_PP_ITERATION_5 124
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 123 && MSGPACK_PP_ITERATION_START_5 >= 123
+# define MSGPACK_PP_ITERATION_5 123
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 122 && MSGPACK_PP_ITERATION_START_5 >= 122
+# define MSGPACK_PP_ITERATION_5 122
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 121 && MSGPACK_PP_ITERATION_START_5 >= 121
+# define MSGPACK_PP_ITERATION_5 121
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 120 && MSGPACK_PP_ITERATION_START_5 >= 120
+# define MSGPACK_PP_ITERATION_5 120
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 119 && MSGPACK_PP_ITERATION_START_5 >= 119
+# define MSGPACK_PP_ITERATION_5 119
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 118 && MSGPACK_PP_ITERATION_START_5 >= 118
+# define MSGPACK_PP_ITERATION_5 118
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 117 && MSGPACK_PP_ITERATION_START_5 >= 117
+# define MSGPACK_PP_ITERATION_5 117
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 116 && MSGPACK_PP_ITERATION_START_5 >= 116
+# define MSGPACK_PP_ITERATION_5 116
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 115 && MSGPACK_PP_ITERATION_START_5 >= 115
+# define MSGPACK_PP_ITERATION_5 115
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 114 && MSGPACK_PP_ITERATION_START_5 >= 114
+# define MSGPACK_PP_ITERATION_5 114
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 113 && MSGPACK_PP_ITERATION_START_5 >= 113
+# define MSGPACK_PP_ITERATION_5 113
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 112 && MSGPACK_PP_ITERATION_START_5 >= 112
+# define MSGPACK_PP_ITERATION_5 112
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 111 && MSGPACK_PP_ITERATION_START_5 >= 111
+# define MSGPACK_PP_ITERATION_5 111
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 110 && MSGPACK_PP_ITERATION_START_5 >= 110
+# define MSGPACK_PP_ITERATION_5 110
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 109 && MSGPACK_PP_ITERATION_START_5 >= 109
+# define MSGPACK_PP_ITERATION_5 109
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 108 && MSGPACK_PP_ITERATION_START_5 >= 108
+# define MSGPACK_PP_ITERATION_5 108
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 107 && MSGPACK_PP_ITERATION_START_5 >= 107
+# define MSGPACK_PP_ITERATION_5 107
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 106 && MSGPACK_PP_ITERATION_START_5 >= 106
+# define MSGPACK_PP_ITERATION_5 106
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 105 && MSGPACK_PP_ITERATION_START_5 >= 105
+# define MSGPACK_PP_ITERATION_5 105
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 104 && MSGPACK_PP_ITERATION_START_5 >= 104
+# define MSGPACK_PP_ITERATION_5 104
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 103 && MSGPACK_PP_ITERATION_START_5 >= 103
+# define MSGPACK_PP_ITERATION_5 103
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 102 && MSGPACK_PP_ITERATION_START_5 >= 102
+# define MSGPACK_PP_ITERATION_5 102
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 101 && MSGPACK_PP_ITERATION_START_5 >= 101
+# define MSGPACK_PP_ITERATION_5 101
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 100 && MSGPACK_PP_ITERATION_START_5 >= 100
+# define MSGPACK_PP_ITERATION_5 100
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 99 && MSGPACK_PP_ITERATION_START_5 >= 99
+# define MSGPACK_PP_ITERATION_5 99
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 98 && MSGPACK_PP_ITERATION_START_5 >= 98
+# define MSGPACK_PP_ITERATION_5 98
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 97 && MSGPACK_PP_ITERATION_START_5 >= 97
+# define MSGPACK_PP_ITERATION_5 97
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 96 && MSGPACK_PP_ITERATION_START_5 >= 96
+# define MSGPACK_PP_ITERATION_5 96
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 95 && MSGPACK_PP_ITERATION_START_5 >= 95
+# define MSGPACK_PP_ITERATION_5 95
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 94 && MSGPACK_PP_ITERATION_START_5 >= 94
+# define MSGPACK_PP_ITERATION_5 94
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 93 && MSGPACK_PP_ITERATION_START_5 >= 93
+# define MSGPACK_PP_ITERATION_5 93
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 92 && MSGPACK_PP_ITERATION_START_5 >= 92
+# define MSGPACK_PP_ITERATION_5 92
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 91 && MSGPACK_PP_ITERATION_START_5 >= 91
+# define MSGPACK_PP_ITERATION_5 91
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 90 && MSGPACK_PP_ITERATION_START_5 >= 90
+# define MSGPACK_PP_ITERATION_5 90
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 89 && MSGPACK_PP_ITERATION_START_5 >= 89
+# define MSGPACK_PP_ITERATION_5 89
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 88 && MSGPACK_PP_ITERATION_START_5 >= 88
+# define MSGPACK_PP_ITERATION_5 88
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 87 && MSGPACK_PP_ITERATION_START_5 >= 87
+# define MSGPACK_PP_ITERATION_5 87
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 86 && MSGPACK_PP_ITERATION_START_5 >= 86
+# define MSGPACK_PP_ITERATION_5 86
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 85 && MSGPACK_PP_ITERATION_START_5 >= 85
+# define MSGPACK_PP_ITERATION_5 85
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 84 && MSGPACK_PP_ITERATION_START_5 >= 84
+# define MSGPACK_PP_ITERATION_5 84
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 83 && MSGPACK_PP_ITERATION_START_5 >= 83
+# define MSGPACK_PP_ITERATION_5 83
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 82 && MSGPACK_PP_ITERATION_START_5 >= 82
+# define MSGPACK_PP_ITERATION_5 82
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 81 && MSGPACK_PP_ITERATION_START_5 >= 81
+# define MSGPACK_PP_ITERATION_5 81
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 80 && MSGPACK_PP_ITERATION_START_5 >= 80
+# define MSGPACK_PP_ITERATION_5 80
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 79 && MSGPACK_PP_ITERATION_START_5 >= 79
+# define MSGPACK_PP_ITERATION_5 79
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 78 && MSGPACK_PP_ITERATION_START_5 >= 78
+# define MSGPACK_PP_ITERATION_5 78
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 77 && MSGPACK_PP_ITERATION_START_5 >= 77
+# define MSGPACK_PP_ITERATION_5 77
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 76 && MSGPACK_PP_ITERATION_START_5 >= 76
+# define MSGPACK_PP_ITERATION_5 76
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 75 && MSGPACK_PP_ITERATION_START_5 >= 75
+# define MSGPACK_PP_ITERATION_5 75
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 74 && MSGPACK_PP_ITERATION_START_5 >= 74
+# define MSGPACK_PP_ITERATION_5 74
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 73 && MSGPACK_PP_ITERATION_START_5 >= 73
+# define MSGPACK_PP_ITERATION_5 73
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 72 && MSGPACK_PP_ITERATION_START_5 >= 72
+# define MSGPACK_PP_ITERATION_5 72
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 71 && MSGPACK_PP_ITERATION_START_5 >= 71
+# define MSGPACK_PP_ITERATION_5 71
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 70 && MSGPACK_PP_ITERATION_START_5 >= 70
+# define MSGPACK_PP_ITERATION_5 70
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 69 && MSGPACK_PP_ITERATION_START_5 >= 69
+# define MSGPACK_PP_ITERATION_5 69
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 68 && MSGPACK_PP_ITERATION_START_5 >= 68
+# define MSGPACK_PP_ITERATION_5 68
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 67 && MSGPACK_PP_ITERATION_START_5 >= 67
+# define MSGPACK_PP_ITERATION_5 67
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 66 && MSGPACK_PP_ITERATION_START_5 >= 66
+# define MSGPACK_PP_ITERATION_5 66
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 65 && MSGPACK_PP_ITERATION_START_5 >= 65
+# define MSGPACK_PP_ITERATION_5 65
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 64 && MSGPACK_PP_ITERATION_START_5 >= 64
+# define MSGPACK_PP_ITERATION_5 64
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 63 && MSGPACK_PP_ITERATION_START_5 >= 63
+# define MSGPACK_PP_ITERATION_5 63
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 62 && MSGPACK_PP_ITERATION_START_5 >= 62
+# define MSGPACK_PP_ITERATION_5 62
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 61 && MSGPACK_PP_ITERATION_START_5 >= 61
+# define MSGPACK_PP_ITERATION_5 61
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 60 && MSGPACK_PP_ITERATION_START_5 >= 60
+# define MSGPACK_PP_ITERATION_5 60
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 59 && MSGPACK_PP_ITERATION_START_5 >= 59
+# define MSGPACK_PP_ITERATION_5 59
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 58 && MSGPACK_PP_ITERATION_START_5 >= 58
+# define MSGPACK_PP_ITERATION_5 58
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 57 && MSGPACK_PP_ITERATION_START_5 >= 57
+# define MSGPACK_PP_ITERATION_5 57
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 56 && MSGPACK_PP_ITERATION_START_5 >= 56
+# define MSGPACK_PP_ITERATION_5 56
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 55 && MSGPACK_PP_ITERATION_START_5 >= 55
+# define MSGPACK_PP_ITERATION_5 55
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 54 && MSGPACK_PP_ITERATION_START_5 >= 54
+# define MSGPACK_PP_ITERATION_5 54
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 53 && MSGPACK_PP_ITERATION_START_5 >= 53
+# define MSGPACK_PP_ITERATION_5 53
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 52 && MSGPACK_PP_ITERATION_START_5 >= 52
+# define MSGPACK_PP_ITERATION_5 52
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 51 && MSGPACK_PP_ITERATION_START_5 >= 51
+# define MSGPACK_PP_ITERATION_5 51
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 50 && MSGPACK_PP_ITERATION_START_5 >= 50
+# define MSGPACK_PP_ITERATION_5 50
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 49 && MSGPACK_PP_ITERATION_START_5 >= 49
+# define MSGPACK_PP_ITERATION_5 49
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 48 && MSGPACK_PP_ITERATION_START_5 >= 48
+# define MSGPACK_PP_ITERATION_5 48
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 47 && MSGPACK_PP_ITERATION_START_5 >= 47
+# define MSGPACK_PP_ITERATION_5 47
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 46 && MSGPACK_PP_ITERATION_START_5 >= 46
+# define MSGPACK_PP_ITERATION_5 46
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 45 && MSGPACK_PP_ITERATION_START_5 >= 45
+# define MSGPACK_PP_ITERATION_5 45
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 44 && MSGPACK_PP_ITERATION_START_5 >= 44
+# define MSGPACK_PP_ITERATION_5 44
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 43 && MSGPACK_PP_ITERATION_START_5 >= 43
+# define MSGPACK_PP_ITERATION_5 43
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 42 && MSGPACK_PP_ITERATION_START_5 >= 42
+# define MSGPACK_PP_ITERATION_5 42
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 41 && MSGPACK_PP_ITERATION_START_5 >= 41
+# define MSGPACK_PP_ITERATION_5 41
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 40 && MSGPACK_PP_ITERATION_START_5 >= 40
+# define MSGPACK_PP_ITERATION_5 40
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 39 && MSGPACK_PP_ITERATION_START_5 >= 39
+# define MSGPACK_PP_ITERATION_5 39
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 38 && MSGPACK_PP_ITERATION_START_5 >= 38
+# define MSGPACK_PP_ITERATION_5 38
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 37 && MSGPACK_PP_ITERATION_START_5 >= 37
+# define MSGPACK_PP_ITERATION_5 37
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 36 && MSGPACK_PP_ITERATION_START_5 >= 36
+# define MSGPACK_PP_ITERATION_5 36
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 35 && MSGPACK_PP_ITERATION_START_5 >= 35
+# define MSGPACK_PP_ITERATION_5 35
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 34 && MSGPACK_PP_ITERATION_START_5 >= 34
+# define MSGPACK_PP_ITERATION_5 34
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 33 && MSGPACK_PP_ITERATION_START_5 >= 33
+# define MSGPACK_PP_ITERATION_5 33
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 32 && MSGPACK_PP_ITERATION_START_5 >= 32
+# define MSGPACK_PP_ITERATION_5 32
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 31 && MSGPACK_PP_ITERATION_START_5 >= 31
+# define MSGPACK_PP_ITERATION_5 31
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 30 && MSGPACK_PP_ITERATION_START_5 >= 30
+# define MSGPACK_PP_ITERATION_5 30
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 29 && MSGPACK_PP_ITERATION_START_5 >= 29
+# define MSGPACK_PP_ITERATION_5 29
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 28 && MSGPACK_PP_ITERATION_START_5 >= 28
+# define MSGPACK_PP_ITERATION_5 28
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 27 && MSGPACK_PP_ITERATION_START_5 >= 27
+# define MSGPACK_PP_ITERATION_5 27
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 26 && MSGPACK_PP_ITERATION_START_5 >= 26
+# define MSGPACK_PP_ITERATION_5 26
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 25 && MSGPACK_PP_ITERATION_START_5 >= 25
+# define MSGPACK_PP_ITERATION_5 25
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 24 && MSGPACK_PP_ITERATION_START_5 >= 24
+# define MSGPACK_PP_ITERATION_5 24
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 23 && MSGPACK_PP_ITERATION_START_5 >= 23
+# define MSGPACK_PP_ITERATION_5 23
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 22 && MSGPACK_PP_ITERATION_START_5 >= 22
+# define MSGPACK_PP_ITERATION_5 22
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 21 && MSGPACK_PP_ITERATION_START_5 >= 21
+# define MSGPACK_PP_ITERATION_5 21
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 20 && MSGPACK_PP_ITERATION_START_5 >= 20
+# define MSGPACK_PP_ITERATION_5 20
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 19 && MSGPACK_PP_ITERATION_START_5 >= 19
+# define MSGPACK_PP_ITERATION_5 19
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 18 && MSGPACK_PP_ITERATION_START_5 >= 18
+# define MSGPACK_PP_ITERATION_5 18
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 17 && MSGPACK_PP_ITERATION_START_5 >= 17
+# define MSGPACK_PP_ITERATION_5 17
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 16 && MSGPACK_PP_ITERATION_START_5 >= 16
+# define MSGPACK_PP_ITERATION_5 16
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 15 && MSGPACK_PP_ITERATION_START_5 >= 15
+# define MSGPACK_PP_ITERATION_5 15
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 14 && MSGPACK_PP_ITERATION_START_5 >= 14
+# define MSGPACK_PP_ITERATION_5 14
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 13 && MSGPACK_PP_ITERATION_START_5 >= 13
+# define MSGPACK_PP_ITERATION_5 13
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 12 && MSGPACK_PP_ITERATION_START_5 >= 12
+# define MSGPACK_PP_ITERATION_5 12
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 11 && MSGPACK_PP_ITERATION_START_5 >= 11
+# define MSGPACK_PP_ITERATION_5 11
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 10 && MSGPACK_PP_ITERATION_START_5 >= 10
+# define MSGPACK_PP_ITERATION_5 10
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 9 && MSGPACK_PP_ITERATION_START_5 >= 9
+# define MSGPACK_PP_ITERATION_5 9
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 8 && MSGPACK_PP_ITERATION_START_5 >= 8
+# define MSGPACK_PP_ITERATION_5 8
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 7 && MSGPACK_PP_ITERATION_START_5 >= 7
+# define MSGPACK_PP_ITERATION_5 7
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 6 && MSGPACK_PP_ITERATION_START_5 >= 6
+# define MSGPACK_PP_ITERATION_5 6
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 5 && MSGPACK_PP_ITERATION_START_5 >= 5
+# define MSGPACK_PP_ITERATION_5 5
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 4 && MSGPACK_PP_ITERATION_START_5 >= 4
+# define MSGPACK_PP_ITERATION_5 4
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 3 && MSGPACK_PP_ITERATION_START_5 >= 3
+# define MSGPACK_PP_ITERATION_5 3
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 2 && MSGPACK_PP_ITERATION_START_5 >= 2
+# define MSGPACK_PP_ITERATION_5 2
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 1 && MSGPACK_PP_ITERATION_START_5 >= 1
+# define MSGPACK_PP_ITERATION_5 1
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
+# if MSGPACK_PP_ITERATION_FINISH_5 <= 0 && MSGPACK_PP_ITERATION_START_5 >= 0
+# define MSGPACK_PP_ITERATION_5 0
+# include MSGPACK_PP_FILENAME_5
+# undef MSGPACK_PP_ITERATION_5
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/local.hpp b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/local.hpp
new file mode 100644
index 0000000000..9629199be1
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/local.hpp
@@ -0,0 +1,812 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if !defined(MSGPACK_PP_LOCAL_LIMITS)
+# error MSGPACK_PP_ERROR: local iteration boundaries are not defined
+# elif !defined(MSGPACK_PP_LOCAL_MACRO)
+# error MSGPACK_PP_ERROR: local iteration target macro is not defined
+# else
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LOCAL_S MSGPACK_PP_TUPLE_ELEM(2, 0, MSGPACK_PP_LOCAL_LIMITS)
+# define MSGPACK_PP_LOCAL_F MSGPACK_PP_TUPLE_ELEM(2, 1, MSGPACK_PP_LOCAL_LIMITS)
+# else
+# define MSGPACK_PP_VALUE MSGPACK_PP_TUPLE_ELEM(2, 0, MSGPACK_PP_LOCAL_LIMITS)
+# include <msgpack/preprocessor/iteration/detail/start.hpp>
+# define MSGPACK_PP_VALUE MSGPACK_PP_TUPLE_ELEM(2, 1, MSGPACK_PP_LOCAL_LIMITS)
+# include <msgpack/preprocessor/iteration/detail/finish.hpp>
+# define MSGPACK_PP_LOCAL_S MSGPACK_PP_LOCAL_SE()
+# define MSGPACK_PP_LOCAL_F MSGPACK_PP_LOCAL_FE()
+# endif
+# endif
+#
+# if (MSGPACK_PP_LOCAL_S) > (MSGPACK_PP_LOCAL_F)
+# include <msgpack/preprocessor/iteration/detail/rlocal.hpp>
+# else
+# if MSGPACK_PP_LOCAL_C(0)
+ MSGPACK_PP_LOCAL_MACRO(0)
+# endif
+# if MSGPACK_PP_LOCAL_C(1)
+ MSGPACK_PP_LOCAL_MACRO(1)
+# endif
+# if MSGPACK_PP_LOCAL_C(2)
+ MSGPACK_PP_LOCAL_MACRO(2)
+# endif
+# if MSGPACK_PP_LOCAL_C(3)
+ MSGPACK_PP_LOCAL_MACRO(3)
+# endif
+# if MSGPACK_PP_LOCAL_C(4)
+ MSGPACK_PP_LOCAL_MACRO(4)
+# endif
+# if MSGPACK_PP_LOCAL_C(5)
+ MSGPACK_PP_LOCAL_MACRO(5)
+# endif
+# if MSGPACK_PP_LOCAL_C(6)
+ MSGPACK_PP_LOCAL_MACRO(6)
+# endif
+# if MSGPACK_PP_LOCAL_C(7)
+ MSGPACK_PP_LOCAL_MACRO(7)
+# endif
+# if MSGPACK_PP_LOCAL_C(8)
+ MSGPACK_PP_LOCAL_MACRO(8)
+# endif
+# if MSGPACK_PP_LOCAL_C(9)
+ MSGPACK_PP_LOCAL_MACRO(9)
+# endif
+# if MSGPACK_PP_LOCAL_C(10)
+ MSGPACK_PP_LOCAL_MACRO(10)
+# endif
+# if MSGPACK_PP_LOCAL_C(11)
+ MSGPACK_PP_LOCAL_MACRO(11)
+# endif
+# if MSGPACK_PP_LOCAL_C(12)
+ MSGPACK_PP_LOCAL_MACRO(12)
+# endif
+# if MSGPACK_PP_LOCAL_C(13)
+ MSGPACK_PP_LOCAL_MACRO(13)
+# endif
+# if MSGPACK_PP_LOCAL_C(14)
+ MSGPACK_PP_LOCAL_MACRO(14)
+# endif
+# if MSGPACK_PP_LOCAL_C(15)
+ MSGPACK_PP_LOCAL_MACRO(15)
+# endif
+# if MSGPACK_PP_LOCAL_C(16)
+ MSGPACK_PP_LOCAL_MACRO(16)
+# endif
+# if MSGPACK_PP_LOCAL_C(17)
+ MSGPACK_PP_LOCAL_MACRO(17)
+# endif
+# if MSGPACK_PP_LOCAL_C(18)
+ MSGPACK_PP_LOCAL_MACRO(18)
+# endif
+# if MSGPACK_PP_LOCAL_C(19)
+ MSGPACK_PP_LOCAL_MACRO(19)
+# endif
+# if MSGPACK_PP_LOCAL_C(20)
+ MSGPACK_PP_LOCAL_MACRO(20)
+# endif
+# if MSGPACK_PP_LOCAL_C(21)
+ MSGPACK_PP_LOCAL_MACRO(21)
+# endif
+# if MSGPACK_PP_LOCAL_C(22)
+ MSGPACK_PP_LOCAL_MACRO(22)
+# endif
+# if MSGPACK_PP_LOCAL_C(23)
+ MSGPACK_PP_LOCAL_MACRO(23)
+# endif
+# if MSGPACK_PP_LOCAL_C(24)
+ MSGPACK_PP_LOCAL_MACRO(24)
+# endif
+# if MSGPACK_PP_LOCAL_C(25)
+ MSGPACK_PP_LOCAL_MACRO(25)
+# endif
+# if MSGPACK_PP_LOCAL_C(26)
+ MSGPACK_PP_LOCAL_MACRO(26)
+# endif
+# if MSGPACK_PP_LOCAL_C(27)
+ MSGPACK_PP_LOCAL_MACRO(27)
+# endif
+# if MSGPACK_PP_LOCAL_C(28)
+ MSGPACK_PP_LOCAL_MACRO(28)
+# endif
+# if MSGPACK_PP_LOCAL_C(29)
+ MSGPACK_PP_LOCAL_MACRO(29)
+# endif
+# if MSGPACK_PP_LOCAL_C(30)
+ MSGPACK_PP_LOCAL_MACRO(30)
+# endif
+# if MSGPACK_PP_LOCAL_C(31)
+ MSGPACK_PP_LOCAL_MACRO(31)
+# endif
+# if MSGPACK_PP_LOCAL_C(32)
+ MSGPACK_PP_LOCAL_MACRO(32)
+# endif
+# if MSGPACK_PP_LOCAL_C(33)
+ MSGPACK_PP_LOCAL_MACRO(33)
+# endif
+# if MSGPACK_PP_LOCAL_C(34)
+ MSGPACK_PP_LOCAL_MACRO(34)
+# endif
+# if MSGPACK_PP_LOCAL_C(35)
+ MSGPACK_PP_LOCAL_MACRO(35)
+# endif
+# if MSGPACK_PP_LOCAL_C(36)
+ MSGPACK_PP_LOCAL_MACRO(36)
+# endif
+# if MSGPACK_PP_LOCAL_C(37)
+ MSGPACK_PP_LOCAL_MACRO(37)
+# endif
+# if MSGPACK_PP_LOCAL_C(38)
+ MSGPACK_PP_LOCAL_MACRO(38)
+# endif
+# if MSGPACK_PP_LOCAL_C(39)
+ MSGPACK_PP_LOCAL_MACRO(39)
+# endif
+# if MSGPACK_PP_LOCAL_C(40)
+ MSGPACK_PP_LOCAL_MACRO(40)
+# endif
+# if MSGPACK_PP_LOCAL_C(41)
+ MSGPACK_PP_LOCAL_MACRO(41)
+# endif
+# if MSGPACK_PP_LOCAL_C(42)
+ MSGPACK_PP_LOCAL_MACRO(42)
+# endif
+# if MSGPACK_PP_LOCAL_C(43)
+ MSGPACK_PP_LOCAL_MACRO(43)
+# endif
+# if MSGPACK_PP_LOCAL_C(44)
+ MSGPACK_PP_LOCAL_MACRO(44)
+# endif
+# if MSGPACK_PP_LOCAL_C(45)
+ MSGPACK_PP_LOCAL_MACRO(45)
+# endif
+# if MSGPACK_PP_LOCAL_C(46)
+ MSGPACK_PP_LOCAL_MACRO(46)
+# endif
+# if MSGPACK_PP_LOCAL_C(47)
+ MSGPACK_PP_LOCAL_MACRO(47)
+# endif
+# if MSGPACK_PP_LOCAL_C(48)
+ MSGPACK_PP_LOCAL_MACRO(48)
+# endif
+# if MSGPACK_PP_LOCAL_C(49)
+ MSGPACK_PP_LOCAL_MACRO(49)
+# endif
+# if MSGPACK_PP_LOCAL_C(50)
+ MSGPACK_PP_LOCAL_MACRO(50)
+# endif
+# if MSGPACK_PP_LOCAL_C(51)
+ MSGPACK_PP_LOCAL_MACRO(51)
+# endif
+# if MSGPACK_PP_LOCAL_C(52)
+ MSGPACK_PP_LOCAL_MACRO(52)
+# endif
+# if MSGPACK_PP_LOCAL_C(53)
+ MSGPACK_PP_LOCAL_MACRO(53)
+# endif
+# if MSGPACK_PP_LOCAL_C(54)
+ MSGPACK_PP_LOCAL_MACRO(54)
+# endif
+# if MSGPACK_PP_LOCAL_C(55)
+ MSGPACK_PP_LOCAL_MACRO(55)
+# endif
+# if MSGPACK_PP_LOCAL_C(56)
+ MSGPACK_PP_LOCAL_MACRO(56)
+# endif
+# if MSGPACK_PP_LOCAL_C(57)
+ MSGPACK_PP_LOCAL_MACRO(57)
+# endif
+# if MSGPACK_PP_LOCAL_C(58)
+ MSGPACK_PP_LOCAL_MACRO(58)
+# endif
+# if MSGPACK_PP_LOCAL_C(59)
+ MSGPACK_PP_LOCAL_MACRO(59)
+# endif
+# if MSGPACK_PP_LOCAL_C(60)
+ MSGPACK_PP_LOCAL_MACRO(60)
+# endif
+# if MSGPACK_PP_LOCAL_C(61)
+ MSGPACK_PP_LOCAL_MACRO(61)
+# endif
+# if MSGPACK_PP_LOCAL_C(62)
+ MSGPACK_PP_LOCAL_MACRO(62)
+# endif
+# if MSGPACK_PP_LOCAL_C(63)
+ MSGPACK_PP_LOCAL_MACRO(63)
+# endif
+# if MSGPACK_PP_LOCAL_C(64)
+ MSGPACK_PP_LOCAL_MACRO(64)
+# endif
+# if MSGPACK_PP_LOCAL_C(65)
+ MSGPACK_PP_LOCAL_MACRO(65)
+# endif
+# if MSGPACK_PP_LOCAL_C(66)
+ MSGPACK_PP_LOCAL_MACRO(66)
+# endif
+# if MSGPACK_PP_LOCAL_C(67)
+ MSGPACK_PP_LOCAL_MACRO(67)
+# endif
+# if MSGPACK_PP_LOCAL_C(68)
+ MSGPACK_PP_LOCAL_MACRO(68)
+# endif
+# if MSGPACK_PP_LOCAL_C(69)
+ MSGPACK_PP_LOCAL_MACRO(69)
+# endif
+# if MSGPACK_PP_LOCAL_C(70)
+ MSGPACK_PP_LOCAL_MACRO(70)
+# endif
+# if MSGPACK_PP_LOCAL_C(71)
+ MSGPACK_PP_LOCAL_MACRO(71)
+# endif
+# if MSGPACK_PP_LOCAL_C(72)
+ MSGPACK_PP_LOCAL_MACRO(72)
+# endif
+# if MSGPACK_PP_LOCAL_C(73)
+ MSGPACK_PP_LOCAL_MACRO(73)
+# endif
+# if MSGPACK_PP_LOCAL_C(74)
+ MSGPACK_PP_LOCAL_MACRO(74)
+# endif
+# if MSGPACK_PP_LOCAL_C(75)
+ MSGPACK_PP_LOCAL_MACRO(75)
+# endif
+# if MSGPACK_PP_LOCAL_C(76)
+ MSGPACK_PP_LOCAL_MACRO(76)
+# endif
+# if MSGPACK_PP_LOCAL_C(77)
+ MSGPACK_PP_LOCAL_MACRO(77)
+# endif
+# if MSGPACK_PP_LOCAL_C(78)
+ MSGPACK_PP_LOCAL_MACRO(78)
+# endif
+# if MSGPACK_PP_LOCAL_C(79)
+ MSGPACK_PP_LOCAL_MACRO(79)
+# endif
+# if MSGPACK_PP_LOCAL_C(80)
+ MSGPACK_PP_LOCAL_MACRO(80)
+# endif
+# if MSGPACK_PP_LOCAL_C(81)
+ MSGPACK_PP_LOCAL_MACRO(81)
+# endif
+# if MSGPACK_PP_LOCAL_C(82)
+ MSGPACK_PP_LOCAL_MACRO(82)
+# endif
+# if MSGPACK_PP_LOCAL_C(83)
+ MSGPACK_PP_LOCAL_MACRO(83)
+# endif
+# if MSGPACK_PP_LOCAL_C(84)
+ MSGPACK_PP_LOCAL_MACRO(84)
+# endif
+# if MSGPACK_PP_LOCAL_C(85)
+ MSGPACK_PP_LOCAL_MACRO(85)
+# endif
+# if MSGPACK_PP_LOCAL_C(86)
+ MSGPACK_PP_LOCAL_MACRO(86)
+# endif
+# if MSGPACK_PP_LOCAL_C(87)
+ MSGPACK_PP_LOCAL_MACRO(87)
+# endif
+# if MSGPACK_PP_LOCAL_C(88)
+ MSGPACK_PP_LOCAL_MACRO(88)
+# endif
+# if MSGPACK_PP_LOCAL_C(89)
+ MSGPACK_PP_LOCAL_MACRO(89)
+# endif
+# if MSGPACK_PP_LOCAL_C(90)
+ MSGPACK_PP_LOCAL_MACRO(90)
+# endif
+# if MSGPACK_PP_LOCAL_C(91)
+ MSGPACK_PP_LOCAL_MACRO(91)
+# endif
+# if MSGPACK_PP_LOCAL_C(92)
+ MSGPACK_PP_LOCAL_MACRO(92)
+# endif
+# if MSGPACK_PP_LOCAL_C(93)
+ MSGPACK_PP_LOCAL_MACRO(93)
+# endif
+# if MSGPACK_PP_LOCAL_C(94)
+ MSGPACK_PP_LOCAL_MACRO(94)
+# endif
+# if MSGPACK_PP_LOCAL_C(95)
+ MSGPACK_PP_LOCAL_MACRO(95)
+# endif
+# if MSGPACK_PP_LOCAL_C(96)
+ MSGPACK_PP_LOCAL_MACRO(96)
+# endif
+# if MSGPACK_PP_LOCAL_C(97)
+ MSGPACK_PP_LOCAL_MACRO(97)
+# endif
+# if MSGPACK_PP_LOCAL_C(98)
+ MSGPACK_PP_LOCAL_MACRO(98)
+# endif
+# if MSGPACK_PP_LOCAL_C(99)
+ MSGPACK_PP_LOCAL_MACRO(99)
+# endif
+# if MSGPACK_PP_LOCAL_C(100)
+ MSGPACK_PP_LOCAL_MACRO(100)
+# endif
+# if MSGPACK_PP_LOCAL_C(101)
+ MSGPACK_PP_LOCAL_MACRO(101)
+# endif
+# if MSGPACK_PP_LOCAL_C(102)
+ MSGPACK_PP_LOCAL_MACRO(102)
+# endif
+# if MSGPACK_PP_LOCAL_C(103)
+ MSGPACK_PP_LOCAL_MACRO(103)
+# endif
+# if MSGPACK_PP_LOCAL_C(104)
+ MSGPACK_PP_LOCAL_MACRO(104)
+# endif
+# if MSGPACK_PP_LOCAL_C(105)
+ MSGPACK_PP_LOCAL_MACRO(105)
+# endif
+# if MSGPACK_PP_LOCAL_C(106)
+ MSGPACK_PP_LOCAL_MACRO(106)
+# endif
+# if MSGPACK_PP_LOCAL_C(107)
+ MSGPACK_PP_LOCAL_MACRO(107)
+# endif
+# if MSGPACK_PP_LOCAL_C(108)
+ MSGPACK_PP_LOCAL_MACRO(108)
+# endif
+# if MSGPACK_PP_LOCAL_C(109)
+ MSGPACK_PP_LOCAL_MACRO(109)
+# endif
+# if MSGPACK_PP_LOCAL_C(110)
+ MSGPACK_PP_LOCAL_MACRO(110)
+# endif
+# if MSGPACK_PP_LOCAL_C(111)
+ MSGPACK_PP_LOCAL_MACRO(111)
+# endif
+# if MSGPACK_PP_LOCAL_C(112)
+ MSGPACK_PP_LOCAL_MACRO(112)
+# endif
+# if MSGPACK_PP_LOCAL_C(113)
+ MSGPACK_PP_LOCAL_MACRO(113)
+# endif
+# if MSGPACK_PP_LOCAL_C(114)
+ MSGPACK_PP_LOCAL_MACRO(114)
+# endif
+# if MSGPACK_PP_LOCAL_C(115)
+ MSGPACK_PP_LOCAL_MACRO(115)
+# endif
+# if MSGPACK_PP_LOCAL_C(116)
+ MSGPACK_PP_LOCAL_MACRO(116)
+# endif
+# if MSGPACK_PP_LOCAL_C(117)
+ MSGPACK_PP_LOCAL_MACRO(117)
+# endif
+# if MSGPACK_PP_LOCAL_C(118)
+ MSGPACK_PP_LOCAL_MACRO(118)
+# endif
+# if MSGPACK_PP_LOCAL_C(119)
+ MSGPACK_PP_LOCAL_MACRO(119)
+# endif
+# if MSGPACK_PP_LOCAL_C(120)
+ MSGPACK_PP_LOCAL_MACRO(120)
+# endif
+# if MSGPACK_PP_LOCAL_C(121)
+ MSGPACK_PP_LOCAL_MACRO(121)
+# endif
+# if MSGPACK_PP_LOCAL_C(122)
+ MSGPACK_PP_LOCAL_MACRO(122)
+# endif
+# if MSGPACK_PP_LOCAL_C(123)
+ MSGPACK_PP_LOCAL_MACRO(123)
+# endif
+# if MSGPACK_PP_LOCAL_C(124)
+ MSGPACK_PP_LOCAL_MACRO(124)
+# endif
+# if MSGPACK_PP_LOCAL_C(125)
+ MSGPACK_PP_LOCAL_MACRO(125)
+# endif
+# if MSGPACK_PP_LOCAL_C(126)
+ MSGPACK_PP_LOCAL_MACRO(126)
+# endif
+# if MSGPACK_PP_LOCAL_C(127)
+ MSGPACK_PP_LOCAL_MACRO(127)
+# endif
+# if MSGPACK_PP_LOCAL_C(128)
+ MSGPACK_PP_LOCAL_MACRO(128)
+# endif
+# if MSGPACK_PP_LOCAL_C(129)
+ MSGPACK_PP_LOCAL_MACRO(129)
+# endif
+# if MSGPACK_PP_LOCAL_C(130)
+ MSGPACK_PP_LOCAL_MACRO(130)
+# endif
+# if MSGPACK_PP_LOCAL_C(131)
+ MSGPACK_PP_LOCAL_MACRO(131)
+# endif
+# if MSGPACK_PP_LOCAL_C(132)
+ MSGPACK_PP_LOCAL_MACRO(132)
+# endif
+# if MSGPACK_PP_LOCAL_C(133)
+ MSGPACK_PP_LOCAL_MACRO(133)
+# endif
+# if MSGPACK_PP_LOCAL_C(134)
+ MSGPACK_PP_LOCAL_MACRO(134)
+# endif
+# if MSGPACK_PP_LOCAL_C(135)
+ MSGPACK_PP_LOCAL_MACRO(135)
+# endif
+# if MSGPACK_PP_LOCAL_C(136)
+ MSGPACK_PP_LOCAL_MACRO(136)
+# endif
+# if MSGPACK_PP_LOCAL_C(137)
+ MSGPACK_PP_LOCAL_MACRO(137)
+# endif
+# if MSGPACK_PP_LOCAL_C(138)
+ MSGPACK_PP_LOCAL_MACRO(138)
+# endif
+# if MSGPACK_PP_LOCAL_C(139)
+ MSGPACK_PP_LOCAL_MACRO(139)
+# endif
+# if MSGPACK_PP_LOCAL_C(140)
+ MSGPACK_PP_LOCAL_MACRO(140)
+# endif
+# if MSGPACK_PP_LOCAL_C(141)
+ MSGPACK_PP_LOCAL_MACRO(141)
+# endif
+# if MSGPACK_PP_LOCAL_C(142)
+ MSGPACK_PP_LOCAL_MACRO(142)
+# endif
+# if MSGPACK_PP_LOCAL_C(143)
+ MSGPACK_PP_LOCAL_MACRO(143)
+# endif
+# if MSGPACK_PP_LOCAL_C(144)
+ MSGPACK_PP_LOCAL_MACRO(144)
+# endif
+# if MSGPACK_PP_LOCAL_C(145)
+ MSGPACK_PP_LOCAL_MACRO(145)
+# endif
+# if MSGPACK_PP_LOCAL_C(146)
+ MSGPACK_PP_LOCAL_MACRO(146)
+# endif
+# if MSGPACK_PP_LOCAL_C(147)
+ MSGPACK_PP_LOCAL_MACRO(147)
+# endif
+# if MSGPACK_PP_LOCAL_C(148)
+ MSGPACK_PP_LOCAL_MACRO(148)
+# endif
+# if MSGPACK_PP_LOCAL_C(149)
+ MSGPACK_PP_LOCAL_MACRO(149)
+# endif
+# if MSGPACK_PP_LOCAL_C(150)
+ MSGPACK_PP_LOCAL_MACRO(150)
+# endif
+# if MSGPACK_PP_LOCAL_C(151)
+ MSGPACK_PP_LOCAL_MACRO(151)
+# endif
+# if MSGPACK_PP_LOCAL_C(152)
+ MSGPACK_PP_LOCAL_MACRO(152)
+# endif
+# if MSGPACK_PP_LOCAL_C(153)
+ MSGPACK_PP_LOCAL_MACRO(153)
+# endif
+# if MSGPACK_PP_LOCAL_C(154)
+ MSGPACK_PP_LOCAL_MACRO(154)
+# endif
+# if MSGPACK_PP_LOCAL_C(155)
+ MSGPACK_PP_LOCAL_MACRO(155)
+# endif
+# if MSGPACK_PP_LOCAL_C(156)
+ MSGPACK_PP_LOCAL_MACRO(156)
+# endif
+# if MSGPACK_PP_LOCAL_C(157)
+ MSGPACK_PP_LOCAL_MACRO(157)
+# endif
+# if MSGPACK_PP_LOCAL_C(158)
+ MSGPACK_PP_LOCAL_MACRO(158)
+# endif
+# if MSGPACK_PP_LOCAL_C(159)
+ MSGPACK_PP_LOCAL_MACRO(159)
+# endif
+# if MSGPACK_PP_LOCAL_C(160)
+ MSGPACK_PP_LOCAL_MACRO(160)
+# endif
+# if MSGPACK_PP_LOCAL_C(161)
+ MSGPACK_PP_LOCAL_MACRO(161)
+# endif
+# if MSGPACK_PP_LOCAL_C(162)
+ MSGPACK_PP_LOCAL_MACRO(162)
+# endif
+# if MSGPACK_PP_LOCAL_C(163)
+ MSGPACK_PP_LOCAL_MACRO(163)
+# endif
+# if MSGPACK_PP_LOCAL_C(164)
+ MSGPACK_PP_LOCAL_MACRO(164)
+# endif
+# if MSGPACK_PP_LOCAL_C(165)
+ MSGPACK_PP_LOCAL_MACRO(165)
+# endif
+# if MSGPACK_PP_LOCAL_C(166)
+ MSGPACK_PP_LOCAL_MACRO(166)
+# endif
+# if MSGPACK_PP_LOCAL_C(167)
+ MSGPACK_PP_LOCAL_MACRO(167)
+# endif
+# if MSGPACK_PP_LOCAL_C(168)
+ MSGPACK_PP_LOCAL_MACRO(168)
+# endif
+# if MSGPACK_PP_LOCAL_C(169)
+ MSGPACK_PP_LOCAL_MACRO(169)
+# endif
+# if MSGPACK_PP_LOCAL_C(170)
+ MSGPACK_PP_LOCAL_MACRO(170)
+# endif
+# if MSGPACK_PP_LOCAL_C(171)
+ MSGPACK_PP_LOCAL_MACRO(171)
+# endif
+# if MSGPACK_PP_LOCAL_C(172)
+ MSGPACK_PP_LOCAL_MACRO(172)
+# endif
+# if MSGPACK_PP_LOCAL_C(173)
+ MSGPACK_PP_LOCAL_MACRO(173)
+# endif
+# if MSGPACK_PP_LOCAL_C(174)
+ MSGPACK_PP_LOCAL_MACRO(174)
+# endif
+# if MSGPACK_PP_LOCAL_C(175)
+ MSGPACK_PP_LOCAL_MACRO(175)
+# endif
+# if MSGPACK_PP_LOCAL_C(176)
+ MSGPACK_PP_LOCAL_MACRO(176)
+# endif
+# if MSGPACK_PP_LOCAL_C(177)
+ MSGPACK_PP_LOCAL_MACRO(177)
+# endif
+# if MSGPACK_PP_LOCAL_C(178)
+ MSGPACK_PP_LOCAL_MACRO(178)
+# endif
+# if MSGPACK_PP_LOCAL_C(179)
+ MSGPACK_PP_LOCAL_MACRO(179)
+# endif
+# if MSGPACK_PP_LOCAL_C(180)
+ MSGPACK_PP_LOCAL_MACRO(180)
+# endif
+# if MSGPACK_PP_LOCAL_C(181)
+ MSGPACK_PP_LOCAL_MACRO(181)
+# endif
+# if MSGPACK_PP_LOCAL_C(182)
+ MSGPACK_PP_LOCAL_MACRO(182)
+# endif
+# if MSGPACK_PP_LOCAL_C(183)
+ MSGPACK_PP_LOCAL_MACRO(183)
+# endif
+# if MSGPACK_PP_LOCAL_C(184)
+ MSGPACK_PP_LOCAL_MACRO(184)
+# endif
+# if MSGPACK_PP_LOCAL_C(185)
+ MSGPACK_PP_LOCAL_MACRO(185)
+# endif
+# if MSGPACK_PP_LOCAL_C(186)
+ MSGPACK_PP_LOCAL_MACRO(186)
+# endif
+# if MSGPACK_PP_LOCAL_C(187)
+ MSGPACK_PP_LOCAL_MACRO(187)
+# endif
+# if MSGPACK_PP_LOCAL_C(188)
+ MSGPACK_PP_LOCAL_MACRO(188)
+# endif
+# if MSGPACK_PP_LOCAL_C(189)
+ MSGPACK_PP_LOCAL_MACRO(189)
+# endif
+# if MSGPACK_PP_LOCAL_C(190)
+ MSGPACK_PP_LOCAL_MACRO(190)
+# endif
+# if MSGPACK_PP_LOCAL_C(191)
+ MSGPACK_PP_LOCAL_MACRO(191)
+# endif
+# if MSGPACK_PP_LOCAL_C(192)
+ MSGPACK_PP_LOCAL_MACRO(192)
+# endif
+# if MSGPACK_PP_LOCAL_C(193)
+ MSGPACK_PP_LOCAL_MACRO(193)
+# endif
+# if MSGPACK_PP_LOCAL_C(194)
+ MSGPACK_PP_LOCAL_MACRO(194)
+# endif
+# if MSGPACK_PP_LOCAL_C(195)
+ MSGPACK_PP_LOCAL_MACRO(195)
+# endif
+# if MSGPACK_PP_LOCAL_C(196)
+ MSGPACK_PP_LOCAL_MACRO(196)
+# endif
+# if MSGPACK_PP_LOCAL_C(197)
+ MSGPACK_PP_LOCAL_MACRO(197)
+# endif
+# if MSGPACK_PP_LOCAL_C(198)
+ MSGPACK_PP_LOCAL_MACRO(198)
+# endif
+# if MSGPACK_PP_LOCAL_C(199)
+ MSGPACK_PP_LOCAL_MACRO(199)
+# endif
+# if MSGPACK_PP_LOCAL_C(200)
+ MSGPACK_PP_LOCAL_MACRO(200)
+# endif
+# if MSGPACK_PP_LOCAL_C(201)
+ MSGPACK_PP_LOCAL_MACRO(201)
+# endif
+# if MSGPACK_PP_LOCAL_C(202)
+ MSGPACK_PP_LOCAL_MACRO(202)
+# endif
+# if MSGPACK_PP_LOCAL_C(203)
+ MSGPACK_PP_LOCAL_MACRO(203)
+# endif
+# if MSGPACK_PP_LOCAL_C(204)
+ MSGPACK_PP_LOCAL_MACRO(204)
+# endif
+# if MSGPACK_PP_LOCAL_C(205)
+ MSGPACK_PP_LOCAL_MACRO(205)
+# endif
+# if MSGPACK_PP_LOCAL_C(206)
+ MSGPACK_PP_LOCAL_MACRO(206)
+# endif
+# if MSGPACK_PP_LOCAL_C(207)
+ MSGPACK_PP_LOCAL_MACRO(207)
+# endif
+# if MSGPACK_PP_LOCAL_C(208)
+ MSGPACK_PP_LOCAL_MACRO(208)
+# endif
+# if MSGPACK_PP_LOCAL_C(209)
+ MSGPACK_PP_LOCAL_MACRO(209)
+# endif
+# if MSGPACK_PP_LOCAL_C(210)
+ MSGPACK_PP_LOCAL_MACRO(210)
+# endif
+# if MSGPACK_PP_LOCAL_C(211)
+ MSGPACK_PP_LOCAL_MACRO(211)
+# endif
+# if MSGPACK_PP_LOCAL_C(212)
+ MSGPACK_PP_LOCAL_MACRO(212)
+# endif
+# if MSGPACK_PP_LOCAL_C(213)
+ MSGPACK_PP_LOCAL_MACRO(213)
+# endif
+# if MSGPACK_PP_LOCAL_C(214)
+ MSGPACK_PP_LOCAL_MACRO(214)
+# endif
+# if MSGPACK_PP_LOCAL_C(215)
+ MSGPACK_PP_LOCAL_MACRO(215)
+# endif
+# if MSGPACK_PP_LOCAL_C(216)
+ MSGPACK_PP_LOCAL_MACRO(216)
+# endif
+# if MSGPACK_PP_LOCAL_C(217)
+ MSGPACK_PP_LOCAL_MACRO(217)
+# endif
+# if MSGPACK_PP_LOCAL_C(218)
+ MSGPACK_PP_LOCAL_MACRO(218)
+# endif
+# if MSGPACK_PP_LOCAL_C(219)
+ MSGPACK_PP_LOCAL_MACRO(219)
+# endif
+# if MSGPACK_PP_LOCAL_C(220)
+ MSGPACK_PP_LOCAL_MACRO(220)
+# endif
+# if MSGPACK_PP_LOCAL_C(221)
+ MSGPACK_PP_LOCAL_MACRO(221)
+# endif
+# if MSGPACK_PP_LOCAL_C(222)
+ MSGPACK_PP_LOCAL_MACRO(222)
+# endif
+# if MSGPACK_PP_LOCAL_C(223)
+ MSGPACK_PP_LOCAL_MACRO(223)
+# endif
+# if MSGPACK_PP_LOCAL_C(224)
+ MSGPACK_PP_LOCAL_MACRO(224)
+# endif
+# if MSGPACK_PP_LOCAL_C(225)
+ MSGPACK_PP_LOCAL_MACRO(225)
+# endif
+# if MSGPACK_PP_LOCAL_C(226)
+ MSGPACK_PP_LOCAL_MACRO(226)
+# endif
+# if MSGPACK_PP_LOCAL_C(227)
+ MSGPACK_PP_LOCAL_MACRO(227)
+# endif
+# if MSGPACK_PP_LOCAL_C(228)
+ MSGPACK_PP_LOCAL_MACRO(228)
+# endif
+# if MSGPACK_PP_LOCAL_C(229)
+ MSGPACK_PP_LOCAL_MACRO(229)
+# endif
+# if MSGPACK_PP_LOCAL_C(230)
+ MSGPACK_PP_LOCAL_MACRO(230)
+# endif
+# if MSGPACK_PP_LOCAL_C(231)
+ MSGPACK_PP_LOCAL_MACRO(231)
+# endif
+# if MSGPACK_PP_LOCAL_C(232)
+ MSGPACK_PP_LOCAL_MACRO(232)
+# endif
+# if MSGPACK_PP_LOCAL_C(233)
+ MSGPACK_PP_LOCAL_MACRO(233)
+# endif
+# if MSGPACK_PP_LOCAL_C(234)
+ MSGPACK_PP_LOCAL_MACRO(234)
+# endif
+# if MSGPACK_PP_LOCAL_C(235)
+ MSGPACK_PP_LOCAL_MACRO(235)
+# endif
+# if MSGPACK_PP_LOCAL_C(236)
+ MSGPACK_PP_LOCAL_MACRO(236)
+# endif
+
+# if MSGPACK_PP_LOCAL_C(237)
+ MSGPACK_PP_LOCAL_MACRO(237)
+# endif
+# if MSGPACK_PP_LOCAL_C(238)
+ MSGPACK_PP_LOCAL_MACRO(238)
+# endif
+# if MSGPACK_PP_LOCAL_C(239)
+ MSGPACK_PP_LOCAL_MACRO(239)
+# endif
+# if MSGPACK_PP_LOCAL_C(240)
+ MSGPACK_PP_LOCAL_MACRO(240)
+# endif
+# if MSGPACK_PP_LOCAL_C(241)
+ MSGPACK_PP_LOCAL_MACRO(241)
+# endif
+# if MSGPACK_PP_LOCAL_C(242)
+ MSGPACK_PP_LOCAL_MACRO(242)
+# endif
+# if MSGPACK_PP_LOCAL_C(243)
+ MSGPACK_PP_LOCAL_MACRO(243)
+# endif
+# if MSGPACK_PP_LOCAL_C(244)
+ MSGPACK_PP_LOCAL_MACRO(244)
+# endif
+# if MSGPACK_PP_LOCAL_C(245)
+ MSGPACK_PP_LOCAL_MACRO(245)
+# endif
+# if MSGPACK_PP_LOCAL_C(246)
+ MSGPACK_PP_LOCAL_MACRO(246)
+# endif
+# if MSGPACK_PP_LOCAL_C(247)
+ MSGPACK_PP_LOCAL_MACRO(247)
+# endif
+# if MSGPACK_PP_LOCAL_C(248)
+ MSGPACK_PP_LOCAL_MACRO(248)
+# endif
+# if MSGPACK_PP_LOCAL_C(249)
+ MSGPACK_PP_LOCAL_MACRO(249)
+# endif
+# if MSGPACK_PP_LOCAL_C(250)
+ MSGPACK_PP_LOCAL_MACRO(250)
+# endif
+# if MSGPACK_PP_LOCAL_C(251)
+ MSGPACK_PP_LOCAL_MACRO(251)
+# endif
+# if MSGPACK_PP_LOCAL_C(252)
+ MSGPACK_PP_LOCAL_MACRO(252)
+# endif
+# if MSGPACK_PP_LOCAL_C(253)
+ MSGPACK_PP_LOCAL_MACRO(253)
+# endif
+# if MSGPACK_PP_LOCAL_C(254)
+ MSGPACK_PP_LOCAL_MACRO(254)
+# endif
+# if MSGPACK_PP_LOCAL_C(255)
+ MSGPACK_PP_LOCAL_MACRO(255)
+# endif
+# if MSGPACK_PP_LOCAL_C(256)
+ MSGPACK_PP_LOCAL_MACRO(256)
+# endif
+# endif
+#
+# undef MSGPACK_PP_LOCAL_LIMITS
+#
+# undef MSGPACK_PP_LOCAL_S
+# undef MSGPACK_PP_LOCAL_F
+#
+# undef MSGPACK_PP_LOCAL_MACRO
diff --git a/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/rlocal.hpp b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/rlocal.hpp
new file mode 100644
index 0000000000..442ac0eecc
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/rlocal.hpp
@@ -0,0 +1,782 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if MSGPACK_PP_LOCAL_R(256)
+ MSGPACK_PP_LOCAL_MACRO(256)
+# endif
+# if MSGPACK_PP_LOCAL_R(255)
+ MSGPACK_PP_LOCAL_MACRO(255)
+# endif
+# if MSGPACK_PP_LOCAL_R(254)
+ MSGPACK_PP_LOCAL_MACRO(254)
+# endif
+# if MSGPACK_PP_LOCAL_R(253)
+ MSGPACK_PP_LOCAL_MACRO(253)
+# endif
+# if MSGPACK_PP_LOCAL_R(252)
+ MSGPACK_PP_LOCAL_MACRO(252)
+# endif
+# if MSGPACK_PP_LOCAL_R(251)
+ MSGPACK_PP_LOCAL_MACRO(251)
+# endif
+# if MSGPACK_PP_LOCAL_R(250)
+ MSGPACK_PP_LOCAL_MACRO(250)
+# endif
+# if MSGPACK_PP_LOCAL_R(249)
+ MSGPACK_PP_LOCAL_MACRO(249)
+# endif
+# if MSGPACK_PP_LOCAL_R(248)
+ MSGPACK_PP_LOCAL_MACRO(248)
+# endif
+# if MSGPACK_PP_LOCAL_R(247)
+ MSGPACK_PP_LOCAL_MACRO(247)
+# endif
+# if MSGPACK_PP_LOCAL_R(246)
+ MSGPACK_PP_LOCAL_MACRO(246)
+# endif
+# if MSGPACK_PP_LOCAL_R(245)
+ MSGPACK_PP_LOCAL_MACRO(245)
+# endif
+# if MSGPACK_PP_LOCAL_R(244)
+ MSGPACK_PP_LOCAL_MACRO(244)
+# endif
+# if MSGPACK_PP_LOCAL_R(243)
+ MSGPACK_PP_LOCAL_MACRO(243)
+# endif
+# if MSGPACK_PP_LOCAL_R(242)
+ MSGPACK_PP_LOCAL_MACRO(242)
+# endif
+# if MSGPACK_PP_LOCAL_R(241)
+ MSGPACK_PP_LOCAL_MACRO(241)
+# endif
+# if MSGPACK_PP_LOCAL_R(240)
+ MSGPACK_PP_LOCAL_MACRO(240)
+# endif
+# if MSGPACK_PP_LOCAL_R(239)
+ MSGPACK_PP_LOCAL_MACRO(239)
+# endif
+# if MSGPACK_PP_LOCAL_R(238)
+ MSGPACK_PP_LOCAL_MACRO(238)
+# endif
+# if MSGPACK_PP_LOCAL_R(237)
+ MSGPACK_PP_LOCAL_MACRO(237)
+# endif
+# if MSGPACK_PP_LOCAL_R(236)
+ MSGPACK_PP_LOCAL_MACRO(236)
+# endif
+# if MSGPACK_PP_LOCAL_R(235)
+ MSGPACK_PP_LOCAL_MACRO(235)
+# endif
+# if MSGPACK_PP_LOCAL_R(234)
+ MSGPACK_PP_LOCAL_MACRO(234)
+# endif
+# if MSGPACK_PP_LOCAL_R(233)
+ MSGPACK_PP_LOCAL_MACRO(233)
+# endif
+# if MSGPACK_PP_LOCAL_R(232)
+ MSGPACK_PP_LOCAL_MACRO(232)
+# endif
+# if MSGPACK_PP_LOCAL_R(231)
+ MSGPACK_PP_LOCAL_MACRO(231)
+# endif
+# if MSGPACK_PP_LOCAL_R(230)
+ MSGPACK_PP_LOCAL_MACRO(230)
+# endif
+# if MSGPACK_PP_LOCAL_R(229)
+ MSGPACK_PP_LOCAL_MACRO(229)
+# endif
+# if MSGPACK_PP_LOCAL_R(228)
+ MSGPACK_PP_LOCAL_MACRO(228)
+# endif
+# if MSGPACK_PP_LOCAL_R(227)
+ MSGPACK_PP_LOCAL_MACRO(227)
+# endif
+# if MSGPACK_PP_LOCAL_R(226)
+ MSGPACK_PP_LOCAL_MACRO(226)
+# endif
+# if MSGPACK_PP_LOCAL_R(225)
+ MSGPACK_PP_LOCAL_MACRO(225)
+# endif
+# if MSGPACK_PP_LOCAL_R(224)
+ MSGPACK_PP_LOCAL_MACRO(224)
+# endif
+# if MSGPACK_PP_LOCAL_R(223)
+ MSGPACK_PP_LOCAL_MACRO(223)
+# endif
+# if MSGPACK_PP_LOCAL_R(222)
+ MSGPACK_PP_LOCAL_MACRO(222)
+# endif
+# if MSGPACK_PP_LOCAL_R(221)
+ MSGPACK_PP_LOCAL_MACRO(221)
+# endif
+# if MSGPACK_PP_LOCAL_R(220)
+ MSGPACK_PP_LOCAL_MACRO(220)
+# endif
+# if MSGPACK_PP_LOCAL_R(219)
+ MSGPACK_PP_LOCAL_MACRO(219)
+# endif
+# if MSGPACK_PP_LOCAL_R(218)
+ MSGPACK_PP_LOCAL_MACRO(218)
+# endif
+# if MSGPACK_PP_LOCAL_R(217)
+ MSGPACK_PP_LOCAL_MACRO(217)
+# endif
+# if MSGPACK_PP_LOCAL_R(216)
+ MSGPACK_PP_LOCAL_MACRO(216)
+# endif
+# if MSGPACK_PP_LOCAL_R(215)
+ MSGPACK_PP_LOCAL_MACRO(215)
+# endif
+# if MSGPACK_PP_LOCAL_R(214)
+ MSGPACK_PP_LOCAL_MACRO(214)
+# endif
+# if MSGPACK_PP_LOCAL_R(213)
+ MSGPACK_PP_LOCAL_MACRO(213)
+# endif
+# if MSGPACK_PP_LOCAL_R(212)
+ MSGPACK_PP_LOCAL_MACRO(212)
+# endif
+# if MSGPACK_PP_LOCAL_R(211)
+ MSGPACK_PP_LOCAL_MACRO(211)
+# endif
+# if MSGPACK_PP_LOCAL_R(210)
+ MSGPACK_PP_LOCAL_MACRO(210)
+# endif
+# if MSGPACK_PP_LOCAL_R(209)
+ MSGPACK_PP_LOCAL_MACRO(209)
+# endif
+# if MSGPACK_PP_LOCAL_R(208)
+ MSGPACK_PP_LOCAL_MACRO(208)
+# endif
+# if MSGPACK_PP_LOCAL_R(207)
+ MSGPACK_PP_LOCAL_MACRO(207)
+# endif
+# if MSGPACK_PP_LOCAL_R(206)
+ MSGPACK_PP_LOCAL_MACRO(206)
+# endif
+# if MSGPACK_PP_LOCAL_R(205)
+ MSGPACK_PP_LOCAL_MACRO(205)
+# endif
+# if MSGPACK_PP_LOCAL_R(204)
+ MSGPACK_PP_LOCAL_MACRO(204)
+# endif
+# if MSGPACK_PP_LOCAL_R(203)
+ MSGPACK_PP_LOCAL_MACRO(203)
+# endif
+# if MSGPACK_PP_LOCAL_R(202)
+ MSGPACK_PP_LOCAL_MACRO(202)
+# endif
+# if MSGPACK_PP_LOCAL_R(201)
+ MSGPACK_PP_LOCAL_MACRO(201)
+# endif
+# if MSGPACK_PP_LOCAL_R(200)
+ MSGPACK_PP_LOCAL_MACRO(200)
+# endif
+# if MSGPACK_PP_LOCAL_R(199)
+ MSGPACK_PP_LOCAL_MACRO(199)
+# endif
+# if MSGPACK_PP_LOCAL_R(198)
+ MSGPACK_PP_LOCAL_MACRO(198)
+# endif
+# if MSGPACK_PP_LOCAL_R(197)
+ MSGPACK_PP_LOCAL_MACRO(197)
+# endif
+# if MSGPACK_PP_LOCAL_R(196)
+ MSGPACK_PP_LOCAL_MACRO(196)
+# endif
+# if MSGPACK_PP_LOCAL_R(195)
+ MSGPACK_PP_LOCAL_MACRO(195)
+# endif
+# if MSGPACK_PP_LOCAL_R(194)
+ MSGPACK_PP_LOCAL_MACRO(194)
+# endif
+# if MSGPACK_PP_LOCAL_R(193)
+ MSGPACK_PP_LOCAL_MACRO(193)
+# endif
+# if MSGPACK_PP_LOCAL_R(192)
+ MSGPACK_PP_LOCAL_MACRO(192)
+# endif
+# if MSGPACK_PP_LOCAL_R(191)
+ MSGPACK_PP_LOCAL_MACRO(191)
+# endif
+# if MSGPACK_PP_LOCAL_R(190)
+ MSGPACK_PP_LOCAL_MACRO(190)
+# endif
+# if MSGPACK_PP_LOCAL_R(189)
+ MSGPACK_PP_LOCAL_MACRO(189)
+# endif
+# if MSGPACK_PP_LOCAL_R(188)
+ MSGPACK_PP_LOCAL_MACRO(188)
+# endif
+# if MSGPACK_PP_LOCAL_R(187)
+ MSGPACK_PP_LOCAL_MACRO(187)
+# endif
+# if MSGPACK_PP_LOCAL_R(186)
+ MSGPACK_PP_LOCAL_MACRO(186)
+# endif
+# if MSGPACK_PP_LOCAL_R(185)
+ MSGPACK_PP_LOCAL_MACRO(185)
+# endif
+# if MSGPACK_PP_LOCAL_R(184)
+ MSGPACK_PP_LOCAL_MACRO(184)
+# endif
+# if MSGPACK_PP_LOCAL_R(183)
+ MSGPACK_PP_LOCAL_MACRO(183)
+# endif
+# if MSGPACK_PP_LOCAL_R(182)
+ MSGPACK_PP_LOCAL_MACRO(182)
+# endif
+# if MSGPACK_PP_LOCAL_R(181)
+ MSGPACK_PP_LOCAL_MACRO(181)
+# endif
+# if MSGPACK_PP_LOCAL_R(180)
+ MSGPACK_PP_LOCAL_MACRO(180)
+# endif
+# if MSGPACK_PP_LOCAL_R(179)
+ MSGPACK_PP_LOCAL_MACRO(179)
+# endif
+# if MSGPACK_PP_LOCAL_R(178)
+ MSGPACK_PP_LOCAL_MACRO(178)
+# endif
+# if MSGPACK_PP_LOCAL_R(177)
+ MSGPACK_PP_LOCAL_MACRO(177)
+# endif
+# if MSGPACK_PP_LOCAL_R(176)
+ MSGPACK_PP_LOCAL_MACRO(176)
+# endif
+# if MSGPACK_PP_LOCAL_R(175)
+ MSGPACK_PP_LOCAL_MACRO(175)
+# endif
+# if MSGPACK_PP_LOCAL_R(174)
+ MSGPACK_PP_LOCAL_MACRO(174)
+# endif
+# if MSGPACK_PP_LOCAL_R(173)
+ MSGPACK_PP_LOCAL_MACRO(173)
+# endif
+# if MSGPACK_PP_LOCAL_R(172)
+ MSGPACK_PP_LOCAL_MACRO(172)
+# endif
+# if MSGPACK_PP_LOCAL_R(171)
+ MSGPACK_PP_LOCAL_MACRO(171)
+# endif
+# if MSGPACK_PP_LOCAL_R(170)
+ MSGPACK_PP_LOCAL_MACRO(170)
+# endif
+# if MSGPACK_PP_LOCAL_R(169)
+ MSGPACK_PP_LOCAL_MACRO(169)
+# endif
+# if MSGPACK_PP_LOCAL_R(168)
+ MSGPACK_PP_LOCAL_MACRO(168)
+# endif
+# if MSGPACK_PP_LOCAL_R(167)
+ MSGPACK_PP_LOCAL_MACRO(167)
+# endif
+# if MSGPACK_PP_LOCAL_R(166)
+ MSGPACK_PP_LOCAL_MACRO(166)
+# endif
+# if MSGPACK_PP_LOCAL_R(165)
+ MSGPACK_PP_LOCAL_MACRO(165)
+# endif
+# if MSGPACK_PP_LOCAL_R(164)
+ MSGPACK_PP_LOCAL_MACRO(164)
+# endif
+# if MSGPACK_PP_LOCAL_R(163)
+ MSGPACK_PP_LOCAL_MACRO(163)
+# endif
+# if MSGPACK_PP_LOCAL_R(162)
+ MSGPACK_PP_LOCAL_MACRO(162)
+# endif
+# if MSGPACK_PP_LOCAL_R(161)
+ MSGPACK_PP_LOCAL_MACRO(161)
+# endif
+# if MSGPACK_PP_LOCAL_R(160)
+ MSGPACK_PP_LOCAL_MACRO(160)
+# endif
+# if MSGPACK_PP_LOCAL_R(159)
+ MSGPACK_PP_LOCAL_MACRO(159)
+# endif
+# if MSGPACK_PP_LOCAL_R(158)
+ MSGPACK_PP_LOCAL_MACRO(158)
+# endif
+# if MSGPACK_PP_LOCAL_R(157)
+ MSGPACK_PP_LOCAL_MACRO(157)
+# endif
+# if MSGPACK_PP_LOCAL_R(156)
+ MSGPACK_PP_LOCAL_MACRO(156)
+# endif
+# if MSGPACK_PP_LOCAL_R(155)
+ MSGPACK_PP_LOCAL_MACRO(155)
+# endif
+# if MSGPACK_PP_LOCAL_R(154)
+ MSGPACK_PP_LOCAL_MACRO(154)
+# endif
+# if MSGPACK_PP_LOCAL_R(153)
+ MSGPACK_PP_LOCAL_MACRO(153)
+# endif
+# if MSGPACK_PP_LOCAL_R(152)
+ MSGPACK_PP_LOCAL_MACRO(152)
+# endif
+# if MSGPACK_PP_LOCAL_R(151)
+ MSGPACK_PP_LOCAL_MACRO(151)
+# endif
+# if MSGPACK_PP_LOCAL_R(150)
+ MSGPACK_PP_LOCAL_MACRO(150)
+# endif
+# if MSGPACK_PP_LOCAL_R(149)
+ MSGPACK_PP_LOCAL_MACRO(149)
+# endif
+# if MSGPACK_PP_LOCAL_R(148)
+ MSGPACK_PP_LOCAL_MACRO(148)
+# endif
+# if MSGPACK_PP_LOCAL_R(147)
+ MSGPACK_PP_LOCAL_MACRO(147)
+# endif
+# if MSGPACK_PP_LOCAL_R(146)
+ MSGPACK_PP_LOCAL_MACRO(146)
+# endif
+# if MSGPACK_PP_LOCAL_R(145)
+ MSGPACK_PP_LOCAL_MACRO(145)
+# endif
+# if MSGPACK_PP_LOCAL_R(144)
+ MSGPACK_PP_LOCAL_MACRO(144)
+# endif
+# if MSGPACK_PP_LOCAL_R(143)
+ MSGPACK_PP_LOCAL_MACRO(143)
+# endif
+# if MSGPACK_PP_LOCAL_R(142)
+ MSGPACK_PP_LOCAL_MACRO(142)
+# endif
+# if MSGPACK_PP_LOCAL_R(141)
+ MSGPACK_PP_LOCAL_MACRO(141)
+# endif
+# if MSGPACK_PP_LOCAL_R(140)
+ MSGPACK_PP_LOCAL_MACRO(140)
+# endif
+# if MSGPACK_PP_LOCAL_R(139)
+ MSGPACK_PP_LOCAL_MACRO(139)
+# endif
+# if MSGPACK_PP_LOCAL_R(138)
+ MSGPACK_PP_LOCAL_MACRO(138)
+# endif
+# if MSGPACK_PP_LOCAL_R(137)
+ MSGPACK_PP_LOCAL_MACRO(137)
+# endif
+# if MSGPACK_PP_LOCAL_R(136)
+ MSGPACK_PP_LOCAL_MACRO(136)
+# endif
+# if MSGPACK_PP_LOCAL_R(135)
+ MSGPACK_PP_LOCAL_MACRO(135)
+# endif
+# if MSGPACK_PP_LOCAL_R(134)
+ MSGPACK_PP_LOCAL_MACRO(134)
+# endif
+# if MSGPACK_PP_LOCAL_R(133)
+ MSGPACK_PP_LOCAL_MACRO(133)
+# endif
+# if MSGPACK_PP_LOCAL_R(132)
+ MSGPACK_PP_LOCAL_MACRO(132)
+# endif
+# if MSGPACK_PP_LOCAL_R(131)
+ MSGPACK_PP_LOCAL_MACRO(131)
+# endif
+# if MSGPACK_PP_LOCAL_R(130)
+ MSGPACK_PP_LOCAL_MACRO(130)
+# endif
+# if MSGPACK_PP_LOCAL_R(129)
+ MSGPACK_PP_LOCAL_MACRO(129)
+# endif
+# if MSGPACK_PP_LOCAL_R(128)
+ MSGPACK_PP_LOCAL_MACRO(128)
+# endif
+# if MSGPACK_PP_LOCAL_R(127)
+ MSGPACK_PP_LOCAL_MACRO(127)
+# endif
+# if MSGPACK_PP_LOCAL_R(126)
+ MSGPACK_PP_LOCAL_MACRO(126)
+# endif
+# if MSGPACK_PP_LOCAL_R(125)
+ MSGPACK_PP_LOCAL_MACRO(125)
+# endif
+# if MSGPACK_PP_LOCAL_R(124)
+ MSGPACK_PP_LOCAL_MACRO(124)
+# endif
+# if MSGPACK_PP_LOCAL_R(123)
+ MSGPACK_PP_LOCAL_MACRO(123)
+# endif
+# if MSGPACK_PP_LOCAL_R(122)
+ MSGPACK_PP_LOCAL_MACRO(122)
+# endif
+# if MSGPACK_PP_LOCAL_R(121)
+ MSGPACK_PP_LOCAL_MACRO(121)
+# endif
+# if MSGPACK_PP_LOCAL_R(120)
+ MSGPACK_PP_LOCAL_MACRO(120)
+# endif
+# if MSGPACK_PP_LOCAL_R(119)
+ MSGPACK_PP_LOCAL_MACRO(119)
+# endif
+# if MSGPACK_PP_LOCAL_R(118)
+ MSGPACK_PP_LOCAL_MACRO(118)
+# endif
+# if MSGPACK_PP_LOCAL_R(117)
+ MSGPACK_PP_LOCAL_MACRO(117)
+# endif
+# if MSGPACK_PP_LOCAL_R(116)
+ MSGPACK_PP_LOCAL_MACRO(116)
+# endif
+# if MSGPACK_PP_LOCAL_R(115)
+ MSGPACK_PP_LOCAL_MACRO(115)
+# endif
+# if MSGPACK_PP_LOCAL_R(114)
+ MSGPACK_PP_LOCAL_MACRO(114)
+# endif
+# if MSGPACK_PP_LOCAL_R(113)
+ MSGPACK_PP_LOCAL_MACRO(113)
+# endif
+# if MSGPACK_PP_LOCAL_R(112)
+ MSGPACK_PP_LOCAL_MACRO(112)
+# endif
+# if MSGPACK_PP_LOCAL_R(111)
+ MSGPACK_PP_LOCAL_MACRO(111)
+# endif
+# if MSGPACK_PP_LOCAL_R(110)
+ MSGPACK_PP_LOCAL_MACRO(110)
+# endif
+# if MSGPACK_PP_LOCAL_R(109)
+ MSGPACK_PP_LOCAL_MACRO(109)
+# endif
+# if MSGPACK_PP_LOCAL_R(108)
+ MSGPACK_PP_LOCAL_MACRO(108)
+# endif
+# if MSGPACK_PP_LOCAL_R(107)
+ MSGPACK_PP_LOCAL_MACRO(107)
+# endif
+# if MSGPACK_PP_LOCAL_R(106)
+ MSGPACK_PP_LOCAL_MACRO(106)
+# endif
+# if MSGPACK_PP_LOCAL_R(105)
+ MSGPACK_PP_LOCAL_MACRO(105)
+# endif
+# if MSGPACK_PP_LOCAL_R(104)
+ MSGPACK_PP_LOCAL_MACRO(104)
+# endif
+# if MSGPACK_PP_LOCAL_R(103)
+ MSGPACK_PP_LOCAL_MACRO(103)
+# endif
+# if MSGPACK_PP_LOCAL_R(102)
+ MSGPACK_PP_LOCAL_MACRO(102)
+# endif
+# if MSGPACK_PP_LOCAL_R(101)
+ MSGPACK_PP_LOCAL_MACRO(101)
+# endif
+# if MSGPACK_PP_LOCAL_R(100)
+ MSGPACK_PP_LOCAL_MACRO(100)
+# endif
+# if MSGPACK_PP_LOCAL_R(99)
+ MSGPACK_PP_LOCAL_MACRO(99)
+# endif
+# if MSGPACK_PP_LOCAL_R(98)
+ MSGPACK_PP_LOCAL_MACRO(98)
+# endif
+# if MSGPACK_PP_LOCAL_R(97)
+ MSGPACK_PP_LOCAL_MACRO(97)
+# endif
+# if MSGPACK_PP_LOCAL_R(96)
+ MSGPACK_PP_LOCAL_MACRO(96)
+# endif
+# if MSGPACK_PP_LOCAL_R(95)
+ MSGPACK_PP_LOCAL_MACRO(95)
+# endif
+# if MSGPACK_PP_LOCAL_R(94)
+ MSGPACK_PP_LOCAL_MACRO(94)
+# endif
+# if MSGPACK_PP_LOCAL_R(93)
+ MSGPACK_PP_LOCAL_MACRO(93)
+# endif
+# if MSGPACK_PP_LOCAL_R(92)
+ MSGPACK_PP_LOCAL_MACRO(92)
+# endif
+# if MSGPACK_PP_LOCAL_R(91)
+ MSGPACK_PP_LOCAL_MACRO(91)
+# endif
+# if MSGPACK_PP_LOCAL_R(90)
+ MSGPACK_PP_LOCAL_MACRO(90)
+# endif
+# if MSGPACK_PP_LOCAL_R(89)
+ MSGPACK_PP_LOCAL_MACRO(89)
+# endif
+# if MSGPACK_PP_LOCAL_R(88)
+ MSGPACK_PP_LOCAL_MACRO(88)
+# endif
+# if MSGPACK_PP_LOCAL_R(87)
+ MSGPACK_PP_LOCAL_MACRO(87)
+# endif
+# if MSGPACK_PP_LOCAL_R(86)
+ MSGPACK_PP_LOCAL_MACRO(86)
+# endif
+# if MSGPACK_PP_LOCAL_R(85)
+ MSGPACK_PP_LOCAL_MACRO(85)
+# endif
+# if MSGPACK_PP_LOCAL_R(84)
+ MSGPACK_PP_LOCAL_MACRO(84)
+# endif
+# if MSGPACK_PP_LOCAL_R(83)
+ MSGPACK_PP_LOCAL_MACRO(83)
+# endif
+# if MSGPACK_PP_LOCAL_R(82)
+ MSGPACK_PP_LOCAL_MACRO(82)
+# endif
+# if MSGPACK_PP_LOCAL_R(81)
+ MSGPACK_PP_LOCAL_MACRO(81)
+# endif
+# if MSGPACK_PP_LOCAL_R(80)
+ MSGPACK_PP_LOCAL_MACRO(80)
+# endif
+# if MSGPACK_PP_LOCAL_R(79)
+ MSGPACK_PP_LOCAL_MACRO(79)
+# endif
+# if MSGPACK_PP_LOCAL_R(78)
+ MSGPACK_PP_LOCAL_MACRO(78)
+# endif
+# if MSGPACK_PP_LOCAL_R(77)
+ MSGPACK_PP_LOCAL_MACRO(77)
+# endif
+# if MSGPACK_PP_LOCAL_R(76)
+ MSGPACK_PP_LOCAL_MACRO(76)
+# endif
+# if MSGPACK_PP_LOCAL_R(75)
+ MSGPACK_PP_LOCAL_MACRO(75)
+# endif
+# if MSGPACK_PP_LOCAL_R(74)
+ MSGPACK_PP_LOCAL_MACRO(74)
+# endif
+# if MSGPACK_PP_LOCAL_R(73)
+ MSGPACK_PP_LOCAL_MACRO(73)
+# endif
+# if MSGPACK_PP_LOCAL_R(72)
+ MSGPACK_PP_LOCAL_MACRO(72)
+# endif
+# if MSGPACK_PP_LOCAL_R(71)
+ MSGPACK_PP_LOCAL_MACRO(71)
+# endif
+# if MSGPACK_PP_LOCAL_R(70)
+ MSGPACK_PP_LOCAL_MACRO(70)
+# endif
+# if MSGPACK_PP_LOCAL_R(69)
+ MSGPACK_PP_LOCAL_MACRO(69)
+# endif
+# if MSGPACK_PP_LOCAL_R(68)
+ MSGPACK_PP_LOCAL_MACRO(68)
+# endif
+# if MSGPACK_PP_LOCAL_R(67)
+ MSGPACK_PP_LOCAL_MACRO(67)
+# endif
+# if MSGPACK_PP_LOCAL_R(66)
+ MSGPACK_PP_LOCAL_MACRO(66)
+# endif
+# if MSGPACK_PP_LOCAL_R(65)
+ MSGPACK_PP_LOCAL_MACRO(65)
+# endif
+# if MSGPACK_PP_LOCAL_R(64)
+ MSGPACK_PP_LOCAL_MACRO(64)
+# endif
+# if MSGPACK_PP_LOCAL_R(63)
+ MSGPACK_PP_LOCAL_MACRO(63)
+# endif
+# if MSGPACK_PP_LOCAL_R(62)
+ MSGPACK_PP_LOCAL_MACRO(62)
+# endif
+# if MSGPACK_PP_LOCAL_R(61)
+ MSGPACK_PP_LOCAL_MACRO(61)
+# endif
+# if MSGPACK_PP_LOCAL_R(60)
+ MSGPACK_PP_LOCAL_MACRO(60)
+# endif
+# if MSGPACK_PP_LOCAL_R(59)
+ MSGPACK_PP_LOCAL_MACRO(59)
+# endif
+# if MSGPACK_PP_LOCAL_R(58)
+ MSGPACK_PP_LOCAL_MACRO(58)
+# endif
+# if MSGPACK_PP_LOCAL_R(57)
+ MSGPACK_PP_LOCAL_MACRO(57)
+# endif
+# if MSGPACK_PP_LOCAL_R(56)
+ MSGPACK_PP_LOCAL_MACRO(56)
+# endif
+# if MSGPACK_PP_LOCAL_R(55)
+ MSGPACK_PP_LOCAL_MACRO(55)
+# endif
+# if MSGPACK_PP_LOCAL_R(54)
+ MSGPACK_PP_LOCAL_MACRO(54)
+# endif
+# if MSGPACK_PP_LOCAL_R(53)
+ MSGPACK_PP_LOCAL_MACRO(53)
+# endif
+# if MSGPACK_PP_LOCAL_R(52)
+ MSGPACK_PP_LOCAL_MACRO(52)
+# endif
+# if MSGPACK_PP_LOCAL_R(51)
+ MSGPACK_PP_LOCAL_MACRO(51)
+# endif
+# if MSGPACK_PP_LOCAL_R(50)
+ MSGPACK_PP_LOCAL_MACRO(50)
+# endif
+# if MSGPACK_PP_LOCAL_R(49)
+ MSGPACK_PP_LOCAL_MACRO(49)
+# endif
+# if MSGPACK_PP_LOCAL_R(48)
+ MSGPACK_PP_LOCAL_MACRO(48)
+# endif
+# if MSGPACK_PP_LOCAL_R(47)
+ MSGPACK_PP_LOCAL_MACRO(47)
+# endif
+# if MSGPACK_PP_LOCAL_R(46)
+ MSGPACK_PP_LOCAL_MACRO(46)
+# endif
+# if MSGPACK_PP_LOCAL_R(45)
+ MSGPACK_PP_LOCAL_MACRO(45)
+# endif
+# if MSGPACK_PP_LOCAL_R(44)
+ MSGPACK_PP_LOCAL_MACRO(44)
+# endif
+# if MSGPACK_PP_LOCAL_R(43)
+ MSGPACK_PP_LOCAL_MACRO(43)
+# endif
+# if MSGPACK_PP_LOCAL_R(42)
+ MSGPACK_PP_LOCAL_MACRO(42)
+# endif
+# if MSGPACK_PP_LOCAL_R(41)
+ MSGPACK_PP_LOCAL_MACRO(41)
+# endif
+# if MSGPACK_PP_LOCAL_R(40)
+ MSGPACK_PP_LOCAL_MACRO(40)
+# endif
+# if MSGPACK_PP_LOCAL_R(39)
+ MSGPACK_PP_LOCAL_MACRO(39)
+# endif
+# if MSGPACK_PP_LOCAL_R(38)
+ MSGPACK_PP_LOCAL_MACRO(38)
+# endif
+# if MSGPACK_PP_LOCAL_R(37)
+ MSGPACK_PP_LOCAL_MACRO(37)
+# endif
+# if MSGPACK_PP_LOCAL_R(36)
+ MSGPACK_PP_LOCAL_MACRO(36)
+# endif
+# if MSGPACK_PP_LOCAL_R(35)
+ MSGPACK_PP_LOCAL_MACRO(35)
+# endif
+# if MSGPACK_PP_LOCAL_R(34)
+ MSGPACK_PP_LOCAL_MACRO(34)
+# endif
+# if MSGPACK_PP_LOCAL_R(33)
+ MSGPACK_PP_LOCAL_MACRO(33)
+# endif
+# if MSGPACK_PP_LOCAL_R(32)
+ MSGPACK_PP_LOCAL_MACRO(32)
+# endif
+# if MSGPACK_PP_LOCAL_R(31)
+ MSGPACK_PP_LOCAL_MACRO(31)
+# endif
+# if MSGPACK_PP_LOCAL_R(30)
+ MSGPACK_PP_LOCAL_MACRO(30)
+# endif
+# if MSGPACK_PP_LOCAL_R(29)
+ MSGPACK_PP_LOCAL_MACRO(29)
+# endif
+# if MSGPACK_PP_LOCAL_R(28)
+ MSGPACK_PP_LOCAL_MACRO(28)
+# endif
+# if MSGPACK_PP_LOCAL_R(27)
+ MSGPACK_PP_LOCAL_MACRO(27)
+# endif
+# if MSGPACK_PP_LOCAL_R(26)
+ MSGPACK_PP_LOCAL_MACRO(26)
+# endif
+# if MSGPACK_PP_LOCAL_R(25)
+ MSGPACK_PP_LOCAL_MACRO(25)
+# endif
+# if MSGPACK_PP_LOCAL_R(24)
+ MSGPACK_PP_LOCAL_MACRO(24)
+# endif
+# if MSGPACK_PP_LOCAL_R(23)
+ MSGPACK_PP_LOCAL_MACRO(23)
+# endif
+# if MSGPACK_PP_LOCAL_R(22)
+ MSGPACK_PP_LOCAL_MACRO(22)
+# endif
+# if MSGPACK_PP_LOCAL_R(21)
+ MSGPACK_PP_LOCAL_MACRO(21)
+# endif
+# if MSGPACK_PP_LOCAL_R(20)
+ MSGPACK_PP_LOCAL_MACRO(20)
+# endif
+# if MSGPACK_PP_LOCAL_R(19)
+ MSGPACK_PP_LOCAL_MACRO(19)
+# endif
+# if MSGPACK_PP_LOCAL_R(18)
+ MSGPACK_PP_LOCAL_MACRO(18)
+# endif
+# if MSGPACK_PP_LOCAL_R(17)
+ MSGPACK_PP_LOCAL_MACRO(17)
+# endif
+# if MSGPACK_PP_LOCAL_R(16)
+ MSGPACK_PP_LOCAL_MACRO(16)
+# endif
+# if MSGPACK_PP_LOCAL_R(15)
+ MSGPACK_PP_LOCAL_MACRO(15)
+# endif
+# if MSGPACK_PP_LOCAL_R(14)
+ MSGPACK_PP_LOCAL_MACRO(14)
+# endif
+# if MSGPACK_PP_LOCAL_R(13)
+ MSGPACK_PP_LOCAL_MACRO(13)
+# endif
+# if MSGPACK_PP_LOCAL_R(12)
+ MSGPACK_PP_LOCAL_MACRO(12)
+# endif
+# if MSGPACK_PP_LOCAL_R(11)
+ MSGPACK_PP_LOCAL_MACRO(11)
+# endif
+# if MSGPACK_PP_LOCAL_R(10)
+ MSGPACK_PP_LOCAL_MACRO(10)
+# endif
+# if MSGPACK_PP_LOCAL_R(9)
+ MSGPACK_PP_LOCAL_MACRO(9)
+# endif
+# if MSGPACK_PP_LOCAL_R(8)
+ MSGPACK_PP_LOCAL_MACRO(8)
+# endif
+# if MSGPACK_PP_LOCAL_R(7)
+ MSGPACK_PP_LOCAL_MACRO(7)
+# endif
+# if MSGPACK_PP_LOCAL_R(6)
+ MSGPACK_PP_LOCAL_MACRO(6)
+# endif
+# if MSGPACK_PP_LOCAL_R(5)
+ MSGPACK_PP_LOCAL_MACRO(5)
+# endif
+# if MSGPACK_PP_LOCAL_R(4)
+ MSGPACK_PP_LOCAL_MACRO(4)
+# endif
+# if MSGPACK_PP_LOCAL_R(3)
+ MSGPACK_PP_LOCAL_MACRO(3)
+# endif
+# if MSGPACK_PP_LOCAL_R(2)
+ MSGPACK_PP_LOCAL_MACRO(2)
+# endif
+# if MSGPACK_PP_LOCAL_R(1)
+ MSGPACK_PP_LOCAL_MACRO(1)
+# endif
+# if MSGPACK_PP_LOCAL_R(0)
+ MSGPACK_PP_LOCAL_MACRO(0)
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/self.hpp b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/self.hpp
new file mode 100644
index 0000000000..5564360313
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/self.hpp
@@ -0,0 +1,21 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if !defined(MSGPACK_PP_INDIRECT_SELF)
+# error MSGPACK_PP_ERROR: no indirect file to include
+# endif
+#
+# define MSGPACK_PP_IS_SELFISH 1
+#
+# include MSGPACK_PP_INDIRECT_SELF
+#
+# undef MSGPACK_PP_IS_SELFISH
+# undef MSGPACK_PP_INDIRECT_SELF
diff --git a/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/start.hpp b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/start.hpp
new file mode 100644
index 0000000000..2aeb2600ef
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/iteration/detail/start.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <msgpack/preprocessor/slot/detail/shared.hpp>
+#
+# undef MSGPACK_PP_LOCAL_SE
+#
+# undef MSGPACK_PP_LOCAL_SE_DIGIT_1
+# undef MSGPACK_PP_LOCAL_SE_DIGIT_2
+# undef MSGPACK_PP_LOCAL_SE_DIGIT_3
+# undef MSGPACK_PP_LOCAL_SE_DIGIT_4
+# undef MSGPACK_PP_LOCAL_SE_DIGIT_5
+# undef MSGPACK_PP_LOCAL_SE_DIGIT_6
+# undef MSGPACK_PP_LOCAL_SE_DIGIT_7
+# undef MSGPACK_PP_LOCAL_SE_DIGIT_8
+# undef MSGPACK_PP_LOCAL_SE_DIGIT_9
+# undef MSGPACK_PP_LOCAL_SE_DIGIT_10
+#
+# if MSGPACK_PP_SLOT_TEMP_3 == 0
+# define MSGPACK_PP_LOCAL_SE_DIGIT_3 0
+# elif MSGPACK_PP_SLOT_TEMP_3 == 1
+# define MSGPACK_PP_LOCAL_SE_DIGIT_3 1
+# elif MSGPACK_PP_SLOT_TEMP_3 == 2
+# define MSGPACK_PP_LOCAL_SE_DIGIT_3 2
+# elif MSGPACK_PP_SLOT_TEMP_3 == 3
+# define MSGPACK_PP_LOCAL_SE_DIGIT_3 3
+# elif MSGPACK_PP_SLOT_TEMP_3 == 4
+# define MSGPACK_PP_LOCAL_SE_DIGIT_3 4
+# elif MSGPACK_PP_SLOT_TEMP_3 == 5
+# define MSGPACK_PP_LOCAL_SE_DIGIT_3 5
+# elif MSGPACK_PP_SLOT_TEMP_3 == 6
+# define MSGPACK_PP_LOCAL_SE_DIGIT_3 6
+# elif MSGPACK_PP_SLOT_TEMP_3 == 7
+# define MSGPACK_PP_LOCAL_SE_DIGIT_3 7
+# elif MSGPACK_PP_SLOT_TEMP_3 == 8
+# define MSGPACK_PP_LOCAL_SE_DIGIT_3 8
+# elif MSGPACK_PP_SLOT_TEMP_3 == 9
+# define MSGPACK_PP_LOCAL_SE_DIGIT_3 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_2 == 0
+# define MSGPACK_PP_LOCAL_SE_DIGIT_2 0
+# elif MSGPACK_PP_SLOT_TEMP_2 == 1
+# define MSGPACK_PP_LOCAL_SE_DIGIT_2 1
+# elif MSGPACK_PP_SLOT_TEMP_2 == 2
+# define MSGPACK_PP_LOCAL_SE_DIGIT_2 2
+# elif MSGPACK_PP_SLOT_TEMP_2 == 3
+# define MSGPACK_PP_LOCAL_SE_DIGIT_2 3
+# elif MSGPACK_PP_SLOT_TEMP_2 == 4
+# define MSGPACK_PP_LOCAL_SE_DIGIT_2 4
+# elif MSGPACK_PP_SLOT_TEMP_2 == 5
+# define MSGPACK_PP_LOCAL_SE_DIGIT_2 5
+# elif MSGPACK_PP_SLOT_TEMP_2 == 6
+# define MSGPACK_PP_LOCAL_SE_DIGIT_2 6
+# elif MSGPACK_PP_SLOT_TEMP_2 == 7
+# define MSGPACK_PP_LOCAL_SE_DIGIT_2 7
+# elif MSGPACK_PP_SLOT_TEMP_2 == 8
+# define MSGPACK_PP_LOCAL_SE_DIGIT_2 8
+# elif MSGPACK_PP_SLOT_TEMP_2 == 9
+# define MSGPACK_PP_LOCAL_SE_DIGIT_2 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_1 == 0
+# define MSGPACK_PP_LOCAL_SE_DIGIT_1 0
+# elif MSGPACK_PP_SLOT_TEMP_1 == 1
+# define MSGPACK_PP_LOCAL_SE_DIGIT_1 1
+# elif MSGPACK_PP_SLOT_TEMP_1 == 2
+# define MSGPACK_PP_LOCAL_SE_DIGIT_1 2
+# elif MSGPACK_PP_SLOT_TEMP_1 == 3
+# define MSGPACK_PP_LOCAL_SE_DIGIT_1 3
+# elif MSGPACK_PP_SLOT_TEMP_1 == 4
+# define MSGPACK_PP_LOCAL_SE_DIGIT_1 4
+# elif MSGPACK_PP_SLOT_TEMP_1 == 5
+# define MSGPACK_PP_LOCAL_SE_DIGIT_1 5
+# elif MSGPACK_PP_SLOT_TEMP_1 == 6
+# define MSGPACK_PP_LOCAL_SE_DIGIT_1 6
+# elif MSGPACK_PP_SLOT_TEMP_1 == 7
+# define MSGPACK_PP_LOCAL_SE_DIGIT_1 7
+# elif MSGPACK_PP_SLOT_TEMP_1 == 8
+# define MSGPACK_PP_LOCAL_SE_DIGIT_1 8
+# elif MSGPACK_PP_SLOT_TEMP_1 == 9
+# define MSGPACK_PP_LOCAL_SE_DIGIT_1 9
+# endif
+#
+# if MSGPACK_PP_LOCAL_SE_DIGIT_3
+# define MSGPACK_PP_LOCAL_SE() MSGPACK_PP_SLOT_CC_3(MSGPACK_PP_LOCAL_SE_DIGIT_3, MSGPACK_PP_LOCAL_SE_DIGIT_2, MSGPACK_PP_LOCAL_SE_DIGIT_1)
+# elif MSGPACK_PP_LOCAL_SE_DIGIT_2
+# define MSGPACK_PP_LOCAL_SE() MSGPACK_PP_SLOT_CC_2(MSGPACK_PP_LOCAL_SE_DIGIT_2, MSGPACK_PP_LOCAL_SE_DIGIT_1)
+# else
+# define MSGPACK_PP_LOCAL_SE() MSGPACK_PP_LOCAL_SE_DIGIT_1
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/iteration/iterate.hpp b/third_party/msgpack/include/msgpack/preprocessor/iteration/iterate.hpp
new file mode 100644
index 0000000000..a57eddfd91
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/iteration/iterate.hpp
@@ -0,0 +1,82 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ITERATION_ITERATE_HPP
+# define MSGPACK_PREPROCESSOR_ITERATION_ITERATE_HPP
+#
+# include <msgpack/preprocessor/arithmetic/dec.hpp>
+# include <msgpack/preprocessor/arithmetic/inc.hpp>
+# include <msgpack/preprocessor/array/elem.hpp>
+# include <msgpack/preprocessor/array/size.hpp>
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/slot/slot.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+#
+# /* MSGPACK_PP_ITERATION_DEPTH */
+#
+# define MSGPACK_PP_ITERATION_DEPTH() 0
+#
+# /* MSGPACK_PP_ITERATION */
+#
+# define MSGPACK_PP_ITERATION() MSGPACK_PP_CAT(MSGPACK_PP_ITERATION_, MSGPACK_PP_ITERATION_DEPTH())
+#
+# /* MSGPACK_PP_ITERATION_START && MSGPACK_PP_ITERATION_FINISH */
+#
+# define MSGPACK_PP_ITERATION_START() MSGPACK_PP_CAT(MSGPACK_PP_ITERATION_START_, MSGPACK_PP_ITERATION_DEPTH())
+# define MSGPACK_PP_ITERATION_FINISH() MSGPACK_PP_CAT(MSGPACK_PP_ITERATION_FINISH_, MSGPACK_PP_ITERATION_DEPTH())
+#
+# /* MSGPACK_PP_ITERATION_FLAGS */
+#
+# define MSGPACK_PP_ITERATION_FLAGS() (MSGPACK_PP_CAT(MSGPACK_PP_ITERATION_FLAGS_, MSGPACK_PP_ITERATION_DEPTH())())
+#
+# /* MSGPACK_PP_FRAME_ITERATION */
+#
+# define MSGPACK_PP_FRAME_ITERATION(i) MSGPACK_PP_CAT(MSGPACK_PP_ITERATION_, i)
+#
+# /* MSGPACK_PP_FRAME_START && MSGPACK_PP_FRAME_FINISH */
+#
+# define MSGPACK_PP_FRAME_START(i) MSGPACK_PP_CAT(MSGPACK_PP_ITERATION_START_, i)
+# define MSGPACK_PP_FRAME_FINISH(i) MSGPACK_PP_CAT(MSGPACK_PP_ITERATION_FINISH_, i)
+#
+# /* MSGPACK_PP_FRAME_FLAGS */
+#
+# define MSGPACK_PP_FRAME_FLAGS(i) (MSGPACK_PP_CAT(MSGPACK_PP_ITERATION_FLAGS_, i)())
+#
+# /* MSGPACK_PP_RELATIVE_ITERATION */
+#
+# define MSGPACK_PP_RELATIVE_ITERATION(i) MSGPACK_PP_CAT(MSGPACK_PP_RELATIVE_, i)(MSGPACK_PP_ITERATION_)
+#
+# define MSGPACK_PP_RELATIVE_0(m) MSGPACK_PP_CAT(m, MSGPACK_PP_ITERATION_DEPTH())
+# define MSGPACK_PP_RELATIVE_1(m) MSGPACK_PP_CAT(m, MSGPACK_PP_DEC(MSGPACK_PP_ITERATION_DEPTH()))
+# define MSGPACK_PP_RELATIVE_2(m) MSGPACK_PP_CAT(m, MSGPACK_PP_DEC(MSGPACK_PP_DEC(MSGPACK_PP_ITERATION_DEPTH())))
+# define MSGPACK_PP_RELATIVE_3(m) MSGPACK_PP_CAT(m, MSGPACK_PP_DEC(MSGPACK_PP_DEC(MSGPACK_PP_DEC(MSGPACK_PP_ITERATION_DEPTH()))))
+# define MSGPACK_PP_RELATIVE_4(m) MSGPACK_PP_CAT(m, MSGPACK_PP_DEC(MSGPACK_PP_DEC(MSGPACK_PP_DEC(MSGPACK_PP_DEC(MSGPACK_PP_ITERATION_DEPTH())))))
+#
+# /* MSGPACK_PP_RELATIVE_START && MSGPACK_PP_RELATIVE_FINISH */
+#
+# define MSGPACK_PP_RELATIVE_START(i) MSGPACK_PP_CAT(MSGPACK_PP_RELATIVE_, i)(MSGPACK_PP_ITERATION_START_)
+# define MSGPACK_PP_RELATIVE_FINISH(i) MSGPACK_PP_CAT(MSGPACK_PP_RELATIVE_, i)(MSGPACK_PP_ITERATION_FINISH_)
+#
+# /* MSGPACK_PP_RELATIVE_FLAGS */
+#
+# define MSGPACK_PP_RELATIVE_FLAGS(i) (MSGPACK_PP_CAT(MSGPACK_PP_RELATIVE_, i)(MSGPACK_PP_ITERATION_FLAGS_)())
+#
+# /* MSGPACK_PP_ITERATE */
+#
+# define MSGPACK_PP_ITERATE() MSGPACK_PP_CAT(MSGPACK_PP_ITERATE_, MSGPACK_PP_INC(MSGPACK_PP_ITERATION_DEPTH()))
+#
+# define MSGPACK_PP_ITERATE_1 <msgpack/preprocessor/iteration/detail/iter/forward1.hpp>
+# define MSGPACK_PP_ITERATE_2 <msgpack/preprocessor/iteration/detail/iter/forward2.hpp>
+# define MSGPACK_PP_ITERATE_3 <msgpack/preprocessor/iteration/detail/iter/forward3.hpp>
+# define MSGPACK_PP_ITERATE_4 <msgpack/preprocessor/iteration/detail/iter/forward4.hpp>
+# define MSGPACK_PP_ITERATE_5 <msgpack/preprocessor/iteration/detail/iter/forward5.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/iteration/local.hpp b/third_party/msgpack/include/msgpack/preprocessor/iteration/local.hpp
new file mode 100644
index 0000000000..587e8f9832
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/iteration/local.hpp
@@ -0,0 +1,26 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ITERATION_LOCAL_HPP
+# define MSGPACK_PREPROCESSOR_ITERATION_LOCAL_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/slot/slot.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+#
+# /* MSGPACK_PP_LOCAL_ITERATE */
+#
+# define MSGPACK_PP_LOCAL_ITERATE() <msgpack/preprocessor/iteration/detail/local.hpp>
+#
+# define MSGPACK_PP_LOCAL_C(n) (MSGPACK_PP_LOCAL_S) <= n && (MSGPACK_PP_LOCAL_F) >= n
+# define MSGPACK_PP_LOCAL_R(n) (MSGPACK_PP_LOCAL_F) <= n && (MSGPACK_PP_LOCAL_S) >= n
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/iteration/self.hpp b/third_party/msgpack/include/msgpack/preprocessor/iteration/self.hpp
new file mode 100644
index 0000000000..bdb7419a7a
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/iteration/self.hpp
@@ -0,0 +1,19 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_ITERATION_SELF_HPP
+# define MSGPACK_PREPROCESSOR_ITERATION_SELF_HPP
+#
+# /* MSGPACK_PP_INCLUDE_SELF */
+#
+# define MSGPACK_PP_INCLUDE_SELF() <msgpack/preprocessor/iteration/detail/self.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/library.hpp b/third_party/msgpack/include/msgpack/preprocessor/library.hpp
new file mode 100644
index 0000000000..d9795ee72e
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/library.hpp
@@ -0,0 +1,37 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002-2011. *
+# * (C) Copyright Edward Diener 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LIBRARY_HPP
+# define MSGPACK_PREPROCESSOR_LIBRARY_HPP
+#
+# include <msgpack/preprocessor/arithmetic.hpp>
+# include <msgpack/preprocessor/array.hpp>
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/comparison.hpp>
+# include <msgpack/preprocessor/config/limits.hpp>
+# include <msgpack/preprocessor/control.hpp>
+# include <msgpack/preprocessor/debug.hpp>
+# include <msgpack/preprocessor/facilities.hpp>
+# include <msgpack/preprocessor/iteration.hpp>
+# include <msgpack/preprocessor/list.hpp>
+# include <msgpack/preprocessor/logical.hpp>
+# include <msgpack/preprocessor/punctuation.hpp>
+# include <msgpack/preprocessor/repetition.hpp>
+# include <msgpack/preprocessor/selection.hpp>
+# include <msgpack/preprocessor/seq.hpp>
+# include <msgpack/preprocessor/slot.hpp>
+# include <msgpack/preprocessor/stringize.hpp>
+# include <msgpack/preprocessor/tuple.hpp>
+# include <msgpack/preprocessor/variadic.hpp>
+# include <msgpack/preprocessor/wstringize.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/limits.hpp b/third_party/msgpack/include/msgpack/preprocessor/limits.hpp
new file mode 100644
index 0000000000..9503fb48a0
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/limits.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LIMITS_HPP
+# define MSGPACK_PREPROCESSOR_LIMITS_HPP
+#
+# include <msgpack/preprocessor/config/limits.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/list.hpp b/third_party/msgpack/include/msgpack/preprocessor/list.hpp
new file mode 100644
index 0000000000..31b3bdacac
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/list.hpp
@@ -0,0 +1,37 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LIST_HPP
+# define MSGPACK_PREPROCESSOR_LIST_HPP
+#
+# include <msgpack/preprocessor/list/adt.hpp>
+# include <msgpack/preprocessor/list/append.hpp>
+# include <msgpack/preprocessor/list/at.hpp>
+# include <msgpack/preprocessor/list/cat.hpp>
+# include <msgpack/preprocessor/list/enum.hpp>
+# include <msgpack/preprocessor/list/filter.hpp>
+# include <msgpack/preprocessor/list/first_n.hpp>
+# include <msgpack/preprocessor/list/fold_left.hpp>
+# include <msgpack/preprocessor/list/fold_right.hpp>
+# include <msgpack/preprocessor/list/for_each.hpp>
+# include <msgpack/preprocessor/list/for_each_i.hpp>
+# include <msgpack/preprocessor/list/for_each_product.hpp>
+# include <msgpack/preprocessor/list/rest_n.hpp>
+# include <msgpack/preprocessor/list/reverse.hpp>
+# include <msgpack/preprocessor/list/size.hpp>
+# include <msgpack/preprocessor/list/to_array.hpp>
+# include <msgpack/preprocessor/list/to_seq.hpp>
+# include <msgpack/preprocessor/list/to_tuple.hpp>
+# include <msgpack/preprocessor/list/transform.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/list/adt.hpp b/third_party/msgpack/include/msgpack/preprocessor/list/adt.hpp
new file mode 100644
index 0000000000..d6e4f32463
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/list/adt.hpp
@@ -0,0 +1,73 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# *
+# * See http://www.boost.org for most recent version.
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# ifndef MSGPACK_PREPROCESSOR_LIST_ADT_HPP
+# define MSGPACK_PREPROCESSOR_LIST_ADT_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/detail/is_binary.hpp>
+# include <msgpack/preprocessor/logical/compl.hpp>
+# include <msgpack/preprocessor/tuple/eat.hpp>
+#
+# /* MSGPACK_PP_LIST_CONS */
+#
+# define MSGPACK_PP_LIST_CONS(head, tail) (head, tail)
+#
+# /* MSGPACK_PP_LIST_NIL */
+#
+# define MSGPACK_PP_LIST_NIL MSGPACK_PP_NIL
+#
+# /* MSGPACK_PP_LIST_FIRST */
+#
+# define MSGPACK_PP_LIST_FIRST(list) MSGPACK_PP_LIST_FIRST_D(list)
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_LIST_FIRST_D(list) MSGPACK_PP_LIST_FIRST_I list
+# else
+# define MSGPACK_PP_LIST_FIRST_D(list) MSGPACK_PP_LIST_FIRST_I ## list
+# endif
+#
+# define MSGPACK_PP_LIST_FIRST_I(head, tail) head
+#
+# /* MSGPACK_PP_LIST_REST */
+#
+# define MSGPACK_PP_LIST_REST(list) MSGPACK_PP_LIST_REST_D(list)
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_LIST_REST_D(list) MSGPACK_PP_LIST_REST_I list
+# else
+# define MSGPACK_PP_LIST_REST_D(list) MSGPACK_PP_LIST_REST_I ## list
+# endif
+#
+# define MSGPACK_PP_LIST_REST_I(head, tail) tail
+#
+# /* MSGPACK_PP_LIST_IS_CONS */
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_BCC()
+# define MSGPACK_PP_LIST_IS_CONS(list) MSGPACK_PP_LIST_IS_CONS_D(list)
+# define MSGPACK_PP_LIST_IS_CONS_D(list) MSGPACK_PP_LIST_IS_CONS_ ## list
+# define MSGPACK_PP_LIST_IS_CONS_(head, tail) 1
+# define MSGPACK_PP_LIST_IS_CONS_MSGPACK_PP_NIL 0
+# else
+# define MSGPACK_PP_LIST_IS_CONS(list) MSGPACK_PP_IS_BINARY(list)
+# endif
+#
+# /* MSGPACK_PP_LIST_IS_NIL */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_BCC()
+# define MSGPACK_PP_LIST_IS_NIL(list) MSGPACK_PP_COMPL(MSGPACK_PP_IS_BINARY(list))
+# else
+# define MSGPACK_PP_LIST_IS_NIL(list) MSGPACK_PP_COMPL(MSGPACK_PP_LIST_IS_CONS(list))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/list/append.hpp b/third_party/msgpack/include/msgpack/preprocessor/list/append.hpp
new file mode 100644
index 0000000000..667afe770e
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/list/append.hpp
@@ -0,0 +1,40 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LIST_APPEND_HPP
+# define MSGPACK_PREPROCESSOR_LIST_APPEND_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/list/fold_right.hpp>
+#
+# /* MSGPACK_PP_LIST_APPEND */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_APPEND(a, b) MSGPACK_PP_LIST_FOLD_RIGHT(MSGPACK_PP_LIST_APPEND_O, b, a)
+# else
+# define MSGPACK_PP_LIST_APPEND(a, b) MSGPACK_PP_LIST_APPEND_I(a, b)
+# define MSGPACK_PP_LIST_APPEND_I(a, b) MSGPACK_PP_LIST_FOLD_RIGHT(MSGPACK_PP_LIST_APPEND_O, b, a)
+# endif
+#
+# define MSGPACK_PP_LIST_APPEND_O(d, s, x) (x, s)
+#
+# /* MSGPACK_PP_LIST_APPEND_D */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_APPEND_D(d, a, b) MSGPACK_PP_LIST_FOLD_RIGHT_ ## d(MSGPACK_PP_LIST_APPEND_O, b, a)
+# else
+# define MSGPACK_PP_LIST_APPEND_D(d, a, b) MSGPACK_PP_LIST_APPEND_D_I(d, a, b)
+# define MSGPACK_PP_LIST_APPEND_D_I(d, a, b) MSGPACK_PP_LIST_FOLD_RIGHT_ ## d(MSGPACK_PP_LIST_APPEND_O, b, a)
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/list/at.hpp b/third_party/msgpack/include/msgpack/preprocessor/list/at.hpp
new file mode 100644
index 0000000000..c659fcb9a4
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/list/at.hpp
@@ -0,0 +1,39 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LIST_AT_HPP
+# define MSGPACK_PREPROCESSOR_LIST_AT_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/list/adt.hpp>
+# include <msgpack/preprocessor/list/rest_n.hpp>
+#
+# /* MSGPACK_PP_LIST_AT */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_AT(list, index) MSGPACK_PP_LIST_FIRST(MSGPACK_PP_LIST_REST_N(index, list))
+# else
+# define MSGPACK_PP_LIST_AT(list, index) MSGPACK_PP_LIST_AT_I(list, index)
+# define MSGPACK_PP_LIST_AT_I(list, index) MSGPACK_PP_LIST_FIRST(MSGPACK_PP_LIST_REST_N(index, list))
+# endif
+#
+# /* MSGPACK_PP_LIST_AT_D */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_AT_D(d, list, index) MSGPACK_PP_LIST_FIRST(MSGPACK_PP_LIST_REST_N_D(d, index, list))
+# else
+# define MSGPACK_PP_LIST_AT_D(d, list, index) MSGPACK_PP_LIST_AT_D_I(d, list, index)
+# define MSGPACK_PP_LIST_AT_D_I(d, list, index) MSGPACK_PP_LIST_FIRST(MSGPACK_PP_LIST_REST_N_D(d, index, list))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/list/cat.hpp b/third_party/msgpack/include/msgpack/preprocessor/list/cat.hpp
new file mode 100644
index 0000000000..584d43e595
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/list/cat.hpp
@@ -0,0 +1,42 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LIST_CAT_HPP
+# define MSGPACK_PREPROCESSOR_LIST_CAT_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/list/adt.hpp>
+# include <msgpack/preprocessor/list/fold_left.hpp>
+#
+# /* MSGPACK_PP_LIST_CAT */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_CAT(list) MSGPACK_PP_LIST_FOLD_LEFT(MSGPACK_PP_LIST_CAT_O, MSGPACK_PP_LIST_FIRST(list), MSGPACK_PP_LIST_REST(list))
+# else
+# define MSGPACK_PP_LIST_CAT(list) MSGPACK_PP_LIST_CAT_I(list)
+# define MSGPACK_PP_LIST_CAT_I(list) MSGPACK_PP_LIST_FOLD_LEFT(MSGPACK_PP_LIST_CAT_O, MSGPACK_PP_LIST_FIRST(list), MSGPACK_PP_LIST_REST(list))
+# endif
+#
+# define MSGPACK_PP_LIST_CAT_O(d, s, x) MSGPACK_PP_CAT(s, x)
+#
+# /* MSGPACK_PP_LIST_CAT_D */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_CAT_D(d, list) MSGPACK_PP_LIST_FOLD_LEFT_ ## d(MSGPACK_PP_LIST_CAT_O, MSGPACK_PP_LIST_FIRST(list), MSGPACK_PP_LIST_REST(list))
+# else
+# define MSGPACK_PP_LIST_CAT_D(d, list) MSGPACK_PP_LIST_CAT_D_I(d, list)
+# define MSGPACK_PP_LIST_CAT_D_I(d, list) MSGPACK_PP_LIST_FOLD_LEFT_ ## d(MSGPACK_PP_LIST_CAT_O, MSGPACK_PP_LIST_FIRST(list), MSGPACK_PP_LIST_REST(list))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/list/detail/dmc/fold_left.hpp b/third_party/msgpack/include/msgpack/preprocessor/list/detail/dmc/fold_left.hpp
new file mode 100644
index 0000000000..76a89ee3e7
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/list/detail/dmc/fold_left.hpp
@@ -0,0 +1,279 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LIST_DETAIL_FOLD_LEFT_HPP
+# define MSGPACK_PREPROCESSOR_LIST_DETAIL_FOLD_LEFT_HPP
+#
+# include <msgpack/preprocessor/control/expr_iif.hpp>
+# include <msgpack/preprocessor/control/iif.hpp>
+# include <msgpack/preprocessor/list/adt.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+#
+# define MSGPACK_PP_LIST_FOLD_LEFT_1(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_2, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(2, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_2(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_3, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(3, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_3(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_4, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(4, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_4(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_5, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(5, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_5(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_6, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(6, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_6(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_7, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(7, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_7(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_8, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(8, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_8(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_9, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(9, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_9(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_10, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(10, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_10(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_11, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(11, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_11(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_12, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(12, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_12(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_13, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(13, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_13(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_14, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(14, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_14(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_15, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(15, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_15(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_16, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(16, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_16(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_17, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(17, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_17(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_18, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(18, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_18(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_19, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(19, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_19(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_20, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(20, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_20(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_21, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(21, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_21(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_22, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(22, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_22(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_23, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(23, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_23(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_24, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(24, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_24(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_25, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(25, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_25(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_26, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(26, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_26(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_27, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(27, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_27(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_28, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(28, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_28(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_29, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(29, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_29(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_30, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(30, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_30(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_31, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(31, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_31(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_32, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(32, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_32(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_33, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(33, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_33(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_34, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(34, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_34(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_35, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(35, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_35(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_36, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(36, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_36(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_37, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(37, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_37(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_38, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(38, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_38(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_39, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(39, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_39(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_40, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(40, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_40(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_41, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(41, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_41(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_42, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(42, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_42(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_43, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(43, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_43(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_44, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(44, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_44(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_45, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(45, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_45(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_46, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(46, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_46(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_47, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(47, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_47(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_48, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(48, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_48(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_49, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(49, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_49(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_50, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(50, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_50(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_51, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(51, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_51(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_52, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(52, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_52(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_53, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(53, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_53(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_54, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(54, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_54(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_55, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(55, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_55(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_56, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(56, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_56(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_57, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(57, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_57(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_58, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(58, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_58(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_59, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(59, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_59(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_60, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(60, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_60(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_61, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(61, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_61(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_62, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(62, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_62(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_63, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(63, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_63(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_64, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(64, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_64(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_65, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(65, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_65(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_66, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(66, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_66(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_67, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(67, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_67(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_68, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(68, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_68(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_69, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(69, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_69(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_70, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(70, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_70(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_71, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(71, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_71(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_72, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(72, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_72(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_73, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(73, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_73(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_74, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(74, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_74(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_75, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(75, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_75(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_76, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(76, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_76(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_77, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(77, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_77(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_78, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(78, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_78(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_79, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(79, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_79(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_80, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(80, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_80(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_81, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(81, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_81(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_82, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(82, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_82(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_83, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(83, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_83(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_84, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(84, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_84(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_85, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(85, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_85(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_86, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(86, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_86(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_87, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(87, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_87(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_88, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(88, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_88(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_89, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(89, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_89(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_90, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(90, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_90(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_91, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(91, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_91(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_92, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(92, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_92(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_93, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(93, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_93(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_94, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(94, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_94(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_95, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(95, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_95(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_96, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(96, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_96(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_97, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(97, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_97(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_98, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(98, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_98(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_99, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(99, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_99(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_100, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(100, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_100(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_101, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(101, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_101(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_102, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(102, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_102(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_103, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(103, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_103(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_104, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(104, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_104(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_105, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(105, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_105(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_106, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(106, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_106(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_107, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(107, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_107(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_108, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(108, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_108(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_109, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(109, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_109(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_110, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(110, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_110(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_111, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(111, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_111(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_112, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(112, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_112(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_113, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(113, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_113(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_114, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(114, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_114(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_115, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(115, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_115(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_116, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(116, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_116(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_117, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(117, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_117(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_118, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(118, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_118(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_119, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(119, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_119(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_120, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(120, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_120(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_121, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(121, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_121(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_122, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(122, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_122(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_123, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(123, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_123(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_124, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(124, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_124(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_125, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(125, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_125(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_126, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(126, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_126(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_127, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(127, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_127(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_128, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(128, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_128(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_129, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(129, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_129(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_130, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(130, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_130(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_131, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(131, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_131(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_132, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(132, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_132(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_133, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(133, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_133(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_134, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(134, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_134(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_135, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(135, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_135(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_136, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(136, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_136(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_137, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(137, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_137(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_138, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(138, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_138(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_139, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(139, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_139(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_140, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(140, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_140(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_141, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(141, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_141(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_142, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(142, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_142(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_143, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(143, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_143(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_144, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(144, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_144(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_145, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(145, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_145(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_146, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(146, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_146(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_147, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(147, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_147(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_148, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(148, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_148(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_149, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(149, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_149(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_150, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(150, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_150(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_151, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(151, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_151(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_152, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(152, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_152(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_153, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(153, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_153(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_154, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(154, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_154(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_155, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(155, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_155(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_156, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(156, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_156(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_157, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(157, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_157(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_158, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(158, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_158(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_159, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(159, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_159(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_160, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(160, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_160(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_161, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(161, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_161(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_162, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(162, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_162(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_163, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(163, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_163(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_164, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(164, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_164(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_165, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(165, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_165(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_166, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(166, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_166(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_167, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(167, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_167(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_168, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(168, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_168(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_169, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(169, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_169(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_170, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(170, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_170(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_171, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(171, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_171(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_172, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(172, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_172(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_173, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(173, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_173(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_174, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(174, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_174(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_175, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(175, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_175(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_176, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(176, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_176(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_177, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(177, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_177(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_178, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(178, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_178(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_179, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(179, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_179(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_180, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(180, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_180(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_181, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(181, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_181(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_182, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(182, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_182(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_183, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(183, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_183(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_184, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(184, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_184(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_185, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(185, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_185(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_186, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(186, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_186(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_187, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(187, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_187(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_188, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(188, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_188(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_189, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(189, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_189(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_190, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(190, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_190(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_191, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(191, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_191(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_192, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(192, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_192(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_193, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(193, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_193(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_194, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(194, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_194(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_195, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(195, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_195(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_196, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(196, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_196(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_197, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(197, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_197(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_198, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(198, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_198(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_199, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(199, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_199(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_200, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(200, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_200(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_201, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(201, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_201(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_202, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(202, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_202(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_203, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(203, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_203(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_204, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(204, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_204(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_205, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(205, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_205(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_206, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(206, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_206(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_207, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(207, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_207(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_208, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(208, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_208(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_209, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(209, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_209(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_210, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(210, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_210(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_211, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(211, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_211(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_212, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(212, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_212(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_213, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(213, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_213(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_214, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(214, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_214(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_215, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(215, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_215(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_216, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(216, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_216(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_217, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(217, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_217(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_218, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(218, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_218(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_219, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(219, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_219(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_220, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(220, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_220(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_221, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(221, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_221(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_222, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(222, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_222(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_223, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(223, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_223(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_224, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(224, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_224(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_225, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(225, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_225(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_226, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(226, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_226(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_227, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(227, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_227(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_228, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(228, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_228(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_229, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(229, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_229(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_230, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(230, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_230(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_231, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(231, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_231(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_232, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(232, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_232(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_233, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(233, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_233(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_234, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(234, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_234(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_235, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(235, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_235(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_236, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(236, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_236(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_237, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(237, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_237(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_238, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(238, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_238(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_239, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(239, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_239(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_240, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(240, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_240(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_241, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(241, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_241(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_242, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(242, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_242(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_243, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(243, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_243(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_244, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(244, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_244(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_245, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(245, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_245(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_246, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(246, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_246(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_247, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(247, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_247(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_248, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(248, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_248(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_249, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(249, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_249(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_250, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(250, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_250(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_251, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(251, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_251(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_252, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(252, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_252(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_253, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(253, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_253(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_254, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(254, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_254(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_255, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(255, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_255(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_256, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(256, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_256(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_257, MSGPACK_PP_TUPLE_ELEM_3_1)(o, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, MSGPACK_PP_TUPLE_ELEM_3_1)(257, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/list/detail/edg/fold_left.hpp b/third_party/msgpack/include/msgpack/preprocessor/list/detail/edg/fold_left.hpp
new file mode 100644
index 0000000000..f8c807691e
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/list/detail/edg/fold_left.hpp
@@ -0,0 +1,536 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LIST_DETAIL_EDG_FOLD_LEFT_HPP
+# define MSGPACK_PREPROCESSOR_LIST_DETAIL_EDG_FOLD_LEFT_HPP
+#
+# include <msgpack/preprocessor/control/expr_iif.hpp>
+# include <msgpack/preprocessor/control/iif.hpp>
+# include <msgpack/preprocessor/list/adt.hpp>
+# include <msgpack/preprocessor/tuple/eat.hpp>
+#
+# define MSGPACK_PP_LIST_FOLD_LEFT_1(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_1_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_2(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_2_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_3(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_3_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_4(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_4_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_5(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_5_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_6(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_6_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_7(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_7_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_8(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_8_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_9(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_9_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_10(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_10_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_11(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_11_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_12(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_12_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_13(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_13_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_14(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_14_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_15(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_15_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_16(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_16_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_17(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_17_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_18(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_18_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_19(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_19_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_20(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_20_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_21(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_21_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_22(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_22_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_23(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_23_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_24(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_24_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_25(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_25_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_26(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_26_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_27(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_27_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_28(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_28_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_29(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_29_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_30(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_30_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_31(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_31_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_32(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_32_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_33(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_33_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_34(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_34_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_35(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_35_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_36(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_36_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_37(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_37_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_38(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_38_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_39(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_39_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_40(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_40_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_41(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_41_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_42(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_42_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_43(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_43_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_44(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_44_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_45(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_45_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_46(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_46_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_47(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_47_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_48(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_48_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_49(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_49_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_50(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_50_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_51(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_51_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_52(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_52_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_53(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_53_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_54(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_54_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_55(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_55_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_56(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_56_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_57(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_57_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_58(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_58_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_59(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_59_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_60(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_60_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_61(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_61_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_62(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_62_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_63(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_63_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_64(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_64_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_65(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_65_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_66(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_66_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_67(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_67_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_68(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_68_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_69(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_69_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_70(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_70_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_71(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_71_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_72(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_72_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_73(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_73_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_74(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_74_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_75(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_75_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_76(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_76_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_77(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_77_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_78(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_78_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_79(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_79_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_80(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_80_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_81(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_81_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_82(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_82_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_83(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_83_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_84(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_84_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_85(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_85_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_86(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_86_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_87(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_87_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_88(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_88_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_89(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_89_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_90(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_90_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_91(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_91_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_92(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_92_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_93(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_93_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_94(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_94_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_95(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_95_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_96(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_96_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_97(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_97_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_98(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_98_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_99(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_99_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_100(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_100_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_101(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_101_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_102(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_102_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_103(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_103_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_104(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_104_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_105(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_105_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_106(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_106_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_107(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_107_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_108(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_108_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_109(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_109_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_110(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_110_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_111(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_111_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_112(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_112_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_113(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_113_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_114(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_114_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_115(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_115_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_116(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_116_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_117(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_117_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_118(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_118_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_119(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_119_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_120(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_120_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_121(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_121_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_122(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_122_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_123(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_123_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_124(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_124_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_125(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_125_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_126(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_126_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_127(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_127_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_128(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_128_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_129(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_129_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_130(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_130_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_131(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_131_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_132(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_132_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_133(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_133_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_134(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_134_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_135(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_135_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_136(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_136_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_137(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_137_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_138(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_138_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_139(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_139_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_140(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_140_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_141(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_141_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_142(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_142_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_143(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_143_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_144(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_144_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_145(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_145_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_146(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_146_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_147(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_147_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_148(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_148_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_149(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_149_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_150(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_150_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_151(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_151_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_152(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_152_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_153(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_153_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_154(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_154_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_155(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_155_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_156(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_156_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_157(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_157_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_158(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_158_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_159(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_159_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_160(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_160_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_161(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_161_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_162(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_162_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_163(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_163_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_164(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_164_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_165(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_165_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_166(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_166_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_167(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_167_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_168(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_168_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_169(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_169_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_170(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_170_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_171(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_171_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_172(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_172_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_173(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_173_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_174(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_174_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_175(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_175_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_176(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_176_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_177(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_177_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_178(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_178_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_179(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_179_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_180(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_180_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_181(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_181_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_182(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_182_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_183(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_183_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_184(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_184_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_185(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_185_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_186(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_186_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_187(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_187_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_188(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_188_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_189(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_189_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_190(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_190_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_191(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_191_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_192(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_192_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_193(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_193_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_194(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_194_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_195(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_195_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_196(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_196_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_197(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_197_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_198(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_198_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_199(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_199_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_200(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_200_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_201(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_201_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_202(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_202_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_203(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_203_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_204(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_204_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_205(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_205_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_206(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_206_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_207(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_207_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_208(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_208_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_209(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_209_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_210(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_210_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_211(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_211_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_212(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_212_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_213(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_213_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_214(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_214_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_215(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_215_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_216(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_216_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_217(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_217_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_218(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_218_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_219(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_219_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_220(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_220_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_221(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_221_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_222(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_222_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_223(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_223_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_224(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_224_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_225(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_225_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_226(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_226_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_227(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_227_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_228(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_228_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_229(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_229_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_230(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_230_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_231(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_231_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_232(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_232_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_233(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_233_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_234(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_234_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_235(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_235_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_236(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_236_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_237(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_237_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_238(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_238_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_239(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_239_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_240(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_240_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_241(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_241_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_242(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_242_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_243(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_243_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_244(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_244_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_245(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_245_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_246(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_246_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_247(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_247_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_248(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_248_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_249(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_249_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_250(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_250_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_251(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_251_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_252(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_252_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_253(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_253_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_254(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_254_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_255(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_255_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_256(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_256_D(o, s, l)
+#
+# define MSGPACK_PP_LIST_FOLD_LEFT_1_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_2, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(2, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_2_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_3, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(3, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_3_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_4, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(4, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_4_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_5, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(5, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_5_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_6, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(6, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_6_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_7, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(7, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_7_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_8, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(8, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_8_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_9, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(9, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_9_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_10, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(10, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_10_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_11, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(11, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_11_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_12, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(12, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_12_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_13, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(13, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_13_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_14, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(14, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_14_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_15, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(15, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_15_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_16, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(16, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_16_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_17, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(17, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_17_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_18, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(18, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_18_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_19, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(19, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_19_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_20, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(20, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_20_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_21, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(21, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_21_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_22, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(22, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_22_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_23, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(23, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_23_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_24, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(24, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_24_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_25, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(25, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_25_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_26, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(26, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_26_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_27, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(27, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_27_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_28, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(28, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_28_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_29, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(29, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_29_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_30, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(30, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_30_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_31, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(31, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_31_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_32, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(32, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_32_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_33, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(33, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_33_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_34, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(34, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_34_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_35, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(35, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_35_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_36, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(36, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_36_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_37, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(37, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_37_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_38, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(38, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_38_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_39, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(39, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_39_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_40, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(40, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_40_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_41, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(41, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_41_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_42, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(42, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_42_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_43, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(43, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_43_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_44, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(44, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_44_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_45, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(45, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_45_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_46, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(46, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_46_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_47, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(47, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_47_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_48, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(48, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_48_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_49, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(49, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_49_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_50, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(50, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_50_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_51, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(51, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_51_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_52, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(52, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_52_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_53, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(53, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_53_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_54, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(54, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_54_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_55, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(55, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_55_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_56, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(56, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_56_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_57, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(57, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_57_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_58, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(58, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_58_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_59, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(59, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_59_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_60, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(60, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_60_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_61, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(61, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_61_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_62, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(62, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_62_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_63, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(63, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_63_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_64, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(64, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_64_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_65, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(65, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_65_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_66, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(66, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_66_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_67, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(67, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_67_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_68, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(68, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_68_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_69, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(69, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_69_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_70, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(70, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_70_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_71, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(71, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_71_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_72, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(72, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_72_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_73, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(73, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_73_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_74, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(74, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_74_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_75, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(75, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_75_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_76, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(76, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_76_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_77, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(77, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_77_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_78, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(78, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_78_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_79, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(79, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_79_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_80, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(80, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_80_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_81, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(81, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_81_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_82, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(82, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_82_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_83, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(83, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_83_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_84, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(84, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_84_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_85, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(85, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_85_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_86, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(86, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_86_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_87, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(87, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_87_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_88, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(88, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_88_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_89, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(89, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_89_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_90, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(90, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_90_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_91, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(91, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_91_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_92, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(92, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_92_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_93, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(93, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_93_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_94, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(94, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_94_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_95, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(95, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_95_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_96, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(96, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_96_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_97, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(97, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_97_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_98, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(98, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_98_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_99, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(99, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_99_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_100, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(100, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_100_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_101, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(101, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_101_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_102, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(102, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_102_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_103, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(103, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_103_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_104, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(104, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_104_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_105, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(105, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_105_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_106, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(106, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_106_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_107, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(107, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_107_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_108, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(108, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_108_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_109, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(109, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_109_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_110, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(110, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_110_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_111, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(111, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_111_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_112, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(112, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_112_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_113, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(113, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_113_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_114, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(114, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_114_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_115, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(115, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_115_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_116, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(116, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_116_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_117, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(117, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_117_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_118, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(118, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_118_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_119, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(119, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_119_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_120, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(120, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_120_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_121, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(121, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_121_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_122, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(122, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_122_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_123, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(123, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_123_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_124, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(124, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_124_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_125, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(125, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_125_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_126, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(126, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_126_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_127, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(127, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_127_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_128, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(128, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_128_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_129, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(129, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_129_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_130, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(130, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_130_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_131, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(131, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_131_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_132, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(132, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_132_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_133, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(133, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_133_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_134, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(134, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_134_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_135, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(135, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_135_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_136, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(136, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_136_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_137, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(137, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_137_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_138, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(138, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_138_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_139, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(139, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_139_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_140, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(140, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_140_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_141, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(141, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_141_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_142, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(142, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_142_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_143, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(143, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_143_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_144, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(144, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_144_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_145, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(145, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_145_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_146, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(146, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_146_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_147, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(147, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_147_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_148, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(148, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_148_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_149, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(149, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_149_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_150, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(150, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_150_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_151, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(151, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_151_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_152, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(152, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_152_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_153, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(153, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_153_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_154, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(154, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_154_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_155, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(155, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_155_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_156, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(156, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_156_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_157, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(157, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_157_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_158, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(158, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_158_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_159, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(159, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_159_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_160, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(160, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_160_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_161, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(161, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_161_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_162, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(162, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_162_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_163, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(163, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_163_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_164, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(164, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_164_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_165, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(165, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_165_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_166, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(166, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_166_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_167, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(167, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_167_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_168, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(168, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_168_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_169, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(169, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_169_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_170, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(170, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_170_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_171, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(171, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_171_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_172, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(172, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_172_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_173, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(173, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_173_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_174, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(174, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_174_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_175, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(175, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_175_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_176, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(176, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_176_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_177, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(177, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_177_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_178, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(178, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_178_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_179, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(179, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_179_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_180, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(180, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_180_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_181, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(181, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_181_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_182, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(182, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_182_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_183, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(183, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_183_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_184, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(184, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_184_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_185, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(185, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_185_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_186, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(186, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_186_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_187, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(187, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_187_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_188, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(188, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_188_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_189, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(189, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_189_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_190, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(190, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_190_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_191, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(191, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_191_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_192, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(192, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_192_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_193, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(193, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_193_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_194, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(194, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_194_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_195, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(195, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_195_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_196, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(196, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_196_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_197, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(197, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_197_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_198, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(198, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_198_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_199, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(199, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_199_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_200, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(200, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_200_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_201, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(201, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_201_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_202, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(202, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_202_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_203, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(203, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_203_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_204, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(204, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_204_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_205, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(205, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_205_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_206, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(206, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_206_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_207, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(207, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_207_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_208, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(208, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_208_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_209, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(209, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_209_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_210, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(210, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_210_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_211, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(211, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_211_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_212, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(212, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_212_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_213, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(213, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_213_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_214, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(214, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_214_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_215, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(215, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_215_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_216, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(216, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_216_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_217, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(217, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_217_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_218, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(218, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_218_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_219, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(219, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_219_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_220, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(220, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_220_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_221, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(221, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_221_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_222, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(222, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_222_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_223, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(223, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_223_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_224, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(224, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_224_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_225, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(225, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_225_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_226, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(226, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_226_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_227, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(227, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_227_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_228, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(228, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_228_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_229, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(229, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_229_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_230, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(230, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_230_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_231, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(231, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_231_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_232, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(232, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_232_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_233, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(233, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_233_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_234, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(234, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_234_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_235, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(235, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_235_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_236, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(236, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_236_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_237, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(237, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_237_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_238, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(238, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_238_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_239, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(239, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_239_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_240, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(240, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_240_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_241, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(241, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_241_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_242, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(242, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_242_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_243, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(243, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_243_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_244, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(244, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_244_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_245, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(245, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_245_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_246, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(246, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_246_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_247, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(247, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_247_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_248, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(248, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_248_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_249, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(249, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_249_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_250, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(250, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_250_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_251, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(251, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_251_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_252, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(252, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_252_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_253, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(253, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_253_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_254, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(254, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_254_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_255, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(255, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_255_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_256, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(256, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_256_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_257, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(257, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/list/detail/edg/fold_right.hpp b/third_party/msgpack/include/msgpack/preprocessor/list/detail/edg/fold_right.hpp
new file mode 100644
index 0000000000..5ea32468b3
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/list/detail/edg/fold_right.hpp
@@ -0,0 +1,794 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LIST_DETAIL_EDG_FOLD_RIGHT_HPP
+# define MSGPACK_PREPROCESSOR_LIST_DETAIL_EDG_FOLD_RIGHT_HPP
+#
+# include <msgpack/preprocessor/control/iif.hpp>
+# include <msgpack/preprocessor/list/adt.hpp>
+# include <msgpack/preprocessor/tuple/eat.hpp>
+#
+# define MSGPACK_PP_LIST_FOLD_RIGHT_1(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_1_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_2(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_2_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_3(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_3_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_4(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_4_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_5(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_5_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_6(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_6_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_7(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_7_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_8(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_8_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_9(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_9_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_10(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_10_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_11(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_11_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_12(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_12_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_13(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_13_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_14(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_14_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_15(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_15_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_16(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_16_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_17(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_17_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_18(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_18_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_19(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_19_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_20(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_20_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_21(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_21_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_22(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_22_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_23(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_23_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_24(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_24_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_25(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_25_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_26(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_26_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_27(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_27_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_28(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_28_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_29(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_29_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_30(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_30_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_31(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_31_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_32(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_32_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_33(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_33_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_34(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_34_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_35(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_35_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_36(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_36_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_37(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_37_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_38(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_38_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_39(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_39_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_40(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_40_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_41(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_41_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_42(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_42_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_43(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_43_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_44(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_44_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_45(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_45_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_46(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_46_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_47(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_47_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_48(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_48_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_49(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_49_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_50(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_50_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_51(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_51_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_52(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_52_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_53(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_53_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_54(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_54_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_55(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_55_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_56(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_56_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_57(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_57_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_58(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_58_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_59(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_59_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_60(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_60_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_61(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_61_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_62(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_62_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_63(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_63_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_64(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_64_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_65(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_65_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_66(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_66_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_67(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_67_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_68(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_68_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_69(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_69_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_70(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_70_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_71(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_71_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_72(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_72_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_73(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_73_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_74(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_74_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_75(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_75_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_76(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_76_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_77(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_77_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_78(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_78_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_79(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_79_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_80(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_80_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_81(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_81_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_82(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_82_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_83(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_83_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_84(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_84_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_85(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_85_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_86(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_86_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_87(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_87_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_88(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_88_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_89(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_89_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_90(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_90_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_91(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_91_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_92(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_92_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_93(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_93_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_94(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_94_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_95(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_95_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_96(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_96_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_97(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_97_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_98(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_98_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_99(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_99_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_100(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_100_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_101(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_101_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_102(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_102_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_103(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_103_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_104(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_104_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_105(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_105_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_106(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_106_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_107(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_107_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_108(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_108_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_109(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_109_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_110(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_110_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_111(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_111_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_112(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_112_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_113(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_113_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_114(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_114_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_115(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_115_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_116(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_116_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_117(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_117_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_118(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_118_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_119(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_119_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_120(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_120_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_121(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_121_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_122(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_122_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_123(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_123_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_124(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_124_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_125(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_125_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_126(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_126_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_127(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_127_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_128(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_128_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_129(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_129_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_130(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_130_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_131(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_131_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_132(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_132_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_133(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_133_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_134(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_134_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_135(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_135_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_136(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_136_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_137(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_137_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_138(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_138_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_139(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_139_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_140(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_140_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_141(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_141_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_142(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_142_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_143(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_143_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_144(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_144_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_145(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_145_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_146(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_146_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_147(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_147_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_148(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_148_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_149(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_149_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_150(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_150_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_151(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_151_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_152(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_152_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_153(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_153_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_154(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_154_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_155(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_155_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_156(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_156_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_157(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_157_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_158(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_158_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_159(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_159_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_160(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_160_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_161(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_161_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_162(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_162_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_163(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_163_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_164(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_164_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_165(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_165_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_166(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_166_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_167(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_167_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_168(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_168_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_169(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_169_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_170(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_170_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_171(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_171_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_172(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_172_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_173(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_173_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_174(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_174_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_175(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_175_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_176(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_176_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_177(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_177_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_178(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_178_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_179(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_179_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_180(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_180_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_181(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_181_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_182(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_182_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_183(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_183_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_184(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_184_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_185(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_185_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_186(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_186_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_187(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_187_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_188(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_188_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_189(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_189_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_190(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_190_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_191(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_191_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_192(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_192_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_193(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_193_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_194(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_194_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_195(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_195_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_196(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_196_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_197(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_197_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_198(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_198_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_199(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_199_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_200(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_200_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_201(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_201_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_202(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_202_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_203(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_203_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_204(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_204_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_205(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_205_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_206(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_206_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_207(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_207_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_208(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_208_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_209(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_209_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_210(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_210_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_211(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_211_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_212(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_212_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_213(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_213_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_214(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_214_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_215(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_215_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_216(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_216_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_217(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_217_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_218(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_218_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_219(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_219_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_220(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_220_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_221(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_221_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_222(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_222_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_223(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_223_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_224(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_224_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_225(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_225_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_226(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_226_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_227(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_227_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_228(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_228_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_229(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_229_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_230(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_230_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_231(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_231_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_232(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_232_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_233(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_233_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_234(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_234_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_235(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_235_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_236(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_236_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_237(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_237_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_238(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_238_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_239(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_239_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_240(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_240_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_241(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_241_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_242(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_242_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_243(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_243_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_244(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_244_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_245(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_245_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_246(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_246_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_247(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_247_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_248(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_248_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_249(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_249_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_250(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_250_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_251(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_251_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_252(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_252_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_253(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_253_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_254(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_254_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_255(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_255_D(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_256(o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_256_D(o, s, l)
+#
+# define MSGPACK_PP_LIST_FOLD_RIGHT_1_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(2, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_2, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_2_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(3, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_3, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_3_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(4, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_4, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_4_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(5, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_5, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_5_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(6, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_6, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_6_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(7, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_7, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_7_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(8, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_8, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_8_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(9, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_9, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_9_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(10, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_10, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_10_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(11, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_11, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_11_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(12, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_12, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_12_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(13, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_13, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_13_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(14, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_14, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_14_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(15, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_15, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_15_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(16, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_16, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_16_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(17, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_17, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_17_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(18, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_18, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_18_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(19, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_19, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_19_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(20, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_20, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_20_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(21, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_21, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_21_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(22, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_22, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_22_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(23, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_23, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_23_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(24, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_24, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_24_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(25, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_25, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_25_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(26, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_26, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_26_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(27, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_27, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_27_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(28, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_28, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_28_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(29, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_29, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_29_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(30, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_30, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_30_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(31, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_31, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_31_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(32, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_32, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_32_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(33, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_33, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_33_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(34, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_34, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_34_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(35, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_35, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_35_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(36, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_36, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_36_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(37, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_37, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_37_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(38, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_38, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_38_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(39, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_39, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_39_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(40, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_40, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_40_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(41, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_41, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_41_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(42, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_42, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_42_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(43, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_43, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_43_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(44, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_44, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_44_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(45, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_45, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_45_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(46, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_46, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_46_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(47, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_47, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_47_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(48, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_48, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_48_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(49, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_49, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_49_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(50, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_50, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_50_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(51, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_51, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_51_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(52, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_52, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_52_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(53, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_53, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_53_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(54, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_54, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_54_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(55, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_55, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_55_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(56, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_56, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_56_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(57, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_57, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_57_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(58, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_58, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_58_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(59, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_59, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_59_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(60, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_60, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_60_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(61, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_61, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_61_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(62, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_62, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_62_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(63, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_63, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_63_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(64, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_64, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_64_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(65, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_65, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_65_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(66, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_66, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_66_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(67, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_67, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_67_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(68, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_68, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_68_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(69, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_69, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_69_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(70, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_70, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_70_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(71, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_71, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_71_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(72, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_72, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_72_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(73, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_73, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_73_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(74, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_74, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_74_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(75, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_75, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_75_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(76, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_76, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_76_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(77, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_77, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_77_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(78, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_78, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_78_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(79, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_79, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_79_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(80, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_80, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_80_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(81, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_81, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_81_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(82, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_82, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_82_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(83, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_83, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_83_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(84, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_84, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_84_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(85, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_85, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_85_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(86, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_86, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_86_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(87, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_87, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_87_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(88, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_88, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_88_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(89, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_89, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_89_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(90, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_90, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_90_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(91, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_91, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_91_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(92, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_92, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_92_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(93, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_93, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_93_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(94, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_94, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_94_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(95, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_95, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_95_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(96, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_96, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_96_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(97, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_97, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_97_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(98, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_98, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_98_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(99, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_99, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_99_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(100, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_100, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_100_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(101, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_101, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_101_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(102, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_102, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_102_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(103, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_103, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_103_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(104, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_104, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_104_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(105, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_105, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_105_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(106, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_106, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_106_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(107, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_107, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_107_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(108, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_108, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_108_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(109, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_109, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_109_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(110, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_110, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_110_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(111, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_111, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_111_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(112, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_112, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_112_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(113, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_113, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_113_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(114, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_114, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_114_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(115, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_115, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_115_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(116, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_116, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_116_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(117, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_117, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_117_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(118, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_118, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_118_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(119, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_119, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_119_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(120, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_120, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_120_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(121, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_121, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_121_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(122, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_122, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_122_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(123, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_123, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_123_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(124, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_124, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_124_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(125, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_125, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_125_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(126, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_126, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_126_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(127, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_127, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_127_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(128, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_128, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_128_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(129, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_129, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_129_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(130, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_130, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_130_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(131, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_131, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_131_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(132, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_132, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_132_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(133, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_133, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_133_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(134, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_134, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_134_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(135, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_135, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_135_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(136, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_136, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_136_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(137, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_137, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_137_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(138, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_138, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_138_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(139, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_139, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_139_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(140, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_140, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_140_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(141, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_141, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_141_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(142, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_142, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_142_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(143, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_143, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_143_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(144, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_144, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_144_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(145, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_145, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_145_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(146, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_146, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_146_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(147, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_147, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_147_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(148, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_148, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_148_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(149, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_149, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_149_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(150, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_150, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_150_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(151, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_151, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_151_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(152, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_152, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_152_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(153, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_153, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_153_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(154, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_154, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_154_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(155, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_155, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_155_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(156, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_156, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_156_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(157, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_157, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_157_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(158, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_158, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_158_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(159, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_159, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_159_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(160, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_160, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_160_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(161, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_161, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_161_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(162, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_162, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_162_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(163, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_163, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_163_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(164, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_164, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_164_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(165, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_165, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_165_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(166, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_166, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_166_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(167, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_167, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_167_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(168, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_168, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_168_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(169, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_169, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_169_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(170, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_170, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_170_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(171, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_171, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_171_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(172, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_172, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_172_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(173, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_173, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_173_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(174, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_174, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_174_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(175, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_175, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_175_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(176, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_176, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_176_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(177, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_177, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_177_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(178, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_178, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_178_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(179, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_179, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_179_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(180, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_180, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_180_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(181, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_181, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_181_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(182, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_182, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_182_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(183, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_183, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_183_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(184, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_184, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_184_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(185, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_185, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_185_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(186, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_186, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_186_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(187, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_187, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_187_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(188, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_188, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_188_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(189, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_189, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_189_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(190, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_190, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_190_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(191, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_191, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_191_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(192, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_192, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_192_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(193, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_193, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_193_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(194, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_194, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_194_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(195, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_195, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_195_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(196, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_196, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_196_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(197, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_197, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_197_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(198, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_198, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_198_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(199, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_199, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_199_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(200, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_200, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_200_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(201, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_201, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_201_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(202, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_202, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_202_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(203, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_203, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_203_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(204, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_204, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_204_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(205, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_205, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_205_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(206, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_206, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_206_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(207, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_207, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_207_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(208, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_208, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_208_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(209, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_209, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_209_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(210, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_210, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_210_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(211, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_211, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_211_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(212, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_212, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_212_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(213, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_213, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_213_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(214, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_214, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_214_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(215, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_215, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_215_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(216, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_216, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_216_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(217, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_217, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_217_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(218, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_218, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_218_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(219, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_219, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_219_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(220, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_220, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_220_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(221, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_221, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_221_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(222, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_222, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_222_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(223, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_223, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_223_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(224, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_224, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_224_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(225, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_225, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_225_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(226, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_226, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_226_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(227, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_227, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_227_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(228, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_228, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_228_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(229, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_229, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_229_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(230, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_230, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_230_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(231, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_231, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_231_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(232, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_232, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_232_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(233, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_233, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_233_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(234, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_234, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_234_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(235, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_235, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_235_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(236, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_236, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_236_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(237, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_237, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_237_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(238, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_238, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_238_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(239, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_239, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_239_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(240, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_240, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_240_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(241, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_241, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_241_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(242, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_242, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_242_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(243, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_243, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_243_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(244, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_244, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_244_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(245, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_245, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_245_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(246, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_246, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_246_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(247, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_247, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_247_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(248, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_248, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_248_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(249, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_249, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_249_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(250, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_250, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_250_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(251, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_251, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_251_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(252, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_252, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_252_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(253, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_253, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_253_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(254, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_254, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_254_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(255, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_255, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_255_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(256, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_256, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_256_D(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), o, s MSGPACK_PP_TUPLE_EAT_3)(257, MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_RIGHT_257, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3)(o, s, MSGPACK_PP_LIST_REST(l)), MSGPACK_PP_LIST_FIRST(l))
+#
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_NIL 1
+#
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_1(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_2(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_3(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_4(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_5(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_6(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_7(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_8(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_9(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_10(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_11(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_12(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_13(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_14(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_15(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_16(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_17(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_18(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_19(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_20(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_21(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_22(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_23(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_24(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_25(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_26(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_27(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_28(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_29(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_30(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_31(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_32(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_33(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_34(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_35(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_36(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_37(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_38(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_39(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_40(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_41(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_42(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_43(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_44(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_45(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_46(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_47(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_48(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_49(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_50(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_51(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_52(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_53(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_54(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_55(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_56(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_57(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_58(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_59(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_60(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_61(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_62(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_63(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_64(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_65(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_66(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_67(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_68(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_69(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_70(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_71(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_72(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_73(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_74(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_75(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_76(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_77(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_78(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_79(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_80(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_81(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_82(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_83(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_84(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_85(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_86(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_87(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_88(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_89(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_90(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_91(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_92(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_93(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_94(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_95(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_96(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_97(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_98(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_99(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_100(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_101(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_102(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_103(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_104(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_105(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_106(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_107(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_108(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_109(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_110(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_111(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_112(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_113(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_114(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_115(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_116(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_117(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_118(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_119(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_120(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_121(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_122(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_123(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_124(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_125(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_126(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_127(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_128(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_129(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_130(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_131(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_132(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_133(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_134(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_135(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_136(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_137(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_138(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_139(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_140(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_141(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_142(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_143(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_144(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_145(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_146(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_147(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_148(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_149(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_150(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_151(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_152(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_153(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_154(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_155(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_156(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_157(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_158(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_159(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_160(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_161(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_162(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_163(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_164(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_165(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_166(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_167(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_168(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_169(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_170(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_171(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_172(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_173(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_174(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_175(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_176(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_177(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_178(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_179(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_180(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_181(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_182(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_183(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_184(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_185(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_186(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_187(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_188(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_189(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_190(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_191(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_192(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_193(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_194(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_195(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_196(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_197(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_198(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_199(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_200(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_201(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_202(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_203(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_204(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_205(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_206(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_207(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_208(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_209(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_210(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_211(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_212(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_213(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_214(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_215(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_216(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_217(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_218(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_219(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_220(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_221(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_222(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_223(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_224(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_225(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_226(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_227(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_228(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_229(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_230(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_231(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_232(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_233(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_234(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_235(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_236(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_237(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_238(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_239(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_240(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_241(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_242(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_243(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_244(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_245(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_246(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_247(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_248(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_249(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_250(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_251(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_252(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_253(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_254(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_255(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT_CHECK_MSGPACK_PP_LIST_FOLD_RIGHT_256(o, s, l) 0
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/list/detail/fold_left.hpp b/third_party/msgpack/include/msgpack/preprocessor/list/detail/fold_left.hpp
new file mode 100644
index 0000000000..eeb2ab0a06
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/list/detail/fold_left.hpp
@@ -0,0 +1,279 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LIST_DETAIL_FOLD_LEFT_HPP
+# define MSGPACK_PREPROCESSOR_LIST_DETAIL_FOLD_LEFT_HPP
+#
+# include <msgpack/preprocessor/control/expr_iif.hpp>
+# include <msgpack/preprocessor/control/iif.hpp>
+# include <msgpack/preprocessor/list/adt.hpp>
+# include <msgpack/preprocessor/tuple/eat.hpp>
+#
+# define MSGPACK_PP_LIST_FOLD_LEFT_1(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_2, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(2, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_2(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_3, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(3, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_3(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_4, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(4, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_4(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_5, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(5, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_5(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_6, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(6, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_6(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_7, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(7, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_7(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_8, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(8, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_8(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_9, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(9, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_9(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_10, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(10, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_10(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_11, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(11, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_11(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_12, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(12, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_12(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_13, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(13, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_13(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_14, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(14, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_14(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_15, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(15, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_15(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_16, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(16, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_16(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_17, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(17, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_17(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_18, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(18, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_18(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_19, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(19, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_19(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_20, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(20, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_20(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_21, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(21, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_21(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_22, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(22, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_22(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_23, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(23, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_23(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_24, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(24, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_24(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_25, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(25, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_25(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_26, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(26, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_26(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_27, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(27, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_27(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_28, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(28, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_28(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_29, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(29, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_29(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_30, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(30, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_30(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_31, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(31, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_31(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_32, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(32, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_32(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_33, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(33, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_33(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_34, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(34, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_34(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_35, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(35, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_35(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_36, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(36, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_36(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_37, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(37, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_37(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_38, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(38, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_38(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_39, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(39, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_39(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_40, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(40, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_40(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_41, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(41, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_41(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_42, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(42, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_42(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_43, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(43, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_43(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_44, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(44, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_44(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_45, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(45, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_45(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_46, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(46, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_46(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_47, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(47, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_47(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_48, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(48, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_48(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_49, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(49, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_49(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_50, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(50, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_50(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_51, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(51, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_51(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_52, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(52, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_52(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_53, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(53, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_53(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_54, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(54, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_54(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_55, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(55, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_55(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_56, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(56, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_56(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_57, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(57, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_57(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_58, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(58, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_58(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_59, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(59, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_59(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_60, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(60, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_60(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_61, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(61, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_61(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_62, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(62, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_62(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_63, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(63, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_63(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_64, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(64, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_64(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_65, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(65, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_65(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_66, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(66, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_66(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_67, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(67, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_67(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_68, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(68, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_68(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_69, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(69, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_69(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_70, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(70, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_70(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_71, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(71, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_71(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_72, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(72, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_72(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_73, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(73, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_73(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_74, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(74, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_74(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_75, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(75, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_75(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_76, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(76, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_76(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_77, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(77, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_77(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_78, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(78, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_78(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_79, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(79, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_79(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_80, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(80, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_80(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_81, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(81, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_81(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_82, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(82, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_82(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_83, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(83, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_83(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_84, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(84, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_84(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_85, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(85, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_85(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_86, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(86, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_86(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_87, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(87, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_87(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_88, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(88, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_88(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_89, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(89, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_89(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_90, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(90, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_90(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_91, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(91, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_91(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_92, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(92, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_92(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_93, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(93, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_93(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_94, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(94, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_94(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_95, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(95, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_95(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_96, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(96, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_96(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_97, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(97, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_97(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_98, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(98, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_98(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_99, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(99, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_99(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_100, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(100, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_100(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_101, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(101, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_101(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_102, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(102, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_102(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_103, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(103, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_103(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_104, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(104, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_104(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_105, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(105, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_105(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_106, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(106, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_106(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_107, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(107, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_107(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_108, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(108, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_108(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_109, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(109, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_109(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_110, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(110, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_110(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_111, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(111, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_111(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_112, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(112, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_112(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_113, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(113, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_113(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_114, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(114, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_114(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_115, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(115, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_115(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_116, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(116, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_116(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_117, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(117, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_117(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_118, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(118, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_118(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_119, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(119, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_119(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_120, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(120, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_120(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_121, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(121, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_121(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_122, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(122, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_122(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_123, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(123, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_123(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_124, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(124, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_124(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_125, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(125, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_125(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_126, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(126, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_126(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_127, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(127, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_127(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_128, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(128, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_128(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_129, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(129, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_129(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_130, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(130, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_130(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_131, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(131, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_131(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_132, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(132, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_132(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_133, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(133, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_133(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_134, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(134, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_134(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_135, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(135, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_135(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_136, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(136, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_136(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_137, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(137, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_137(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_138, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(138, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_138(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_139, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(139, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_139(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_140, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(140, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_140(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_141, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(141, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_141(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_142, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(142, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_142(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_143, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(143, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_143(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_144, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(144, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_144(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_145, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(145, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_145(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_146, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(146, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_146(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_147, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(147, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_147(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_148, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(148, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_148(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_149, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(149, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_149(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_150, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(150, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_150(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_151, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(151, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_151(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_152, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(152, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_152(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_153, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(153, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_153(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_154, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(154, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_154(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_155, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(155, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_155(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_156, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(156, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_156(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_157, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(157, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_157(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_158, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(158, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_158(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_159, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(159, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_159(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_160, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(160, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_160(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_161, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(161, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_161(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_162, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(162, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_162(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_163, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(163, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_163(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_164, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(164, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_164(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_165, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(165, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_165(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_166, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(166, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_166(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_167, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(167, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_167(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_168, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(168, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_168(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_169, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(169, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_169(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_170, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(170, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_170(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_171, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(171, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_171(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_172, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(172, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_172(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_173, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(173, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_173(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_174, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(174, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_174(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_175, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(175, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_175(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_176, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(176, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_176(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_177, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(177, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_177(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_178, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(178, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_178(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_179, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(179, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_179(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_180, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(180, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_180(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_181, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(181, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_181(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_182, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(182, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_182(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_183, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(183, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_183(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_184, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(184, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_184(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_185, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(185, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_185(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_186, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(186, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_186(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_187, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(187, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_187(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_188, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(188, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_188(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_189, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(189, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_189(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_190, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(190, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_190(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_191, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(191, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_191(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_192, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(192, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_192(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_193, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(193, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_193(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_194, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(194, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_194(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_195, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(195, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_195(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_196, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(196, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_196(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_197, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(197, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_197(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_198, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(198, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_198(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_199, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(199, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_199(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_200, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(200, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_200(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_201, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(201, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_201(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_202, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(202, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_202(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_203, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(203, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_203(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_204, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(204, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_204(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_205, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(205, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_205(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_206, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(206, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_206(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_207, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(207, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_207(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_208, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(208, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_208(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_209, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(209, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_209(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_210, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(210, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_210(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_211, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(211, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_211(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_212, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(212, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_212(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_213, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(213, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_213(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_214, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(214, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_214(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_215, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(215, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_215(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_216, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(216, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_216(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_217, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(217, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_217(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_218, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(218, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_218(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_219, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(219, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_219(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_220, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(220, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_220(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_221, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(221, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_221(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_222, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(222, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_222(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_223, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(223, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_223(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_224, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(224, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_224(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_225, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(225, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_225(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_226, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(226, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_226(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_227, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(227, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_227(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_228, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(228, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_228(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_229, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(229, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_229(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_230, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(230, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_230(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_231, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(231, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_231(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_232, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(232, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_232(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_233, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(233, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_233(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_234, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(234, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_234(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_235, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(235, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_235(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_236, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(236, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_236(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_237, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(237, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_237(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_238, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(238, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_238(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_239, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(239, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_239(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_240, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(240, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_240(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_241, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(241, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_241(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_242, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(242, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_242(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_243, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(243, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_243(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_244, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(244, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_244(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_245, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(245, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_245(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_246, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(246, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_246(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_247, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(247, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_247(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_248, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(248, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_248(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_249, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(249, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_249(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_250, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(250, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_250(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_251, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(251, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_251(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_252, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(252, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_252(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_253, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(253, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_253(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_254, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(254, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_254(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_255, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(255, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_255(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_256, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(256, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+# define MSGPACK_PP_LIST_FOLD_LEFT_256(o, s, l) MSGPACK_PP_IIF(MSGPACK_PP_LIST_IS_CONS(l), MSGPACK_PP_LIST_FOLD_LEFT_257, s MSGPACK_PP_TUPLE_EAT_3)(o, MSGPACK_PP_EXPR_IIF(MSGPACK_PP_LIST_IS_CONS(l), o)(257, s, MSGPACK_PP_LIST_FIRST(l)), MSGPACK_PP_LIST_REST(l))
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/list/detail/fold_right.hpp b/third_party/msgpack/include/msgpack/preprocessor/list/detail/fold_right.hpp
new file mode 100644
index 0000000000..9fc8883024
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/list/detail/fold_right.hpp
@@ -0,0 +1,277 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LIST_DETAIL_FOLD_RIGHT_HPP
+# define MSGPACK_PREPROCESSOR_LIST_DETAIL_FOLD_RIGHT_HPP
+#
+# include <msgpack/preprocessor/list/fold_left.hpp>
+# include <msgpack/preprocessor/list/reverse.hpp>
+#
+# define MSGPACK_PP_LIST_FOLD_RIGHT_1(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_1(o, s, MSGPACK_PP_LIST_REVERSE_D(1, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_2(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_2(o, s, MSGPACK_PP_LIST_REVERSE_D(2, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_3(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_3(o, s, MSGPACK_PP_LIST_REVERSE_D(3, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_4(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_4(o, s, MSGPACK_PP_LIST_REVERSE_D(4, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_5(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_5(o, s, MSGPACK_PP_LIST_REVERSE_D(5, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_6(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_6(o, s, MSGPACK_PP_LIST_REVERSE_D(6, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_7(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_7(o, s, MSGPACK_PP_LIST_REVERSE_D(7, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_8(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_8(o, s, MSGPACK_PP_LIST_REVERSE_D(8, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_9(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_9(o, s, MSGPACK_PP_LIST_REVERSE_D(9, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_10(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_10(o, s, MSGPACK_PP_LIST_REVERSE_D(10, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_11(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_11(o, s, MSGPACK_PP_LIST_REVERSE_D(11, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_12(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_12(o, s, MSGPACK_PP_LIST_REVERSE_D(12, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_13(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_13(o, s, MSGPACK_PP_LIST_REVERSE_D(13, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_14(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_14(o, s, MSGPACK_PP_LIST_REVERSE_D(14, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_15(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_15(o, s, MSGPACK_PP_LIST_REVERSE_D(15, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_16(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_16(o, s, MSGPACK_PP_LIST_REVERSE_D(16, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_17(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_17(o, s, MSGPACK_PP_LIST_REVERSE_D(17, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_18(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_18(o, s, MSGPACK_PP_LIST_REVERSE_D(18, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_19(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_19(o, s, MSGPACK_PP_LIST_REVERSE_D(19, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_20(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_20(o, s, MSGPACK_PP_LIST_REVERSE_D(20, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_21(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_21(o, s, MSGPACK_PP_LIST_REVERSE_D(21, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_22(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_22(o, s, MSGPACK_PP_LIST_REVERSE_D(22, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_23(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_23(o, s, MSGPACK_PP_LIST_REVERSE_D(23, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_24(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_24(o, s, MSGPACK_PP_LIST_REVERSE_D(24, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_25(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_25(o, s, MSGPACK_PP_LIST_REVERSE_D(25, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_26(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_26(o, s, MSGPACK_PP_LIST_REVERSE_D(26, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_27(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_27(o, s, MSGPACK_PP_LIST_REVERSE_D(27, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_28(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_28(o, s, MSGPACK_PP_LIST_REVERSE_D(28, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_29(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_29(o, s, MSGPACK_PP_LIST_REVERSE_D(29, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_30(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_30(o, s, MSGPACK_PP_LIST_REVERSE_D(30, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_31(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_31(o, s, MSGPACK_PP_LIST_REVERSE_D(31, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_32(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_32(o, s, MSGPACK_PP_LIST_REVERSE_D(32, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_33(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_33(o, s, MSGPACK_PP_LIST_REVERSE_D(33, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_34(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_34(o, s, MSGPACK_PP_LIST_REVERSE_D(34, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_35(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_35(o, s, MSGPACK_PP_LIST_REVERSE_D(35, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_36(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_36(o, s, MSGPACK_PP_LIST_REVERSE_D(36, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_37(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_37(o, s, MSGPACK_PP_LIST_REVERSE_D(37, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_38(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_38(o, s, MSGPACK_PP_LIST_REVERSE_D(38, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_39(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_39(o, s, MSGPACK_PP_LIST_REVERSE_D(39, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_40(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_40(o, s, MSGPACK_PP_LIST_REVERSE_D(40, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_41(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_41(o, s, MSGPACK_PP_LIST_REVERSE_D(41, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_42(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_42(o, s, MSGPACK_PP_LIST_REVERSE_D(42, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_43(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_43(o, s, MSGPACK_PP_LIST_REVERSE_D(43, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_44(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_44(o, s, MSGPACK_PP_LIST_REVERSE_D(44, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_45(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_45(o, s, MSGPACK_PP_LIST_REVERSE_D(45, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_46(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_46(o, s, MSGPACK_PP_LIST_REVERSE_D(46, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_47(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_47(o, s, MSGPACK_PP_LIST_REVERSE_D(47, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_48(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_48(o, s, MSGPACK_PP_LIST_REVERSE_D(48, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_49(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_49(o, s, MSGPACK_PP_LIST_REVERSE_D(49, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_50(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_50(o, s, MSGPACK_PP_LIST_REVERSE_D(50, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_51(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_51(o, s, MSGPACK_PP_LIST_REVERSE_D(51, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_52(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_52(o, s, MSGPACK_PP_LIST_REVERSE_D(52, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_53(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_53(o, s, MSGPACK_PP_LIST_REVERSE_D(53, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_54(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_54(o, s, MSGPACK_PP_LIST_REVERSE_D(54, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_55(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_55(o, s, MSGPACK_PP_LIST_REVERSE_D(55, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_56(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_56(o, s, MSGPACK_PP_LIST_REVERSE_D(56, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_57(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_57(o, s, MSGPACK_PP_LIST_REVERSE_D(57, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_58(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_58(o, s, MSGPACK_PP_LIST_REVERSE_D(58, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_59(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_59(o, s, MSGPACK_PP_LIST_REVERSE_D(59, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_60(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_60(o, s, MSGPACK_PP_LIST_REVERSE_D(60, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_61(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_61(o, s, MSGPACK_PP_LIST_REVERSE_D(61, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_62(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_62(o, s, MSGPACK_PP_LIST_REVERSE_D(62, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_63(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_63(o, s, MSGPACK_PP_LIST_REVERSE_D(63, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_64(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_64(o, s, MSGPACK_PP_LIST_REVERSE_D(64, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_65(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_65(o, s, MSGPACK_PP_LIST_REVERSE_D(65, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_66(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_66(o, s, MSGPACK_PP_LIST_REVERSE_D(66, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_67(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_67(o, s, MSGPACK_PP_LIST_REVERSE_D(67, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_68(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_68(o, s, MSGPACK_PP_LIST_REVERSE_D(68, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_69(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_69(o, s, MSGPACK_PP_LIST_REVERSE_D(69, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_70(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_70(o, s, MSGPACK_PP_LIST_REVERSE_D(70, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_71(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_71(o, s, MSGPACK_PP_LIST_REVERSE_D(71, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_72(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_72(o, s, MSGPACK_PP_LIST_REVERSE_D(72, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_73(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_73(o, s, MSGPACK_PP_LIST_REVERSE_D(73, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_74(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_74(o, s, MSGPACK_PP_LIST_REVERSE_D(74, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_75(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_75(o, s, MSGPACK_PP_LIST_REVERSE_D(75, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_76(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_76(o, s, MSGPACK_PP_LIST_REVERSE_D(76, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_77(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_77(o, s, MSGPACK_PP_LIST_REVERSE_D(77, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_78(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_78(o, s, MSGPACK_PP_LIST_REVERSE_D(78, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_79(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_79(o, s, MSGPACK_PP_LIST_REVERSE_D(79, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_80(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_80(o, s, MSGPACK_PP_LIST_REVERSE_D(80, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_81(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_81(o, s, MSGPACK_PP_LIST_REVERSE_D(81, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_82(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_82(o, s, MSGPACK_PP_LIST_REVERSE_D(82, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_83(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_83(o, s, MSGPACK_PP_LIST_REVERSE_D(83, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_84(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_84(o, s, MSGPACK_PP_LIST_REVERSE_D(84, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_85(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_85(o, s, MSGPACK_PP_LIST_REVERSE_D(85, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_86(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_86(o, s, MSGPACK_PP_LIST_REVERSE_D(86, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_87(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_87(o, s, MSGPACK_PP_LIST_REVERSE_D(87, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_88(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_88(o, s, MSGPACK_PP_LIST_REVERSE_D(88, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_89(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_89(o, s, MSGPACK_PP_LIST_REVERSE_D(89, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_90(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_90(o, s, MSGPACK_PP_LIST_REVERSE_D(90, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_91(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_91(o, s, MSGPACK_PP_LIST_REVERSE_D(91, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_92(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_92(o, s, MSGPACK_PP_LIST_REVERSE_D(92, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_93(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_93(o, s, MSGPACK_PP_LIST_REVERSE_D(93, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_94(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_94(o, s, MSGPACK_PP_LIST_REVERSE_D(94, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_95(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_95(o, s, MSGPACK_PP_LIST_REVERSE_D(95, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_96(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_96(o, s, MSGPACK_PP_LIST_REVERSE_D(96, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_97(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_97(o, s, MSGPACK_PP_LIST_REVERSE_D(97, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_98(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_98(o, s, MSGPACK_PP_LIST_REVERSE_D(98, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_99(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_99(o, s, MSGPACK_PP_LIST_REVERSE_D(99, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_100(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_100(o, s, MSGPACK_PP_LIST_REVERSE_D(100, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_101(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_101(o, s, MSGPACK_PP_LIST_REVERSE_D(101, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_102(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_102(o, s, MSGPACK_PP_LIST_REVERSE_D(102, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_103(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_103(o, s, MSGPACK_PP_LIST_REVERSE_D(103, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_104(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_104(o, s, MSGPACK_PP_LIST_REVERSE_D(104, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_105(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_105(o, s, MSGPACK_PP_LIST_REVERSE_D(105, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_106(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_106(o, s, MSGPACK_PP_LIST_REVERSE_D(106, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_107(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_107(o, s, MSGPACK_PP_LIST_REVERSE_D(107, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_108(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_108(o, s, MSGPACK_PP_LIST_REVERSE_D(108, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_109(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_109(o, s, MSGPACK_PP_LIST_REVERSE_D(109, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_110(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_110(o, s, MSGPACK_PP_LIST_REVERSE_D(110, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_111(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_111(o, s, MSGPACK_PP_LIST_REVERSE_D(111, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_112(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_112(o, s, MSGPACK_PP_LIST_REVERSE_D(112, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_113(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_113(o, s, MSGPACK_PP_LIST_REVERSE_D(113, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_114(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_114(o, s, MSGPACK_PP_LIST_REVERSE_D(114, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_115(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_115(o, s, MSGPACK_PP_LIST_REVERSE_D(115, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_116(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_116(o, s, MSGPACK_PP_LIST_REVERSE_D(116, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_117(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_117(o, s, MSGPACK_PP_LIST_REVERSE_D(117, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_118(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_118(o, s, MSGPACK_PP_LIST_REVERSE_D(118, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_119(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_119(o, s, MSGPACK_PP_LIST_REVERSE_D(119, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_120(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_120(o, s, MSGPACK_PP_LIST_REVERSE_D(120, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_121(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_121(o, s, MSGPACK_PP_LIST_REVERSE_D(121, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_122(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_122(o, s, MSGPACK_PP_LIST_REVERSE_D(122, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_123(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_123(o, s, MSGPACK_PP_LIST_REVERSE_D(123, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_124(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_124(o, s, MSGPACK_PP_LIST_REVERSE_D(124, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_125(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_125(o, s, MSGPACK_PP_LIST_REVERSE_D(125, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_126(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_126(o, s, MSGPACK_PP_LIST_REVERSE_D(126, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_127(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_127(o, s, MSGPACK_PP_LIST_REVERSE_D(127, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_128(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_128(o, s, MSGPACK_PP_LIST_REVERSE_D(128, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_129(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_129(o, s, MSGPACK_PP_LIST_REVERSE_D(129, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_130(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_130(o, s, MSGPACK_PP_LIST_REVERSE_D(130, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_131(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_131(o, s, MSGPACK_PP_LIST_REVERSE_D(131, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_132(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_132(o, s, MSGPACK_PP_LIST_REVERSE_D(132, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_133(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_133(o, s, MSGPACK_PP_LIST_REVERSE_D(133, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_134(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_134(o, s, MSGPACK_PP_LIST_REVERSE_D(134, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_135(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_135(o, s, MSGPACK_PP_LIST_REVERSE_D(135, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_136(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_136(o, s, MSGPACK_PP_LIST_REVERSE_D(136, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_137(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_137(o, s, MSGPACK_PP_LIST_REVERSE_D(137, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_138(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_138(o, s, MSGPACK_PP_LIST_REVERSE_D(138, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_139(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_139(o, s, MSGPACK_PP_LIST_REVERSE_D(139, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_140(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_140(o, s, MSGPACK_PP_LIST_REVERSE_D(140, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_141(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_141(o, s, MSGPACK_PP_LIST_REVERSE_D(141, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_142(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_142(o, s, MSGPACK_PP_LIST_REVERSE_D(142, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_143(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_143(o, s, MSGPACK_PP_LIST_REVERSE_D(143, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_144(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_144(o, s, MSGPACK_PP_LIST_REVERSE_D(144, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_145(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_145(o, s, MSGPACK_PP_LIST_REVERSE_D(145, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_146(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_146(o, s, MSGPACK_PP_LIST_REVERSE_D(146, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_147(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_147(o, s, MSGPACK_PP_LIST_REVERSE_D(147, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_148(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_148(o, s, MSGPACK_PP_LIST_REVERSE_D(148, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_149(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_149(o, s, MSGPACK_PP_LIST_REVERSE_D(149, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_150(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_150(o, s, MSGPACK_PP_LIST_REVERSE_D(150, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_151(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_151(o, s, MSGPACK_PP_LIST_REVERSE_D(151, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_152(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_152(o, s, MSGPACK_PP_LIST_REVERSE_D(152, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_153(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_153(o, s, MSGPACK_PP_LIST_REVERSE_D(153, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_154(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_154(o, s, MSGPACK_PP_LIST_REVERSE_D(154, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_155(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_155(o, s, MSGPACK_PP_LIST_REVERSE_D(155, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_156(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_156(o, s, MSGPACK_PP_LIST_REVERSE_D(156, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_157(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_157(o, s, MSGPACK_PP_LIST_REVERSE_D(157, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_158(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_158(o, s, MSGPACK_PP_LIST_REVERSE_D(158, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_159(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_159(o, s, MSGPACK_PP_LIST_REVERSE_D(159, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_160(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_160(o, s, MSGPACK_PP_LIST_REVERSE_D(160, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_161(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_161(o, s, MSGPACK_PP_LIST_REVERSE_D(161, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_162(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_162(o, s, MSGPACK_PP_LIST_REVERSE_D(162, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_163(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_163(o, s, MSGPACK_PP_LIST_REVERSE_D(163, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_164(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_164(o, s, MSGPACK_PP_LIST_REVERSE_D(164, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_165(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_165(o, s, MSGPACK_PP_LIST_REVERSE_D(165, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_166(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_166(o, s, MSGPACK_PP_LIST_REVERSE_D(166, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_167(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_167(o, s, MSGPACK_PP_LIST_REVERSE_D(167, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_168(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_168(o, s, MSGPACK_PP_LIST_REVERSE_D(168, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_169(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_169(o, s, MSGPACK_PP_LIST_REVERSE_D(169, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_170(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_170(o, s, MSGPACK_PP_LIST_REVERSE_D(170, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_171(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_171(o, s, MSGPACK_PP_LIST_REVERSE_D(171, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_172(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_172(o, s, MSGPACK_PP_LIST_REVERSE_D(172, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_173(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_173(o, s, MSGPACK_PP_LIST_REVERSE_D(173, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_174(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_174(o, s, MSGPACK_PP_LIST_REVERSE_D(174, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_175(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_175(o, s, MSGPACK_PP_LIST_REVERSE_D(175, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_176(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_176(o, s, MSGPACK_PP_LIST_REVERSE_D(176, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_177(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_177(o, s, MSGPACK_PP_LIST_REVERSE_D(177, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_178(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_178(o, s, MSGPACK_PP_LIST_REVERSE_D(178, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_179(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_179(o, s, MSGPACK_PP_LIST_REVERSE_D(179, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_180(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_180(o, s, MSGPACK_PP_LIST_REVERSE_D(180, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_181(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_181(o, s, MSGPACK_PP_LIST_REVERSE_D(181, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_182(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_182(o, s, MSGPACK_PP_LIST_REVERSE_D(182, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_183(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_183(o, s, MSGPACK_PP_LIST_REVERSE_D(183, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_184(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_184(o, s, MSGPACK_PP_LIST_REVERSE_D(184, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_185(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_185(o, s, MSGPACK_PP_LIST_REVERSE_D(185, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_186(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_186(o, s, MSGPACK_PP_LIST_REVERSE_D(186, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_187(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_187(o, s, MSGPACK_PP_LIST_REVERSE_D(187, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_188(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_188(o, s, MSGPACK_PP_LIST_REVERSE_D(188, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_189(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_189(o, s, MSGPACK_PP_LIST_REVERSE_D(189, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_190(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_190(o, s, MSGPACK_PP_LIST_REVERSE_D(190, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_191(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_191(o, s, MSGPACK_PP_LIST_REVERSE_D(191, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_192(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_192(o, s, MSGPACK_PP_LIST_REVERSE_D(192, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_193(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_193(o, s, MSGPACK_PP_LIST_REVERSE_D(193, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_194(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_194(o, s, MSGPACK_PP_LIST_REVERSE_D(194, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_195(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_195(o, s, MSGPACK_PP_LIST_REVERSE_D(195, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_196(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_196(o, s, MSGPACK_PP_LIST_REVERSE_D(196, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_197(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_197(o, s, MSGPACK_PP_LIST_REVERSE_D(197, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_198(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_198(o, s, MSGPACK_PP_LIST_REVERSE_D(198, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_199(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_199(o, s, MSGPACK_PP_LIST_REVERSE_D(199, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_200(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_200(o, s, MSGPACK_PP_LIST_REVERSE_D(200, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_201(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_201(o, s, MSGPACK_PP_LIST_REVERSE_D(201, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_202(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_202(o, s, MSGPACK_PP_LIST_REVERSE_D(202, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_203(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_203(o, s, MSGPACK_PP_LIST_REVERSE_D(203, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_204(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_204(o, s, MSGPACK_PP_LIST_REVERSE_D(204, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_205(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_205(o, s, MSGPACK_PP_LIST_REVERSE_D(205, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_206(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_206(o, s, MSGPACK_PP_LIST_REVERSE_D(206, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_207(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_207(o, s, MSGPACK_PP_LIST_REVERSE_D(207, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_208(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_208(o, s, MSGPACK_PP_LIST_REVERSE_D(208, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_209(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_209(o, s, MSGPACK_PP_LIST_REVERSE_D(209, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_210(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_210(o, s, MSGPACK_PP_LIST_REVERSE_D(210, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_211(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_211(o, s, MSGPACK_PP_LIST_REVERSE_D(211, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_212(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_212(o, s, MSGPACK_PP_LIST_REVERSE_D(212, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_213(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_213(o, s, MSGPACK_PP_LIST_REVERSE_D(213, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_214(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_214(o, s, MSGPACK_PP_LIST_REVERSE_D(214, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_215(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_215(o, s, MSGPACK_PP_LIST_REVERSE_D(215, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_216(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_216(o, s, MSGPACK_PP_LIST_REVERSE_D(216, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_217(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_217(o, s, MSGPACK_PP_LIST_REVERSE_D(217, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_218(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_218(o, s, MSGPACK_PP_LIST_REVERSE_D(218, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_219(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_219(o, s, MSGPACK_PP_LIST_REVERSE_D(219, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_220(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_220(o, s, MSGPACK_PP_LIST_REVERSE_D(220, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_221(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_221(o, s, MSGPACK_PP_LIST_REVERSE_D(221, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_222(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_222(o, s, MSGPACK_PP_LIST_REVERSE_D(222, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_223(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_223(o, s, MSGPACK_PP_LIST_REVERSE_D(223, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_224(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_224(o, s, MSGPACK_PP_LIST_REVERSE_D(224, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_225(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_225(o, s, MSGPACK_PP_LIST_REVERSE_D(225, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_226(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_226(o, s, MSGPACK_PP_LIST_REVERSE_D(226, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_227(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_227(o, s, MSGPACK_PP_LIST_REVERSE_D(227, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_228(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_228(o, s, MSGPACK_PP_LIST_REVERSE_D(228, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_229(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_229(o, s, MSGPACK_PP_LIST_REVERSE_D(229, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_230(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_230(o, s, MSGPACK_PP_LIST_REVERSE_D(230, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_231(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_231(o, s, MSGPACK_PP_LIST_REVERSE_D(231, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_232(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_232(o, s, MSGPACK_PP_LIST_REVERSE_D(232, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_233(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_233(o, s, MSGPACK_PP_LIST_REVERSE_D(233, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_234(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_234(o, s, MSGPACK_PP_LIST_REVERSE_D(234, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_235(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_235(o, s, MSGPACK_PP_LIST_REVERSE_D(235, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_236(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_236(o, s, MSGPACK_PP_LIST_REVERSE_D(236, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_237(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_237(o, s, MSGPACK_PP_LIST_REVERSE_D(237, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_238(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_238(o, s, MSGPACK_PP_LIST_REVERSE_D(238, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_239(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_239(o, s, MSGPACK_PP_LIST_REVERSE_D(239, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_240(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_240(o, s, MSGPACK_PP_LIST_REVERSE_D(240, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_241(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_241(o, s, MSGPACK_PP_LIST_REVERSE_D(241, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_242(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_242(o, s, MSGPACK_PP_LIST_REVERSE_D(242, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_243(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_243(o, s, MSGPACK_PP_LIST_REVERSE_D(243, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_244(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_244(o, s, MSGPACK_PP_LIST_REVERSE_D(244, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_245(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_245(o, s, MSGPACK_PP_LIST_REVERSE_D(245, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_246(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_246(o, s, MSGPACK_PP_LIST_REVERSE_D(246, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_247(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_247(o, s, MSGPACK_PP_LIST_REVERSE_D(247, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_248(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_248(o, s, MSGPACK_PP_LIST_REVERSE_D(248, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_249(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_249(o, s, MSGPACK_PP_LIST_REVERSE_D(249, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_250(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_250(o, s, MSGPACK_PP_LIST_REVERSE_D(250, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_251(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_251(o, s, MSGPACK_PP_LIST_REVERSE_D(251, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_252(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_252(o, s, MSGPACK_PP_LIST_REVERSE_D(252, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_253(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_253(o, s, MSGPACK_PP_LIST_REVERSE_D(253, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_254(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_254(o, s, MSGPACK_PP_LIST_REVERSE_D(254, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_255(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_255(o, s, MSGPACK_PP_LIST_REVERSE_D(255, l))
+# define MSGPACK_PP_LIST_FOLD_RIGHT_256(o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_256(o, s, MSGPACK_PP_LIST_REVERSE_D(256, l))
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/list/enum.hpp b/third_party/msgpack/include/msgpack/preprocessor/list/enum.hpp
new file mode 100644
index 0000000000..4515f07007
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/list/enum.hpp
@@ -0,0 +1,41 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LIST_ENUM_HPP
+# define MSGPACK_PREPROCESSOR_LIST_ENUM_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/list/for_each_i.hpp>
+# include <msgpack/preprocessor/punctuation/comma_if.hpp>
+#
+# /* MSGPACK_PP_LIST_ENUM */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_ENUM(list) MSGPACK_PP_LIST_FOR_EACH_I(MSGPACK_PP_LIST_ENUM_O, MSGPACK_PP_NIL, list)
+# else
+# define MSGPACK_PP_LIST_ENUM(list) MSGPACK_PP_LIST_ENUM_I(list)
+# define MSGPACK_PP_LIST_ENUM_I(list) MSGPACK_PP_LIST_FOR_EACH_I(MSGPACK_PP_LIST_ENUM_O, MSGPACK_PP_NIL, list)
+# endif
+#
+# define MSGPACK_PP_LIST_ENUM_O(r, _, i, elem) MSGPACK_PP_COMMA_IF(i) elem
+#
+# /* MSGPACK_PP_LIST_ENUM_R */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_ENUM_R(r, list) MSGPACK_PP_LIST_FOR_EACH_I_R(r, MSGPACK_PP_LIST_ENUM_O, MSGPACK_PP_NIL, list)
+# else
+# define MSGPACK_PP_LIST_ENUM_R(r, list) MSGPACK_PP_LIST_ENUM_R_I(r, list)
+# define MSGPACK_PP_LIST_ENUM_R_I(r, list) MSGPACK_PP_LIST_FOR_EACH_I_R(r, MSGPACK_PP_LIST_ENUM_O, MSGPACK_PP_NIL, list)
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/list/filter.hpp b/third_party/msgpack/include/msgpack/preprocessor/list/filter.hpp
new file mode 100644
index 0000000000..af3e7c3538
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/list/filter.hpp
@@ -0,0 +1,54 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LIST_FILTER_HPP
+# define MSGPACK_PREPROCESSOR_LIST_FILTER_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/control/if.hpp>
+# include <msgpack/preprocessor/list/fold_right.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+# include <msgpack/preprocessor/tuple/rem.hpp>
+#
+# /* MSGPACK_PP_LIST_FILTER */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_FILTER(pred, data, list) MSGPACK_PP_TUPLE_ELEM(3, 2, MSGPACK_PP_LIST_FOLD_RIGHT(MSGPACK_PP_LIST_FILTER_O, (pred, data, MSGPACK_PP_NIL), list))
+# else
+# define MSGPACK_PP_LIST_FILTER(pred, data, list) MSGPACK_PP_LIST_FILTER_I(pred, data, list)
+# define MSGPACK_PP_LIST_FILTER_I(pred, data, list) MSGPACK_PP_TUPLE_ELEM(3, 2, MSGPACK_PP_LIST_FOLD_RIGHT(MSGPACK_PP_LIST_FILTER_O, (pred, data, MSGPACK_PP_NIL), list))
+# endif
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_FILTER_O(d, pdr, elem) MSGPACK_PP_LIST_FILTER_O_D(d, MSGPACK_PP_TUPLE_ELEM(3, 0, pdr), MSGPACK_PP_TUPLE_ELEM(3, 1, pdr), MSGPACK_PP_TUPLE_ELEM(3, 2, pdr), elem)
+# else
+# define MSGPACK_PP_LIST_FILTER_O(d, pdr, elem) MSGPACK_PP_LIST_FILTER_O_I(d, MSGPACK_PP_TUPLE_REM_3 pdr, elem)
+# define MSGPACK_PP_LIST_FILTER_O_I(d, im, elem) MSGPACK_PP_LIST_FILTER_O_D(d, im, elem)
+# endif
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_DMC()
+# define MSGPACK_PP_LIST_FILTER_O_D(d, pred, data, res, elem) (pred, data, MSGPACK_PP_IF(pred(d, data, elem), (elem, res), res))
+# else
+# define MSGPACK_PP_LIST_FILTER_O_D(d, pred, data, res, elem) (pred, data, MSGPACK_PP_IF(pred##(d, data, elem), (elem, res), res))
+# endif
+#
+# /* MSGPACK_PP_LIST_FILTER_D */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_FILTER_D(d, pred, data, list) MSGPACK_PP_TUPLE_ELEM(3, 2, MSGPACK_PP_LIST_FOLD_RIGHT_ ## d(MSGPACK_PP_LIST_FILTER_O, (pred, data, MSGPACK_PP_NIL), list))
+# else
+# define MSGPACK_PP_LIST_FILTER_D(d, pred, data, list) MSGPACK_PP_LIST_FILTER_D_I(d, pred, data, list)
+# define MSGPACK_PP_LIST_FILTER_D_I(d, pred, data, list) MSGPACK_PP_TUPLE_ELEM(3, 2, MSGPACK_PP_LIST_FOLD_RIGHT_ ## d(MSGPACK_PP_LIST_FILTER_O, (pred, data, MSGPACK_PP_NIL), list))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/list/first_n.hpp b/third_party/msgpack/include/msgpack/preprocessor/list/first_n.hpp
new file mode 100644
index 0000000000..60b1ef162f
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/list/first_n.hpp
@@ -0,0 +1,58 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LIST_FIRST_N_HPP
+# define MSGPACK_PREPROCESSOR_LIST_FIRST_N_HPP
+#
+# include <msgpack/preprocessor/arithmetic/dec.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/control/while.hpp>
+# include <msgpack/preprocessor/list/adt.hpp>
+# include <msgpack/preprocessor/list/reverse.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+# include <msgpack/preprocessor/tuple/rem.hpp>
+#
+# /* MSGPACK_PP_LIST_FIRST_N */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_FIRST_N(count, list) MSGPACK_PP_LIST_REVERSE(MSGPACK_PP_TUPLE_ELEM(3, 2, MSGPACK_PP_WHILE(MSGPACK_PP_LIST_FIRST_N_P, MSGPACK_PP_LIST_FIRST_N_O, (count, list, MSGPACK_PP_NIL))))
+# else
+# define MSGPACK_PP_LIST_FIRST_N(count, list) MSGPACK_PP_LIST_FIRST_N_I(count, list)
+# define MSGPACK_PP_LIST_FIRST_N_I(count, list) MSGPACK_PP_LIST_REVERSE(MSGPACK_PP_TUPLE_ELEM(3, 2, MSGPACK_PP_WHILE(MSGPACK_PP_LIST_FIRST_N_P, MSGPACK_PP_LIST_FIRST_N_O, (count, list, MSGPACK_PP_NIL))))
+# endif
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_FIRST_N_P(d, data) MSGPACK_PP_TUPLE_ELEM(3, 0, data)
+# else
+# define MSGPACK_PP_LIST_FIRST_N_P(d, data) MSGPACK_PP_LIST_FIRST_N_P_I data
+# define MSGPACK_PP_LIST_FIRST_N_P_I(c, l, nl) c
+# endif
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_LIST_FIRST_N_O(d, data) MSGPACK_PP_LIST_FIRST_N_O_D data
+# else
+# define MSGPACK_PP_LIST_FIRST_N_O(d, data) MSGPACK_PP_LIST_FIRST_N_O_D(MSGPACK_PP_TUPLE_ELEM(3, 0, data), MSGPACK_PP_TUPLE_ELEM(3, 1, data), MSGPACK_PP_TUPLE_ELEM(3, 2, data))
+# endif
+#
+# define MSGPACK_PP_LIST_FIRST_N_O_D(c, l, nl) (MSGPACK_PP_DEC(c), MSGPACK_PP_LIST_REST(l), (MSGPACK_PP_LIST_FIRST(l), nl))
+#
+# /* MSGPACK_PP_LIST_FIRST_N_D */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_FIRST_N_D(d, count, list) MSGPACK_PP_LIST_REVERSE_D(d, MSGPACK_PP_TUPLE_ELEM(3, 2, MSGPACK_PP_WHILE_ ## d(MSGPACK_PP_LIST_FIRST_N_P, MSGPACK_PP_LIST_FIRST_N_O, (count, list, MSGPACK_PP_NIL))))
+# else
+# define MSGPACK_PP_LIST_FIRST_N_D(d, count, list) MSGPACK_PP_LIST_FIRST_N_D_I(d, count, list)
+# define MSGPACK_PP_LIST_FIRST_N_D_I(d, count, list) MSGPACK_PP_LIST_REVERSE_D(d, MSGPACK_PP_TUPLE_ELEM(3, 2, MSGPACK_PP_WHILE_ ## d(MSGPACK_PP_LIST_FIRST_N_P, MSGPACK_PP_LIST_FIRST_N_O, (count, list, MSGPACK_PP_NIL))))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/list/fold_left.hpp b/third_party/msgpack/include/msgpack/preprocessor/list/fold_left.hpp
new file mode 100644
index 0000000000..2cd0c05185
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/list/fold_left.hpp
@@ -0,0 +1,303 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LIST_FOLD_LEFT_HPP
+# define MSGPACK_PREPROCESSOR_LIST_FOLD_LEFT_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/control/while.hpp>
+# include <msgpack/preprocessor/debug/error.hpp>
+# include <msgpack/preprocessor/detail/auto_rec.hpp>
+#
+# /* MSGPACK_PP_LIST_FOLD_LEFT */
+#
+# if 0
+# define MSGPACK_PP_LIST_FOLD_LEFT(op, state, list)
+# endif
+#
+# define MSGPACK_PP_LIST_FOLD_LEFT MSGPACK_PP_CAT(MSGPACK_PP_LIST_FOLD_LEFT_, MSGPACK_PP_AUTO_REC(MSGPACK_PP_WHILE_P, 256))
+#
+# define MSGPACK_PP_LIST_FOLD_LEFT_257(o, s, l) MSGPACK_PP_ERROR(0x0004)
+#
+# define MSGPACK_PP_LIST_FOLD_LEFT_D(d, o, s, l) MSGPACK_PP_LIST_FOLD_LEFT_ ## d(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_LEFT_2ND MSGPACK_PP_LIST_FOLD_LEFT
+# define MSGPACK_PP_LIST_FOLD_LEFT_2ND_D MSGPACK_PP_LIST_FOLD_LEFT_D
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# include <msgpack/preprocessor/list/detail/edg/fold_left.hpp>
+# elif MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_DMC()
+# include <msgpack/preprocessor/list/detail/dmc/fold_left.hpp>
+# else
+# include <msgpack/preprocessor/list/detail/fold_left.hpp>
+# endif
+#
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_NIL 1
+#
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_1(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_2(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_3(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_4(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_5(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_6(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_7(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_8(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_9(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_10(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_11(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_12(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_13(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_14(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_15(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_16(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_17(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_18(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_19(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_20(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_21(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_22(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_23(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_24(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_25(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_26(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_27(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_28(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_29(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_30(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_31(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_32(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_33(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_34(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_35(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_36(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_37(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_38(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_39(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_40(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_41(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_42(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_43(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_44(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_45(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_46(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_47(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_48(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_49(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_50(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_51(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_52(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_53(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_54(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_55(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_56(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_57(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_58(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_59(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_60(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_61(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_62(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_63(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_64(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_65(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_66(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_67(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_68(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_69(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_70(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_71(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_72(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_73(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_74(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_75(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_76(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_77(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_78(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_79(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_80(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_81(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_82(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_83(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_84(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_85(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_86(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_87(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_88(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_89(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_90(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_91(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_92(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_93(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_94(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_95(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_96(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_97(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_98(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_99(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_100(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_101(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_102(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_103(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_104(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_105(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_106(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_107(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_108(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_109(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_110(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_111(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_112(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_113(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_114(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_115(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_116(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_117(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_118(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_119(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_120(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_121(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_122(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_123(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_124(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_125(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_126(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_127(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_128(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_129(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_130(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_131(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_132(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_133(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_134(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_135(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_136(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_137(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_138(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_139(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_140(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_141(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_142(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_143(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_144(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_145(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_146(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_147(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_148(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_149(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_150(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_151(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_152(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_153(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_154(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_155(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_156(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_157(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_158(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_159(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_160(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_161(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_162(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_163(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_164(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_165(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_166(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_167(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_168(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_169(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_170(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_171(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_172(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_173(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_174(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_175(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_176(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_177(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_178(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_179(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_180(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_181(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_182(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_183(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_184(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_185(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_186(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_187(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_188(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_189(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_190(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_191(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_192(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_193(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_194(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_195(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_196(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_197(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_198(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_199(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_200(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_201(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_202(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_203(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_204(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_205(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_206(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_207(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_208(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_209(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_210(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_211(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_212(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_213(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_214(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_215(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_216(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_217(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_218(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_219(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_220(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_221(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_222(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_223(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_224(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_225(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_226(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_227(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_228(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_229(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_230(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_231(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_232(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_233(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_234(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_235(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_236(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_237(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_238(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_239(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_240(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_241(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_242(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_243(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_244(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_245(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_246(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_247(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_248(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_249(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_250(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_251(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_252(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_253(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_254(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_255(o, s, l) 0
+# define MSGPACK_PP_LIST_FOLD_LEFT_CHECK_MSGPACK_PP_LIST_FOLD_LEFT_256(o, s, l) 0
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/list/fold_right.hpp b/third_party/msgpack/include/msgpack/preprocessor/list/fold_right.hpp
new file mode 100644
index 0000000000..4595ce718b
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/list/fold_right.hpp
@@ -0,0 +1,40 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LIST_FOLD_RIGHT_HPP
+# define MSGPACK_PREPROCESSOR_LIST_FOLD_RIGHT_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/control/while.hpp>
+# include <msgpack/preprocessor/debug/error.hpp>
+# include <msgpack/preprocessor/detail/auto_rec.hpp>
+#
+# if 0
+# define MSGPACK_PP_LIST_FOLD_RIGHT(op, state, list)
+# endif
+#
+# define MSGPACK_PP_LIST_FOLD_RIGHT MSGPACK_PP_CAT(MSGPACK_PP_LIST_FOLD_RIGHT_, MSGPACK_PP_AUTO_REC(MSGPACK_PP_WHILE_P, 256))
+#
+# define MSGPACK_PP_LIST_FOLD_RIGHT_257(o, s, l) MSGPACK_PP_ERROR(0x0004)
+#
+# define MSGPACK_PP_LIST_FOLD_RIGHT_D(d, o, s, l) MSGPACK_PP_LIST_FOLD_RIGHT_ ## d(o, s, l)
+# define MSGPACK_PP_LIST_FOLD_RIGHT_2ND MSGPACK_PP_LIST_FOLD_RIGHT
+# define MSGPACK_PP_LIST_FOLD_RIGHT_2ND_D MSGPACK_PP_LIST_FOLD_RIGHT_D
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# include <msgpack/preprocessor/list/detail/edg/fold_right.hpp>
+# else
+# include <msgpack/preprocessor/list/detail/fold_right.hpp>
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/list/for_each.hpp b/third_party/msgpack/include/msgpack/preprocessor/list/for_each.hpp
new file mode 100644
index 0000000000..d8b707ba8c
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/list/for_each.hpp
@@ -0,0 +1,49 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LIST_FOR_EACH_HPP
+# define MSGPACK_PREPROCESSOR_LIST_FOR_EACH_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/list/for_each_i.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+# include <msgpack/preprocessor/tuple/rem.hpp>
+#
+# /* MSGPACK_PP_LIST_FOR_EACH */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_FOR_EACH(macro, data, list) MSGPACK_PP_LIST_FOR_EACH_I(MSGPACK_PP_LIST_FOR_EACH_O, (macro, data), list)
+# else
+# define MSGPACK_PP_LIST_FOR_EACH(macro, data, list) MSGPACK_PP_LIST_FOR_EACH_X(macro, data, list)
+# define MSGPACK_PP_LIST_FOR_EACH_X(macro, data, list) MSGPACK_PP_LIST_FOR_EACH_I(MSGPACK_PP_LIST_FOR_EACH_O, (macro, data), list)
+# endif
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_FOR_EACH_O(r, md, i, elem) MSGPACK_PP_LIST_FOR_EACH_O_D(r, MSGPACK_PP_TUPLE_ELEM(2, 0, md), MSGPACK_PP_TUPLE_ELEM(2, 1, md), elem)
+# else
+# define MSGPACK_PP_LIST_FOR_EACH_O(r, md, i, elem) MSGPACK_PP_LIST_FOR_EACH_O_I(r, MSGPACK_PP_TUPLE_REM_2 md, elem)
+# define MSGPACK_PP_LIST_FOR_EACH_O_I(r, im, elem) MSGPACK_PP_LIST_FOR_EACH_O_D(r, im, elem)
+# endif
+#
+# define MSGPACK_PP_LIST_FOR_EACH_O_D(r, m, d, elem) m(r, d, elem)
+#
+# /* MSGPACK_PP_LIST_FOR_EACH_R */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_FOR_EACH_R(r, macro, data, list) MSGPACK_PP_LIST_FOR_EACH_I_R(r, MSGPACK_PP_LIST_FOR_EACH_O, (macro, data), list)
+# else
+# define MSGPACK_PP_LIST_FOR_EACH_R(r, macro, data, list) MSGPACK_PP_LIST_FOR_EACH_R_X(r, macro, data, list)
+# define MSGPACK_PP_LIST_FOR_EACH_R_X(r, macro, data, list) MSGPACK_PP_LIST_FOR_EACH_I_R(r, MSGPACK_PP_LIST_FOR_EACH_O, (macro, data), list)
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/list/for_each_i.hpp b/third_party/msgpack/include/msgpack/preprocessor/list/for_each_i.hpp
new file mode 100644
index 0000000000..6a5b7339e3
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/list/for_each_i.hpp
@@ -0,0 +1,65 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LIST_LIST_FOR_EACH_I_HPP
+# define MSGPACK_PREPROCESSOR_LIST_LIST_FOR_EACH_I_HPP
+#
+# include <msgpack/preprocessor/arithmetic/inc.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/list/adt.hpp>
+# include <msgpack/preprocessor/repetition/for.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+# include <msgpack/preprocessor/tuple/rem.hpp>
+#
+# /* MSGPACK_PP_LIST_FOR_EACH_I */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG() && ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MSVC()
+# define MSGPACK_PP_LIST_FOR_EACH_I(macro, data, list) MSGPACK_PP_FOR((macro, data, list, 0), MSGPACK_PP_LIST_FOR_EACH_I_P, MSGPACK_PP_LIST_FOR_EACH_I_O, MSGPACK_PP_LIST_FOR_EACH_I_M)
+# else
+# define MSGPACK_PP_LIST_FOR_EACH_I(macro, data, list) MSGPACK_PP_LIST_FOR_EACH_I_I(macro, data, list)
+# define MSGPACK_PP_LIST_FOR_EACH_I_I(macro, data, list) MSGPACK_PP_FOR((macro, data, list, 0), MSGPACK_PP_LIST_FOR_EACH_I_P, MSGPACK_PP_LIST_FOR_EACH_I_O, MSGPACK_PP_LIST_FOR_EACH_I_M)
+# endif
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_STRICT()
+# define MSGPACK_PP_LIST_FOR_EACH_I_P(r, x) MSGPACK_PP_LIST_FOR_EACH_I_P_D x
+# define MSGPACK_PP_LIST_FOR_EACH_I_P_D(m, d, l, i) MSGPACK_PP_LIST_IS_CONS(l)
+# else
+# define MSGPACK_PP_LIST_FOR_EACH_I_P(r, x) MSGPACK_PP_LIST_IS_CONS(MSGPACK_PP_TUPLE_ELEM(4, 2, x))
+# endif
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_LIST_FOR_EACH_I_O(r, x) MSGPACK_PP_LIST_FOR_EACH_I_O_D x
+# define MSGPACK_PP_LIST_FOR_EACH_I_O_D(m, d, l, i) (m, d, MSGPACK_PP_LIST_REST(l), MSGPACK_PP_INC(i))
+# else
+# define MSGPACK_PP_LIST_FOR_EACH_I_O(r, x) (MSGPACK_PP_TUPLE_ELEM(4, 0, x), MSGPACK_PP_TUPLE_ELEM(4, 1, x), MSGPACK_PP_LIST_REST(MSGPACK_PP_TUPLE_ELEM(4, 2, x)), MSGPACK_PP_INC(MSGPACK_PP_TUPLE_ELEM(4, 3, x)))
+# endif
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_FOR_EACH_I_M(r, x) MSGPACK_PP_LIST_FOR_EACH_I_M_D(r, MSGPACK_PP_TUPLE_ELEM(4, 0, x), MSGPACK_PP_TUPLE_ELEM(4, 1, x), MSGPACK_PP_TUPLE_ELEM(4, 2, x), MSGPACK_PP_TUPLE_ELEM(4, 3, x))
+# else
+# define MSGPACK_PP_LIST_FOR_EACH_I_M(r, x) MSGPACK_PP_LIST_FOR_EACH_I_M_I(r, MSGPACK_PP_TUPLE_REM_4 x)
+# define MSGPACK_PP_LIST_FOR_EACH_I_M_I(r, x_e) MSGPACK_PP_LIST_FOR_EACH_I_M_D(r, x_e)
+# endif
+#
+# define MSGPACK_PP_LIST_FOR_EACH_I_M_D(r, m, d, l, i) m(r, d, i, MSGPACK_PP_LIST_FIRST(l))
+#
+# /* MSGPACK_PP_LIST_FOR_EACH_I_R */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_FOR_EACH_I_R(r, macro, data, list) MSGPACK_PP_FOR_ ## r((macro, data, list, 0), MSGPACK_PP_LIST_FOR_EACH_I_P, MSGPACK_PP_LIST_FOR_EACH_I_O, MSGPACK_PP_LIST_FOR_EACH_I_M)
+# else
+# define MSGPACK_PP_LIST_FOR_EACH_I_R(r, macro, data, list) MSGPACK_PP_LIST_FOR_EACH_I_R_I(r, macro, data, list)
+# define MSGPACK_PP_LIST_FOR_EACH_I_R_I(r, macro, data, list) MSGPACK_PP_FOR_ ## r((macro, data, list, 0), MSGPACK_PP_LIST_FOR_EACH_I_P, MSGPACK_PP_LIST_FOR_EACH_I_O, MSGPACK_PP_LIST_FOR_EACH_I_M)
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/list/for_each_product.hpp b/third_party/msgpack/include/msgpack/preprocessor/list/for_each_product.hpp
new file mode 100644
index 0000000000..62c4722a8c
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/list/for_each_product.hpp
@@ -0,0 +1,141 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LIST_FOR_EACH_PRODUCT_HPP
+# define MSGPACK_PREPROCESSOR_LIST_FOR_EACH_PRODUCT_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/control/if.hpp>
+# include <msgpack/preprocessor/list/adt.hpp>
+# include <msgpack/preprocessor/list/to_tuple.hpp>
+# include <msgpack/preprocessor/repetition/for.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+# include <msgpack/preprocessor/tuple/to_list.hpp>
+# include <msgpack/preprocessor/tuple/rem.hpp>
+# include <msgpack/preprocessor/tuple/reverse.hpp>
+#
+# /* MSGPACK_PP_LIST_FOR_EACH_PRODUCT */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT(macro, size, tuple) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_E(MSGPACK_PP_FOR, macro, size, MSGPACK_PP_TUPLE_TO_LIST(size, tuple))
+# else
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT(macro, size, tuple) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_Q(macro, size, tuple)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_Q(macro, size, tuple) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_E(MSGPACK_PP_FOR, macro, size, MSGPACK_PP_TUPLE_TO_LIST(size, tuple))
+# endif
+#
+# /* MSGPACK_PP_LIST_FOR_EACH_PRODUCT_R */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_R(r, macro, size, tuple) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_E(MSGPACK_PP_FOR_ ## r, macro, size, MSGPACK_PP_TUPLE_TO_LIST(size, tuple))
+# else
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_R(r, macro, size, tuple) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_R_Q(r, macro, size, tuple)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_R_Q(r, macro, size, tuple) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_E(MSGPACK_PP_FOR_ ## r, macro, size, MSGPACK_PP_TUPLE_TO_LIST(size, tuple))
+# endif
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_E(impl, macro, size, lists) impl((MSGPACK_PP_LIST_FIRST(lists), MSGPACK_PP_LIST_REST(lists), MSGPACK_PP_NIL, macro, size), MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_0)
+# else
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_E(impl, macro, size, lists) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_E_D(impl, macro, size, lists)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_E_D(impl, macro, size, lists) impl((MSGPACK_PP_LIST_FIRST(lists), MSGPACK_PP_LIST_REST(lists), MSGPACK_PP_NIL, macro, size), MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_0)
+# endif
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_STRICT()
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P(r, data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P_I data
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P_I(a, b, res, macro, size) MSGPACK_PP_LIST_IS_CONS(a)
+# else
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P(r, data) MSGPACK_PP_LIST_IS_CONS(MSGPACK_PP_TUPLE_ELEM(5, 0, data))
+# endif
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O(r, data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O_I data
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O_I(a, b, res, macro, size) (MSGPACK_PP_LIST_REST(a), b, res, macro, size)
+# else
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O(r, data) (MSGPACK_PP_LIST_REST(MSGPACK_PP_TUPLE_ELEM(5, 0, data)), MSGPACK_PP_TUPLE_ELEM(5, 1, data), MSGPACK_PP_TUPLE_ELEM(5, 2, data), MSGPACK_PP_TUPLE_ELEM(5, 3, data), MSGPACK_PP_TUPLE_ELEM(5, 4, data))
+# endif
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_I(r, data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_I_I(r, MSGPACK_PP_TUPLE_ELEM(5, 0, data), MSGPACK_PP_TUPLE_ELEM(5, 1, data), MSGPACK_PP_TUPLE_ELEM(5, 2, data), MSGPACK_PP_TUPLE_ELEM(5, 3, data), MSGPACK_PP_TUPLE_ELEM(5, 4, data))
+# else
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_I(r, data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_I_D(r, MSGPACK_PP_TUPLE_REM_5 data)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_I_D(r, data_e) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_I_I(r, data_e)
+# endif
+#
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_I_I(r, a, b, res, macro, size) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_I_II(r, macro, MSGPACK_PP_LIST_TO_TUPLE_R(r, (MSGPACK_PP_LIST_FIRST(a), res)), size)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_I_II(r, macro, args, size) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_I_III(r, macro, args, size)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_I_III(r, macro, args, size) macro(r, MSGPACK_PP_TUPLE_REVERSE(size, args))
+#
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_C(data, i) MSGPACK_PP_IF(MSGPACK_PP_LIST_IS_CONS(MSGPACK_PP_TUPLE_ELEM(5, 1, data)), MSGPACK_PP_LIST_FOR_EACH_PRODUCT_N_ ## i, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_I)
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_H(data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_H_I data
+# else
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_H(data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_H_I(MSGPACK_PP_TUPLE_ELEM(5, 0, data), MSGPACK_PP_TUPLE_ELEM(5, 1, data), MSGPACK_PP_TUPLE_ELEM(5, 2, data), MSGPACK_PP_TUPLE_ELEM(5, 3, data), MSGPACK_PP_TUPLE_ELEM(5, 4, data))
+# endif
+#
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_H_I(a, b, res, macro, size) (MSGPACK_PP_LIST_FIRST(b), MSGPACK_PP_LIST_REST(b), (MSGPACK_PP_LIST_FIRST(a), res), macro, size)
+#
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_0(r, data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_C(data, 0)(r, data)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_1(r, data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_C(data, 1)(r, data)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_2(r, data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_C(data, 2)(r, data)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_3(r, data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_C(data, 3)(r, data)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_4(r, data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_C(data, 4)(r, data)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_5(r, data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_C(data, 5)(r, data)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_6(r, data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_C(data, 6)(r, data)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_7(r, data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_C(data, 7)(r, data)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_8(r, data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_C(data, 8)(r, data)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_9(r, data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_C(data, 9)(r, data)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_10(r, data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_C(data, 10)(r, data)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_11(r, data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_C(data, 11)(r, data)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_12(r, data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_C(data, 12)(r, data)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_13(r, data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_C(data, 13)(r, data)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_14(r, data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_C(data, 14)(r, data)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_15(r, data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_C(data, 15)(r, data)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_16(r, data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_C(data, 16)(r, data)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_17(r, data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_C(data, 17)(r, data)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_18(r, data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_C(data, 18)(r, data)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_19(r, data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_C(data, 19)(r, data)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_20(r, data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_C(data, 20)(r, data)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_21(r, data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_C(data, 21)(r, data)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_22(r, data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_C(data, 22)(r, data)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_23(r, data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_C(data, 23)(r, data)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_24(r, data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_C(data, 24)(r, data)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_25(r, data) MSGPACK_PP_LIST_FOR_EACH_PRODUCT_C(data, 25)(r, data)
+#
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_N_0(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_LIST_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_1)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_N_1(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_LIST_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_2)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_N_2(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_LIST_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_3)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_N_3(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_LIST_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_4)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_N_4(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_LIST_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_5)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_N_5(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_LIST_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_6)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_N_6(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_LIST_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_7)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_N_7(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_LIST_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_8)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_N_8(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_LIST_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_9)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_N_9(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_LIST_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_10)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_N_10(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_LIST_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_11)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_N_11(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_LIST_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_12)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_N_12(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_LIST_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_13)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_N_13(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_LIST_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_14)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_N_14(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_LIST_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_15)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_N_15(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_LIST_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_16)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_N_16(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_LIST_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_17)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_N_17(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_LIST_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_18)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_N_18(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_LIST_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_19)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_N_19(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_LIST_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_20)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_N_20(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_LIST_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_21)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_N_21(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_LIST_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_22)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_N_22(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_LIST_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_23)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_N_23(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_LIST_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_24)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_N_24(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_LIST_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_25)
+# define MSGPACK_PP_LIST_FOR_EACH_PRODUCT_N_25(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_LIST_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_LIST_FOR_EACH_PRODUCT_P, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_O, MSGPACK_PP_LIST_FOR_EACH_PRODUCT_M_26)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/list/rest_n.hpp b/third_party/msgpack/include/msgpack/preprocessor/list/rest_n.hpp
new file mode 100644
index 0000000000..0f60ac23ce
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/list/rest_n.hpp
@@ -0,0 +1,55 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LIST_REST_N_HPP
+# define MSGPACK_PREPROCESSOR_LIST_REST_N_HPP
+#
+# include <msgpack/preprocessor/arithmetic/dec.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/control/while.hpp>
+# include <msgpack/preprocessor/list/adt.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+#
+# /* MSGPACK_PP_LIST_REST_N */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_REST_N(count, list) MSGPACK_PP_TUPLE_ELEM(2, 0, MSGPACK_PP_WHILE(MSGPACK_PP_LIST_REST_N_P, MSGPACK_PP_LIST_REST_N_O, (list, count)))
+# else
+# define MSGPACK_PP_LIST_REST_N(count, list) MSGPACK_PP_LIST_REST_N_I(count, list)
+# define MSGPACK_PP_LIST_REST_N_I(count, list) MSGPACK_PP_TUPLE_ELEM(2, 0, MSGPACK_PP_WHILE(MSGPACK_PP_LIST_REST_N_P, MSGPACK_PP_LIST_REST_N_O, (list, count)))
+# endif
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_REST_N_P(d, lc) MSGPACK_PP_TUPLE_ELEM(2, 1, lc)
+# else
+# define MSGPACK_PP_LIST_REST_N_P(d, lc) MSGPACK_PP_LIST_REST_N_P_I lc
+# define MSGPACK_PP_LIST_REST_N_P_I(list, count) count
+# endif
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_REST_N_O(d, lc) (MSGPACK_PP_LIST_REST(MSGPACK_PP_TUPLE_ELEM(2, 0, lc)), MSGPACK_PP_DEC(MSGPACK_PP_TUPLE_ELEM(2, 1, lc)))
+# else
+# define MSGPACK_PP_LIST_REST_N_O(d, lc) MSGPACK_PP_LIST_REST_N_O_I lc
+# define MSGPACK_PP_LIST_REST_N_O_I(list, count) (MSGPACK_PP_LIST_REST(list), MSGPACK_PP_DEC(count))
+# endif
+#
+# /* MSGPACK_PP_LIST_REST_N_D */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_REST_N_D(d, count, list) MSGPACK_PP_TUPLE_ELEM(2, 0, MSGPACK_PP_WHILE_ ## d(MSGPACK_PP_LIST_REST_N_P, MSGPACK_PP_LIST_REST_N_O, (list, count)))
+# else
+# define MSGPACK_PP_LIST_REST_N_D(d, count, list) MSGPACK_PP_LIST_REST_N_D_I(d, count, list)
+# define MSGPACK_PP_LIST_REST_N_D_I(d, count, list) MSGPACK_PP_TUPLE_ELEM(2, 0, MSGPACK_PP_WHILE_ ## d(MSGPACK_PP_LIST_REST_N_P, MSGPACK_PP_LIST_REST_N_O, (list, count)))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/list/reverse.hpp b/third_party/msgpack/include/msgpack/preprocessor/list/reverse.hpp
new file mode 100644
index 0000000000..96083109fe
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/list/reverse.hpp
@@ -0,0 +1,40 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LIST_REVERSE_HPP
+# define MSGPACK_PREPROCESSOR_LIST_REVERSE_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/list/fold_left.hpp>
+#
+# /* MSGPACK_PP_LIST_REVERSE */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_REVERSE(list) MSGPACK_PP_LIST_FOLD_LEFT(MSGPACK_PP_LIST_REVERSE_O, MSGPACK_PP_NIL, list)
+# else
+# define MSGPACK_PP_LIST_REVERSE(list) MSGPACK_PP_LIST_REVERSE_I(list)
+# define MSGPACK_PP_LIST_REVERSE_I(list) MSGPACK_PP_LIST_FOLD_LEFT(MSGPACK_PP_LIST_REVERSE_O, MSGPACK_PP_NIL, list)
+# endif
+#
+# define MSGPACK_PP_LIST_REVERSE_O(d, s, x) (x, s)
+#
+# /* MSGPACK_PP_LIST_REVERSE_D */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_REVERSE_D(d, list) MSGPACK_PP_LIST_FOLD_LEFT_ ## d(MSGPACK_PP_LIST_REVERSE_O, MSGPACK_PP_NIL, list)
+# else
+# define MSGPACK_PP_LIST_REVERSE_D(d, list) MSGPACK_PP_LIST_REVERSE_D_I(d, list)
+# define MSGPACK_PP_LIST_REVERSE_D_I(d, list) MSGPACK_PP_LIST_FOLD_LEFT_ ## d(MSGPACK_PP_LIST_REVERSE_O, MSGPACK_PP_NIL, list)
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/list/size.hpp b/third_party/msgpack/include/msgpack/preprocessor/list/size.hpp
new file mode 100644
index 0000000000..b3ac7f3dd8
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/list/size.hpp
@@ -0,0 +1,58 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LIST_SIZE_HPP
+# define MSGPACK_PREPROCESSOR_LIST_SIZE_HPP
+#
+# include <msgpack/preprocessor/arithmetic/inc.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/control/while.hpp>
+# include <msgpack/preprocessor/list/adt.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+# include <msgpack/preprocessor/tuple/rem.hpp>
+#
+# /* MSGPACK_PP_LIST_SIZE */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_SIZE(list) MSGPACK_PP_TUPLE_ELEM(2, 0, MSGPACK_PP_WHILE(MSGPACK_PP_LIST_SIZE_P, MSGPACK_PP_LIST_SIZE_O, (0, list)))
+# else
+# define MSGPACK_PP_LIST_SIZE(list) MSGPACK_PP_LIST_SIZE_I(list)
+# define MSGPACK_PP_LIST_SIZE_I(list) MSGPACK_PP_TUPLE_ELEM(2, 0, MSGPACK_PP_WHILE(MSGPACK_PP_LIST_SIZE_P, MSGPACK_PP_LIST_SIZE_O, (0, list)))
+# endif
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_SIZE_P(d, rl) MSGPACK_PP_LIST_IS_CONS(MSGPACK_PP_TUPLE_ELEM(2, 1, rl))
+# else
+# define MSGPACK_PP_LIST_SIZE_P(d, rl) MSGPACK_PP_LIST_SIZE_P_I(MSGPACK_PP_TUPLE_REM_2 rl)
+# define MSGPACK_PP_LIST_SIZE_P_I(im) MSGPACK_PP_LIST_SIZE_P_II(im)
+# define MSGPACK_PP_LIST_SIZE_P_II(r, l) MSGPACK_PP_LIST_IS_CONS(l)
+# endif
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_SIZE_O(d, rl) (MSGPACK_PP_INC(MSGPACK_PP_TUPLE_ELEM(2, 0, rl)), MSGPACK_PP_LIST_REST(MSGPACK_PP_TUPLE_ELEM(2, 1, rl)))
+# else
+# define MSGPACK_PP_LIST_SIZE_O(d, rl) MSGPACK_PP_LIST_SIZE_O_I(MSGPACK_PP_TUPLE_REM_2 rl)
+# define MSGPACK_PP_LIST_SIZE_O_I(im) MSGPACK_PP_LIST_SIZE_O_II(im)
+# define MSGPACK_PP_LIST_SIZE_O_II(r, l) (MSGPACK_PP_INC(r), MSGPACK_PP_LIST_REST(l))
+# endif
+#
+# /* MSGPACK_PP_LIST_SIZE_D */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_SIZE_D(d, list) MSGPACK_PP_TUPLE_ELEM(2, 0, MSGPACK_PP_WHILE_ ## d(MSGPACK_PP_LIST_SIZE_P, MSGPACK_PP_LIST_SIZE_O, (0, list)))
+# else
+# define MSGPACK_PP_LIST_SIZE_D(d, list) MSGPACK_PP_LIST_SIZE_D_I(d, list)
+# define MSGPACK_PP_LIST_SIZE_D_I(d, list) MSGPACK_PP_TUPLE_ELEM(2, 0, MSGPACK_PP_WHILE_ ## d(MSGPACK_PP_LIST_SIZE_P, MSGPACK_PP_LIST_SIZE_O, (0, list)))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/list/to_array.hpp b/third_party/msgpack/include/msgpack/preprocessor/list/to_array.hpp
new file mode 100644
index 0000000000..2c86c654b0
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/list/to_array.hpp
@@ -0,0 +1,155 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2011.
+# * (C) Copyright Edward Diener 2011,2014.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LIST_TO_ARRAY_HPP
+# define MSGPACK_PREPROCESSOR_LIST_TO_ARRAY_HPP
+#
+# include <msgpack/preprocessor/arithmetic/dec.hpp>
+# include <msgpack/preprocessor/arithmetic/inc.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/control/while.hpp>
+# include <msgpack/preprocessor/list/adt.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+# include <msgpack/preprocessor/tuple/rem.hpp>
+# if MSGPACK_PP_VARIADICS && MSGPACK_PP_VARIADICS_MSVC && (_MSC_VER <= 1400)
+# include <msgpack/preprocessor/control/iif.hpp>
+# endif
+#
+# /* MSGPACK_PP_LIST_TO_ARRAY */
+#
+# if MSGPACK_PP_VARIADICS && MSGPACK_PP_VARIADICS_MSVC && (_MSC_VER <= 1400)
+# define MSGPACK_PP_LIST_TO_ARRAY(list) \
+ MSGPACK_PP_IIF \
+ ( \
+ MSGPACK_PP_LIST_IS_NIL(list), \
+ MSGPACK_PP_LIST_TO_ARRAY_VC8ORLESS_EMPTY, \
+ MSGPACK_PP_LIST_TO_ARRAY_VC8ORLESS_DO \
+ ) \
+ (list) \
+/**/
+# define MSGPACK_PP_LIST_TO_ARRAY_VC8ORLESS_EMPTY(list) (0,())
+# define MSGPACK_PP_LIST_TO_ARRAY_VC8ORLESS_DO(list) MSGPACK_PP_LIST_TO_ARRAY_I(MSGPACK_PP_WHILE, list)
+# else
+# define MSGPACK_PP_LIST_TO_ARRAY(list) MSGPACK_PP_LIST_TO_ARRAY_I(MSGPACK_PP_WHILE, list)
+# endif
+
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MSVC()
+# define MSGPACK_PP_LIST_TO_ARRAY_I(w, list) \
+ MSGPACK_PP_LIST_TO_ARRAY_II(((MSGPACK_PP_TUPLE_REM_CTOR( \
+ 3, \
+ w(MSGPACK_PP_LIST_TO_ARRAY_P, MSGPACK_PP_LIST_TO_ARRAY_O, (list, 1, (~))) \
+ )))) \
+ /**/
+# define MSGPACK_PP_LIST_TO_ARRAY_II(p) MSGPACK_PP_LIST_TO_ARRAY_II_B(p)
+# define MSGPACK_PP_LIST_TO_ARRAY_II_B(p) MSGPACK_PP_LIST_TO_ARRAY_II_C ## p
+# define MSGPACK_PP_LIST_TO_ARRAY_II_C(p) MSGPACK_PP_LIST_TO_ARRAY_III p
+# else
+# define MSGPACK_PP_LIST_TO_ARRAY_I(w, list) \
+ MSGPACK_PP_LIST_TO_ARRAY_II(MSGPACK_PP_TUPLE_REM_CTOR( \
+ 3, \
+ w(MSGPACK_PP_LIST_TO_ARRAY_P, MSGPACK_PP_LIST_TO_ARRAY_O, (list, 1, (~))) \
+ )) \
+ /**/
+# define MSGPACK_PP_LIST_TO_ARRAY_II(im) MSGPACK_PP_LIST_TO_ARRAY_III(im)
+# endif
+# if MSGPACK_PP_VARIADICS
+# define MSGPACK_PP_LIST_TO_ARRAY_III(list, size, tuple) (MSGPACK_PP_DEC(size), MSGPACK_PP_LIST_TO_ARRAY_IV tuple)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV(_, ...) (__VA_ARGS__)
+# else
+# define MSGPACK_PP_LIST_TO_ARRAY_III(list, size, tuple) (MSGPACK_PP_DEC(size), MSGPACK_PP_LIST_TO_ARRAY_IV_ ## size tuple)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_2(_, e0) (e0)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_3(_, e0, e1) (e0, e1)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_4(_, e0, e1, e2) (e0, e1, e2)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_5(_, e0, e1, e2, e3) (e0, e1, e2, e3)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_6(_, e0, e1, e2, e3, e4) (e0, e1, e2, e3, e4)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_7(_, e0, e1, e2, e3, e4, e5) (e0, e1, e2, e3, e4, e5)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_8(_, e0, e1, e2, e3, e4, e5, e6) (e0, e1, e2, e3, e4, e5, e6)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_9(_, e0, e1, e2, e3, e4, e5, e6, e7) (e0, e1, e2, e3, e4, e5, e6, e7)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_10(_, e0, e1, e2, e3, e4, e5, e6, e7, e8) (e0, e1, e2, e3, e4, e5, e6, e7, e8)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_11(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_12(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_13(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_14(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_15(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_16(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_17(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_18(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_19(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_20(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_21(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_22(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_23(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_24(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_25(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_26(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_27(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_28(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_29(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_30(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_31(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_32(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_33(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_34(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_35(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_36(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_37(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_38(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_39(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_40(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_41(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_42(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_43(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_44(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_45(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_46(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_47(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_48(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_49(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_50(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_51(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_52(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_53(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_54(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_55(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_56(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_57(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_58(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_59(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_60(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_61(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_62(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_63(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61)
+# define MSGPACK_PP_LIST_TO_ARRAY_IV_64(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62)
+# endif
+# define MSGPACK_PP_LIST_TO_ARRAY_P(d, state) MSGPACK_PP_LIST_IS_CONS(MSGPACK_PP_TUPLE_ELEM(3, 0, state))
+# define MSGPACK_PP_LIST_TO_ARRAY_O(d, state) MSGPACK_PP_LIST_TO_ARRAY_O_I state
+# define MSGPACK_PP_LIST_TO_ARRAY_O_I(list, size, tuple) (MSGPACK_PP_LIST_REST(list), MSGPACK_PP_INC(size), (MSGPACK_PP_TUPLE_REM(size) tuple, MSGPACK_PP_LIST_FIRST(list)))
+#
+# /* MSGPACK_PP_LIST_TO_ARRAY_D */
+#
+# if MSGPACK_PP_VARIADICS && MSGPACK_PP_VARIADICS_MSVC && (_MSC_VER <= 1400)
+# define MSGPACK_PP_LIST_TO_ARRAY_D(d, list) \
+ MSGPACK_PP_IIF \
+ ( \
+ MSGPACK_PP_LIST_IS_NIL(list), \
+ MSGPACK_PP_LIST_TO_ARRAY_D_VC8ORLESS_EMPTY, \
+ MSGPACK_PP_LIST_TO_ARRAY_D_VC8ORLESS_DO \
+ ) \
+ (d, list) \
+/**/
+# define MSGPACK_PP_LIST_TO_ARRAY_D_VC8ORLESS_EMPTY(d, list) (0,())
+# define MSGPACK_PP_LIST_TO_ARRAY_D_VC8ORLESS_DO(d, list) MSGPACK_PP_LIST_TO_ARRAY_I(MSGPACK_PP_WHILE_ ## d, list)
+# else
+# define MSGPACK_PP_LIST_TO_ARRAY_D(d, list) MSGPACK_PP_LIST_TO_ARRAY_I(MSGPACK_PP_WHILE_ ## d, list)
+# endif
+#
+# endif /* MSGPACK_PREPROCESSOR_LIST_TO_ARRAY_HPP */
diff --git a/third_party/msgpack/include/msgpack/preprocessor/list/to_seq.hpp b/third_party/msgpack/include/msgpack/preprocessor/list/to_seq.hpp
new file mode 100644
index 0000000000..a200eef744
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/list/to_seq.hpp
@@ -0,0 +1,32 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* Revised by Paul Mensonides (2011) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LIST_TO_SEQ_HPP
+# define MSGPACK_PREPROCESSOR_LIST_TO_SEQ_HPP
+#
+# include <msgpack/preprocessor/list/for_each.hpp>
+#
+# /* MSGPACK_PP_LIST_TO_SEQ */
+#
+# define MSGPACK_PP_LIST_TO_SEQ(list) \
+ MSGPACK_PP_LIST_FOR_EACH(MSGPACK_PP_LIST_TO_SEQ_MACRO, ~, list) \
+ /**/
+# define MSGPACK_PP_LIST_TO_SEQ_MACRO(r, data, elem) (elem)
+#
+# /* MSGPACK_PP_LIST_TO_SEQ_R */
+#
+# define MSGPACK_PP_LIST_TO_SEQ_R(r, list) \
+ MSGPACK_PP_LIST_FOR_EACH_R(r, MSGPACK_PP_LIST_TO_SEQ_MACRO, ~, list) \
+ /**/
+#
+# endif /* MSGPACK_PREPROCESSOR_LIST_TO_SEQ_HPP */
diff --git a/third_party/msgpack/include/msgpack/preprocessor/list/to_tuple.hpp b/third_party/msgpack/include/msgpack/preprocessor/list/to_tuple.hpp
new file mode 100644
index 0000000000..7e33fa0eaf
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/list/to_tuple.hpp
@@ -0,0 +1,61 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LIST_TO_TUPLE_HPP
+# define MSGPACK_PREPROCESSOR_LIST_TO_TUPLE_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/list/enum.hpp>
+# include <msgpack/preprocessor/control/iif.hpp>
+#
+# /* MSGPACK_PP_LIST_TO_TUPLE */
+#
+# define MSGPACK_PP_LIST_TO_TUPLE(list) \
+ MSGPACK_PP_IIF \
+ ( \
+ MSGPACK_PP_LIST_IS_NIL(list), \
+ MSGPACK_PP_LIST_TO_TUPLE_EMPTY, \
+ MSGPACK_PP_LIST_TO_TUPLE_DO \
+ ) \
+ (list) \
+/**/
+# define MSGPACK_PP_LIST_TO_TUPLE_EMPTY(list)
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_TO_TUPLE_DO(list) (MSGPACK_PP_LIST_ENUM(list))
+# else
+# define MSGPACK_PP_LIST_TO_TUPLE_DO(list) MSGPACK_PP_LIST_TO_TUPLE_I(list)
+# define MSGPACK_PP_LIST_TO_TUPLE_I(list) (MSGPACK_PP_LIST_ENUM(list))
+# endif
+#
+# /* MSGPACK_PP_LIST_TO_TUPLE_R */
+#
+# define MSGPACK_PP_LIST_TO_TUPLE_R(r, list) \
+ MSGPACK_PP_IIF \
+ ( \
+ MSGPACK_PP_LIST_IS_NIL(list), \
+ MSGPACK_PP_LIST_TO_TUPLE_R_EMPTY, \
+ MSGPACK_PP_LIST_TO_TUPLE_R_DO \
+ ) \
+ (r, list) \
+/**/
+# define MSGPACK_PP_LIST_TO_TUPLE_R_EMPTY(r,list)
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_TO_TUPLE_R_DO(r, list) (MSGPACK_PP_LIST_ENUM_R(r, list))
+# else
+# define MSGPACK_PP_LIST_TO_TUPLE_R_DO(r, list) MSGPACK_PP_LIST_TO_TUPLE_R_I(r, list)
+# define MSGPACK_PP_LIST_TO_TUPLE_R_I(r, list) (MSGPACK_PP_LIST_ENUM_R(r, list))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/list/transform.hpp b/third_party/msgpack/include/msgpack/preprocessor/list/transform.hpp
new file mode 100644
index 0000000000..b398bd05ee
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/list/transform.hpp
@@ -0,0 +1,49 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LIST_TRANSFORM_HPP
+# define MSGPACK_PREPROCESSOR_LIST_TRANSFORM_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/list/fold_right.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+# include <msgpack/preprocessor/tuple/rem.hpp>
+#
+# /* MSGPACK_PP_LIST_TRANSFORM */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_TRANSFORM(op, data, list) MSGPACK_PP_TUPLE_ELEM(3, 2, MSGPACK_PP_LIST_FOLD_RIGHT(MSGPACK_PP_LIST_TRANSFORM_O, (op, data, MSGPACK_PP_NIL), list))
+# else
+# define MSGPACK_PP_LIST_TRANSFORM(op, data, list) MSGPACK_PP_LIST_TRANSFORM_I(op, data, list)
+# define MSGPACK_PP_LIST_TRANSFORM_I(op, data, list) MSGPACK_PP_TUPLE_ELEM(3, 2, MSGPACK_PP_LIST_FOLD_RIGHT(MSGPACK_PP_LIST_TRANSFORM_O, (op, data, MSGPACK_PP_NIL), list))
+# endif
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_TRANSFORM_O(d, odr, elem) MSGPACK_PP_LIST_TRANSFORM_O_D(d, MSGPACK_PP_TUPLE_ELEM(3, 0, odr), MSGPACK_PP_TUPLE_ELEM(3, 1, odr), MSGPACK_PP_TUPLE_ELEM(3, 2, odr), elem)
+# else
+# define MSGPACK_PP_LIST_TRANSFORM_O(d, odr, elem) MSGPACK_PP_LIST_TRANSFORM_O_I(d, MSGPACK_PP_TUPLE_REM_3 odr, elem)
+# define MSGPACK_PP_LIST_TRANSFORM_O_I(d, im, elem) MSGPACK_PP_LIST_TRANSFORM_O_D(d, im, elem)
+# endif
+#
+# define MSGPACK_PP_LIST_TRANSFORM_O_D(d, op, data, res, elem) (op, data, (op(d, data, elem), res))
+#
+# /* MSGPACK_PP_LIST_TRANSFORM_D */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LIST_TRANSFORM_D(d, op, data, list) MSGPACK_PP_TUPLE_ELEM(3, 2, MSGPACK_PP_LIST_FOLD_RIGHT_ ## d(MSGPACK_PP_LIST_TRANSFORM_O, (op, data, MSGPACK_PP_NIL), list))
+# else
+# define MSGPACK_PP_LIST_TRANSFORM_D(d, op, data, list) MSGPACK_PP_LIST_TRANSFORM_D_I(d, op, data, list)
+# define MSGPACK_PP_LIST_TRANSFORM_D_I(d, op, data, list) MSGPACK_PP_TUPLE_ELEM(3, 2, MSGPACK_PP_LIST_FOLD_RIGHT_ ## d(MSGPACK_PP_LIST_TRANSFORM_O, (op, data, MSGPACK_PP_NIL), list))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/logical.hpp b/third_party/msgpack/include/msgpack/preprocessor/logical.hpp
new file mode 100644
index 0000000000..c4aef7b609
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/logical.hpp
@@ -0,0 +1,29 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LOGICAL_HPP
+# define MSGPACK_PREPROCESSOR_LOGICAL_HPP
+#
+# include <msgpack/preprocessor/logical/and.hpp>
+# include <msgpack/preprocessor/logical/bitand.hpp>
+# include <msgpack/preprocessor/logical/bitnor.hpp>
+# include <msgpack/preprocessor/logical/bitor.hpp>
+# include <msgpack/preprocessor/logical/bitxor.hpp>
+# include <msgpack/preprocessor/logical/bool.hpp>
+# include <msgpack/preprocessor/logical/compl.hpp>
+# include <msgpack/preprocessor/logical/nor.hpp>
+# include <msgpack/preprocessor/logical/not.hpp>
+# include <msgpack/preprocessor/logical/or.hpp>
+# include <msgpack/preprocessor/logical/xor.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/logical/and.hpp b/third_party/msgpack/include/msgpack/preprocessor/logical/and.hpp
new file mode 100644
index 0000000000..b6552459a4
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/logical/and.hpp
@@ -0,0 +1,30 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LOGICAL_AND_HPP
+# define MSGPACK_PREPROCESSOR_LOGICAL_AND_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/logical/bool.hpp>
+# include <msgpack/preprocessor/logical/bitand.hpp>
+#
+# /* MSGPACK_PP_AND */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_AND(p, q) MSGPACK_PP_BITAND(MSGPACK_PP_BOOL(p), MSGPACK_PP_BOOL(q))
+# else
+# define MSGPACK_PP_AND(p, q) MSGPACK_PP_AND_I(p, q)
+# define MSGPACK_PP_AND_I(p, q) MSGPACK_PP_BITAND(MSGPACK_PP_BOOL(p), MSGPACK_PP_BOOL(q))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/logical/bitand.hpp b/third_party/msgpack/include/msgpack/preprocessor/logical/bitand.hpp
new file mode 100644
index 0000000000..6326c52639
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/logical/bitand.hpp
@@ -0,0 +1,38 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LOGICAL_BITAND_HPP
+# define MSGPACK_PREPROCESSOR_LOGICAL_BITAND_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# /* MSGPACK_PP_BITAND */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_BITAND(x, y) MSGPACK_PP_BITAND_I(x, y)
+# else
+# define MSGPACK_PP_BITAND(x, y) MSGPACK_PP_BITAND_OO((x, y))
+# define MSGPACK_PP_BITAND_OO(par) MSGPACK_PP_BITAND_I ## par
+# endif
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MSVC()
+# define MSGPACK_PP_BITAND_I(x, y) MSGPACK_PP_BITAND_ ## x ## y
+# else
+# define MSGPACK_PP_BITAND_I(x, y) MSGPACK_PP_BITAND_ID(MSGPACK_PP_BITAND_ ## x ## y)
+# define MSGPACK_PP_BITAND_ID(res) res
+# endif
+#
+# define MSGPACK_PP_BITAND_00 0
+# define MSGPACK_PP_BITAND_01 0
+# define MSGPACK_PP_BITAND_10 0
+# define MSGPACK_PP_BITAND_11 1
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/logical/bitnor.hpp b/third_party/msgpack/include/msgpack/preprocessor/logical/bitnor.hpp
new file mode 100644
index 0000000000..e8882ac456
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/logical/bitnor.hpp
@@ -0,0 +1,38 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LOGICAL_BITNOR_HPP
+# define MSGPACK_PREPROCESSOR_LOGICAL_BITNOR_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# /* MSGPACK_PP_BITNOR */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_BITNOR(x, y) MSGPACK_PP_BITNOR_I(x, y)
+# else
+# define MSGPACK_PP_BITNOR(x, y) MSGPACK_PP_BITNOR_OO((x, y))
+# define MSGPACK_PP_BITNOR_OO(par) MSGPACK_PP_BITNOR_I ## par
+# endif
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MSVC()
+# define MSGPACK_PP_BITNOR_I(x, y) MSGPACK_PP_BITNOR_ ## x ## y
+# else
+# define MSGPACK_PP_BITNOR_I(x, y) MSGPACK_PP_BITNOR_ID(MSGPACK_PP_BITNOR_ ## x ## y)
+# define MSGPACK_PP_BITNOR_ID(id) id
+# endif
+#
+# define MSGPACK_PP_BITNOR_00 1
+# define MSGPACK_PP_BITNOR_01 0
+# define MSGPACK_PP_BITNOR_10 0
+# define MSGPACK_PP_BITNOR_11 0
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/logical/bitor.hpp b/third_party/msgpack/include/msgpack/preprocessor/logical/bitor.hpp
new file mode 100644
index 0000000000..0a0525d841
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/logical/bitor.hpp
@@ -0,0 +1,38 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LOGICAL_BITOR_HPP
+# define MSGPACK_PREPROCESSOR_LOGICAL_BITOR_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# /* MSGPACK_PP_BITOR */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_BITOR(x, y) MSGPACK_PP_BITOR_I(x, y)
+# else
+# define MSGPACK_PP_BITOR(x, y) MSGPACK_PP_BITOR_OO((x, y))
+# define MSGPACK_PP_BITOR_OO(par) MSGPACK_PP_BITOR_I ## par
+# endif
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MSVC()
+# define MSGPACK_PP_BITOR_I(x, y) MSGPACK_PP_BITOR_ ## x ## y
+# else
+# define MSGPACK_PP_BITOR_I(x, y) MSGPACK_PP_BITOR_ID(MSGPACK_PP_BITOR_ ## x ## y)
+# define MSGPACK_PP_BITOR_ID(id) id
+# endif
+#
+# define MSGPACK_PP_BITOR_00 0
+# define MSGPACK_PP_BITOR_01 1
+# define MSGPACK_PP_BITOR_10 1
+# define MSGPACK_PP_BITOR_11 1
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/logical/bitxor.hpp b/third_party/msgpack/include/msgpack/preprocessor/logical/bitxor.hpp
new file mode 100644
index 0000000000..20a749322c
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/logical/bitxor.hpp
@@ -0,0 +1,38 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LOGICAL_BITXOR_HPP
+# define MSGPACK_PREPROCESSOR_LOGICAL_BITXOR_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# /* MSGPACK_PP_BITXOR */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_BITXOR(x, y) MSGPACK_PP_BITXOR_I(x, y)
+# else
+# define MSGPACK_PP_BITXOR(x, y) MSGPACK_PP_BITXOR_OO((x, y))
+# define MSGPACK_PP_BITXOR_OO(par) MSGPACK_PP_BITXOR_I ## par
+# endif
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MSVC()
+# define MSGPACK_PP_BITXOR_I(x, y) MSGPACK_PP_BITXOR_ ## x ## y
+# else
+# define MSGPACK_PP_BITXOR_I(x, y) MSGPACK_PP_BITXOR_ID(MSGPACK_PP_BITXOR_ ## x ## y)
+# define MSGPACK_PP_BITXOR_ID(id) id
+# endif
+#
+# define MSGPACK_PP_BITXOR_00 0
+# define MSGPACK_PP_BITXOR_01 1
+# define MSGPACK_PP_BITXOR_10 1
+# define MSGPACK_PP_BITXOR_11 0
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/logical/bool.hpp b/third_party/msgpack/include/msgpack/preprocessor/logical/bool.hpp
new file mode 100644
index 0000000000..2ba0f3a871
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/logical/bool.hpp
@@ -0,0 +1,288 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LOGICAL_BOOL_HPP
+# define MSGPACK_PREPROCESSOR_LOGICAL_BOOL_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# /* MSGPACK_PP_BOOL */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_BOOL(x) MSGPACK_PP_BOOL_I(x)
+# else
+# define MSGPACK_PP_BOOL(x) MSGPACK_PP_BOOL_OO((x))
+# define MSGPACK_PP_BOOL_OO(par) MSGPACK_PP_BOOL_I ## par
+# endif
+#
+# define MSGPACK_PP_BOOL_I(x) MSGPACK_PP_BOOL_ ## x
+#
+# define MSGPACK_PP_BOOL_0 0
+# define MSGPACK_PP_BOOL_1 1
+# define MSGPACK_PP_BOOL_2 1
+# define MSGPACK_PP_BOOL_3 1
+# define MSGPACK_PP_BOOL_4 1
+# define MSGPACK_PP_BOOL_5 1
+# define MSGPACK_PP_BOOL_6 1
+# define MSGPACK_PP_BOOL_7 1
+# define MSGPACK_PP_BOOL_8 1
+# define MSGPACK_PP_BOOL_9 1
+# define MSGPACK_PP_BOOL_10 1
+# define MSGPACK_PP_BOOL_11 1
+# define MSGPACK_PP_BOOL_12 1
+# define MSGPACK_PP_BOOL_13 1
+# define MSGPACK_PP_BOOL_14 1
+# define MSGPACK_PP_BOOL_15 1
+# define MSGPACK_PP_BOOL_16 1
+# define MSGPACK_PP_BOOL_17 1
+# define MSGPACK_PP_BOOL_18 1
+# define MSGPACK_PP_BOOL_19 1
+# define MSGPACK_PP_BOOL_20 1
+# define MSGPACK_PP_BOOL_21 1
+# define MSGPACK_PP_BOOL_22 1
+# define MSGPACK_PP_BOOL_23 1
+# define MSGPACK_PP_BOOL_24 1
+# define MSGPACK_PP_BOOL_25 1
+# define MSGPACK_PP_BOOL_26 1
+# define MSGPACK_PP_BOOL_27 1
+# define MSGPACK_PP_BOOL_28 1
+# define MSGPACK_PP_BOOL_29 1
+# define MSGPACK_PP_BOOL_30 1
+# define MSGPACK_PP_BOOL_31 1
+# define MSGPACK_PP_BOOL_32 1
+# define MSGPACK_PP_BOOL_33 1
+# define MSGPACK_PP_BOOL_34 1
+# define MSGPACK_PP_BOOL_35 1
+# define MSGPACK_PP_BOOL_36 1
+# define MSGPACK_PP_BOOL_37 1
+# define MSGPACK_PP_BOOL_38 1
+# define MSGPACK_PP_BOOL_39 1
+# define MSGPACK_PP_BOOL_40 1
+# define MSGPACK_PP_BOOL_41 1
+# define MSGPACK_PP_BOOL_42 1
+# define MSGPACK_PP_BOOL_43 1
+# define MSGPACK_PP_BOOL_44 1
+# define MSGPACK_PP_BOOL_45 1
+# define MSGPACK_PP_BOOL_46 1
+# define MSGPACK_PP_BOOL_47 1
+# define MSGPACK_PP_BOOL_48 1
+# define MSGPACK_PP_BOOL_49 1
+# define MSGPACK_PP_BOOL_50 1
+# define MSGPACK_PP_BOOL_51 1
+# define MSGPACK_PP_BOOL_52 1
+# define MSGPACK_PP_BOOL_53 1
+# define MSGPACK_PP_BOOL_54 1
+# define MSGPACK_PP_BOOL_55 1
+# define MSGPACK_PP_BOOL_56 1
+# define MSGPACK_PP_BOOL_57 1
+# define MSGPACK_PP_BOOL_58 1
+# define MSGPACK_PP_BOOL_59 1
+# define MSGPACK_PP_BOOL_60 1
+# define MSGPACK_PP_BOOL_61 1
+# define MSGPACK_PP_BOOL_62 1
+# define MSGPACK_PP_BOOL_63 1
+# define MSGPACK_PP_BOOL_64 1
+# define MSGPACK_PP_BOOL_65 1
+# define MSGPACK_PP_BOOL_66 1
+# define MSGPACK_PP_BOOL_67 1
+# define MSGPACK_PP_BOOL_68 1
+# define MSGPACK_PP_BOOL_69 1
+# define MSGPACK_PP_BOOL_70 1
+# define MSGPACK_PP_BOOL_71 1
+# define MSGPACK_PP_BOOL_72 1
+# define MSGPACK_PP_BOOL_73 1
+# define MSGPACK_PP_BOOL_74 1
+# define MSGPACK_PP_BOOL_75 1
+# define MSGPACK_PP_BOOL_76 1
+# define MSGPACK_PP_BOOL_77 1
+# define MSGPACK_PP_BOOL_78 1
+# define MSGPACK_PP_BOOL_79 1
+# define MSGPACK_PP_BOOL_80 1
+# define MSGPACK_PP_BOOL_81 1
+# define MSGPACK_PP_BOOL_82 1
+# define MSGPACK_PP_BOOL_83 1
+# define MSGPACK_PP_BOOL_84 1
+# define MSGPACK_PP_BOOL_85 1
+# define MSGPACK_PP_BOOL_86 1
+# define MSGPACK_PP_BOOL_87 1
+# define MSGPACK_PP_BOOL_88 1
+# define MSGPACK_PP_BOOL_89 1
+# define MSGPACK_PP_BOOL_90 1
+# define MSGPACK_PP_BOOL_91 1
+# define MSGPACK_PP_BOOL_92 1
+# define MSGPACK_PP_BOOL_93 1
+# define MSGPACK_PP_BOOL_94 1
+# define MSGPACK_PP_BOOL_95 1
+# define MSGPACK_PP_BOOL_96 1
+# define MSGPACK_PP_BOOL_97 1
+# define MSGPACK_PP_BOOL_98 1
+# define MSGPACK_PP_BOOL_99 1
+# define MSGPACK_PP_BOOL_100 1
+# define MSGPACK_PP_BOOL_101 1
+# define MSGPACK_PP_BOOL_102 1
+# define MSGPACK_PP_BOOL_103 1
+# define MSGPACK_PP_BOOL_104 1
+# define MSGPACK_PP_BOOL_105 1
+# define MSGPACK_PP_BOOL_106 1
+# define MSGPACK_PP_BOOL_107 1
+# define MSGPACK_PP_BOOL_108 1
+# define MSGPACK_PP_BOOL_109 1
+# define MSGPACK_PP_BOOL_110 1
+# define MSGPACK_PP_BOOL_111 1
+# define MSGPACK_PP_BOOL_112 1
+# define MSGPACK_PP_BOOL_113 1
+# define MSGPACK_PP_BOOL_114 1
+# define MSGPACK_PP_BOOL_115 1
+# define MSGPACK_PP_BOOL_116 1
+# define MSGPACK_PP_BOOL_117 1
+# define MSGPACK_PP_BOOL_118 1
+# define MSGPACK_PP_BOOL_119 1
+# define MSGPACK_PP_BOOL_120 1
+# define MSGPACK_PP_BOOL_121 1
+# define MSGPACK_PP_BOOL_122 1
+# define MSGPACK_PP_BOOL_123 1
+# define MSGPACK_PP_BOOL_124 1
+# define MSGPACK_PP_BOOL_125 1
+# define MSGPACK_PP_BOOL_126 1
+# define MSGPACK_PP_BOOL_127 1
+# define MSGPACK_PP_BOOL_128 1
+# define MSGPACK_PP_BOOL_129 1
+# define MSGPACK_PP_BOOL_130 1
+# define MSGPACK_PP_BOOL_131 1
+# define MSGPACK_PP_BOOL_132 1
+# define MSGPACK_PP_BOOL_133 1
+# define MSGPACK_PP_BOOL_134 1
+# define MSGPACK_PP_BOOL_135 1
+# define MSGPACK_PP_BOOL_136 1
+# define MSGPACK_PP_BOOL_137 1
+# define MSGPACK_PP_BOOL_138 1
+# define MSGPACK_PP_BOOL_139 1
+# define MSGPACK_PP_BOOL_140 1
+# define MSGPACK_PP_BOOL_141 1
+# define MSGPACK_PP_BOOL_142 1
+# define MSGPACK_PP_BOOL_143 1
+# define MSGPACK_PP_BOOL_144 1
+# define MSGPACK_PP_BOOL_145 1
+# define MSGPACK_PP_BOOL_146 1
+# define MSGPACK_PP_BOOL_147 1
+# define MSGPACK_PP_BOOL_148 1
+# define MSGPACK_PP_BOOL_149 1
+# define MSGPACK_PP_BOOL_150 1
+# define MSGPACK_PP_BOOL_151 1
+# define MSGPACK_PP_BOOL_152 1
+# define MSGPACK_PP_BOOL_153 1
+# define MSGPACK_PP_BOOL_154 1
+# define MSGPACK_PP_BOOL_155 1
+# define MSGPACK_PP_BOOL_156 1
+# define MSGPACK_PP_BOOL_157 1
+# define MSGPACK_PP_BOOL_158 1
+# define MSGPACK_PP_BOOL_159 1
+# define MSGPACK_PP_BOOL_160 1
+# define MSGPACK_PP_BOOL_161 1
+# define MSGPACK_PP_BOOL_162 1
+# define MSGPACK_PP_BOOL_163 1
+# define MSGPACK_PP_BOOL_164 1
+# define MSGPACK_PP_BOOL_165 1
+# define MSGPACK_PP_BOOL_166 1
+# define MSGPACK_PP_BOOL_167 1
+# define MSGPACK_PP_BOOL_168 1
+# define MSGPACK_PP_BOOL_169 1
+# define MSGPACK_PP_BOOL_170 1
+# define MSGPACK_PP_BOOL_171 1
+# define MSGPACK_PP_BOOL_172 1
+# define MSGPACK_PP_BOOL_173 1
+# define MSGPACK_PP_BOOL_174 1
+# define MSGPACK_PP_BOOL_175 1
+# define MSGPACK_PP_BOOL_176 1
+# define MSGPACK_PP_BOOL_177 1
+# define MSGPACK_PP_BOOL_178 1
+# define MSGPACK_PP_BOOL_179 1
+# define MSGPACK_PP_BOOL_180 1
+# define MSGPACK_PP_BOOL_181 1
+# define MSGPACK_PP_BOOL_182 1
+# define MSGPACK_PP_BOOL_183 1
+# define MSGPACK_PP_BOOL_184 1
+# define MSGPACK_PP_BOOL_185 1
+# define MSGPACK_PP_BOOL_186 1
+# define MSGPACK_PP_BOOL_187 1
+# define MSGPACK_PP_BOOL_188 1
+# define MSGPACK_PP_BOOL_189 1
+# define MSGPACK_PP_BOOL_190 1
+# define MSGPACK_PP_BOOL_191 1
+# define MSGPACK_PP_BOOL_192 1
+# define MSGPACK_PP_BOOL_193 1
+# define MSGPACK_PP_BOOL_194 1
+# define MSGPACK_PP_BOOL_195 1
+# define MSGPACK_PP_BOOL_196 1
+# define MSGPACK_PP_BOOL_197 1
+# define MSGPACK_PP_BOOL_198 1
+# define MSGPACK_PP_BOOL_199 1
+# define MSGPACK_PP_BOOL_200 1
+# define MSGPACK_PP_BOOL_201 1
+# define MSGPACK_PP_BOOL_202 1
+# define MSGPACK_PP_BOOL_203 1
+# define MSGPACK_PP_BOOL_204 1
+# define MSGPACK_PP_BOOL_205 1
+# define MSGPACK_PP_BOOL_206 1
+# define MSGPACK_PP_BOOL_207 1
+# define MSGPACK_PP_BOOL_208 1
+# define MSGPACK_PP_BOOL_209 1
+# define MSGPACK_PP_BOOL_210 1
+# define MSGPACK_PP_BOOL_211 1
+# define MSGPACK_PP_BOOL_212 1
+# define MSGPACK_PP_BOOL_213 1
+# define MSGPACK_PP_BOOL_214 1
+# define MSGPACK_PP_BOOL_215 1
+# define MSGPACK_PP_BOOL_216 1
+# define MSGPACK_PP_BOOL_217 1
+# define MSGPACK_PP_BOOL_218 1
+# define MSGPACK_PP_BOOL_219 1
+# define MSGPACK_PP_BOOL_220 1
+# define MSGPACK_PP_BOOL_221 1
+# define MSGPACK_PP_BOOL_222 1
+# define MSGPACK_PP_BOOL_223 1
+# define MSGPACK_PP_BOOL_224 1
+# define MSGPACK_PP_BOOL_225 1
+# define MSGPACK_PP_BOOL_226 1
+# define MSGPACK_PP_BOOL_227 1
+# define MSGPACK_PP_BOOL_228 1
+# define MSGPACK_PP_BOOL_229 1
+# define MSGPACK_PP_BOOL_230 1
+# define MSGPACK_PP_BOOL_231 1
+# define MSGPACK_PP_BOOL_232 1
+# define MSGPACK_PP_BOOL_233 1
+# define MSGPACK_PP_BOOL_234 1
+# define MSGPACK_PP_BOOL_235 1
+# define MSGPACK_PP_BOOL_236 1
+# define MSGPACK_PP_BOOL_237 1
+# define MSGPACK_PP_BOOL_238 1
+# define MSGPACK_PP_BOOL_239 1
+# define MSGPACK_PP_BOOL_240 1
+# define MSGPACK_PP_BOOL_241 1
+# define MSGPACK_PP_BOOL_242 1
+# define MSGPACK_PP_BOOL_243 1
+# define MSGPACK_PP_BOOL_244 1
+# define MSGPACK_PP_BOOL_245 1
+# define MSGPACK_PP_BOOL_246 1
+# define MSGPACK_PP_BOOL_247 1
+# define MSGPACK_PP_BOOL_248 1
+# define MSGPACK_PP_BOOL_249 1
+# define MSGPACK_PP_BOOL_250 1
+# define MSGPACK_PP_BOOL_251 1
+# define MSGPACK_PP_BOOL_252 1
+# define MSGPACK_PP_BOOL_253 1
+# define MSGPACK_PP_BOOL_254 1
+# define MSGPACK_PP_BOOL_255 1
+# define MSGPACK_PP_BOOL_256 1
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/logical/compl.hpp b/third_party/msgpack/include/msgpack/preprocessor/logical/compl.hpp
new file mode 100644
index 0000000000..227d0d00f0
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/logical/compl.hpp
@@ -0,0 +1,36 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LOGICAL_COMPL_HPP
+# define MSGPACK_PREPROCESSOR_LOGICAL_COMPL_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# /* MSGPACK_PP_COMPL */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_COMPL(x) MSGPACK_PP_COMPL_I(x)
+# else
+# define MSGPACK_PP_COMPL(x) MSGPACK_PP_COMPL_OO((x))
+# define MSGPACK_PP_COMPL_OO(par) MSGPACK_PP_COMPL_I ## par
+# endif
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MSVC()
+# define MSGPACK_PP_COMPL_I(x) MSGPACK_PP_COMPL_ ## x
+# else
+# define MSGPACK_PP_COMPL_I(x) MSGPACK_PP_COMPL_ID(MSGPACK_PP_COMPL_ ## x)
+# define MSGPACK_PP_COMPL_ID(id) id
+# endif
+#
+# define MSGPACK_PP_COMPL_0 1
+# define MSGPACK_PP_COMPL_1 0
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/logical/nor.hpp b/third_party/msgpack/include/msgpack/preprocessor/logical/nor.hpp
new file mode 100644
index 0000000000..36dc2491d1
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/logical/nor.hpp
@@ -0,0 +1,30 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LOGICAL_NOR_HPP
+# define MSGPACK_PREPROCESSOR_LOGICAL_NOR_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/logical/bool.hpp>
+# include <msgpack/preprocessor/logical/bitnor.hpp>
+#
+# /* MSGPACK_PP_NOR */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_NOR(p, q) MSGPACK_PP_BITNOR(MSGPACK_PP_BOOL(p), MSGPACK_PP_BOOL(q))
+# else
+# define MSGPACK_PP_NOR(p, q) MSGPACK_PP_NOR_I(p, q)
+# define MSGPACK_PP_NOR_I(p, q) MSGPACK_PP_BITNOR(MSGPACK_PP_BOOL(p), MSGPACK_PP_BOOL(q))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/logical/not.hpp b/third_party/msgpack/include/msgpack/preprocessor/logical/not.hpp
new file mode 100644
index 0000000000..0ae1bf78b4
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/logical/not.hpp
@@ -0,0 +1,30 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LOGICAL_NOT_HPP
+# define MSGPACK_PREPROCESSOR_LOGICAL_NOT_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/logical/bool.hpp>
+# include <msgpack/preprocessor/logical/compl.hpp>
+#
+# /* MSGPACK_PP_NOT */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_NOT(x) MSGPACK_PP_COMPL(MSGPACK_PP_BOOL(x))
+# else
+# define MSGPACK_PP_NOT(x) MSGPACK_PP_NOT_I(x)
+# define MSGPACK_PP_NOT_I(x) MSGPACK_PP_COMPL(MSGPACK_PP_BOOL(x))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/logical/or.hpp b/third_party/msgpack/include/msgpack/preprocessor/logical/or.hpp
new file mode 100644
index 0000000000..3cb14731ca
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/logical/or.hpp
@@ -0,0 +1,30 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LOGICAL_OR_HPP
+# define MSGPACK_PREPROCESSOR_LOGICAL_OR_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/logical/bool.hpp>
+# include <msgpack/preprocessor/logical/bitor.hpp>
+#
+# /* MSGPACK_PP_OR */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_OR(p, q) MSGPACK_PP_BITOR(MSGPACK_PP_BOOL(p), MSGPACK_PP_BOOL(q))
+# else
+# define MSGPACK_PP_OR(p, q) MSGPACK_PP_OR_I(p, q)
+# define MSGPACK_PP_OR_I(p, q) MSGPACK_PP_BITOR(MSGPACK_PP_BOOL(p), MSGPACK_PP_BOOL(q))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/logical/xor.hpp b/third_party/msgpack/include/msgpack/preprocessor/logical/xor.hpp
new file mode 100644
index 0000000000..1bd565d43a
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/logical/xor.hpp
@@ -0,0 +1,30 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_LOGICAL_XOR_HPP
+# define MSGPACK_PREPROCESSOR_LOGICAL_XOR_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/logical/bool.hpp>
+# include <msgpack/preprocessor/logical/bitxor.hpp>
+#
+# /* MSGPACK_PP_XOR */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_XOR(p, q) MSGPACK_PP_BITXOR(MSGPACK_PP_BOOL(p), MSGPACK_PP_BOOL(q))
+# else
+# define MSGPACK_PP_XOR(p, q) MSGPACK_PP_XOR_I(p, q)
+# define MSGPACK_PP_XOR_I(p, q) MSGPACK_PP_BITXOR(MSGPACK_PP_BOOL(p), MSGPACK_PP_BOOL(q))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/max.hpp b/third_party/msgpack/include/msgpack/preprocessor/max.hpp
new file mode 100644
index 0000000000..4c3e924519
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/max.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_MAX_HPP
+# define MSGPACK_PREPROCESSOR_MAX_HPP
+#
+# include <msgpack/preprocessor/selection/max.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/min.hpp b/third_party/msgpack/include/msgpack/preprocessor/min.hpp
new file mode 100644
index 0000000000..2068ae4eab
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/min.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_MIN_HPP
+# define MSGPACK_PREPROCESSOR_MIN_HPP
+#
+# include <msgpack/preprocessor/selection/min.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/punctuation.hpp b/third_party/msgpack/include/msgpack/preprocessor/punctuation.hpp
new file mode 100644
index 0000000000..42734663d4
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/punctuation.hpp
@@ -0,0 +1,22 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_PUNCTUATION_HPP
+# define MSGPACK_PREPROCESSOR_PUNCTUATION_HPP
+#
+# include <msgpack/preprocessor/punctuation/comma.hpp>
+# include <msgpack/preprocessor/punctuation/comma_if.hpp>
+# include <msgpack/preprocessor/punctuation/is_begin_parens.hpp>
+# include <msgpack/preprocessor/punctuation/paren.hpp>
+# include <msgpack/preprocessor/punctuation/paren_if.hpp>
+# include <msgpack/preprocessor/punctuation/remove_parens.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/punctuation/comma.hpp b/third_party/msgpack/include/msgpack/preprocessor/punctuation/comma.hpp
new file mode 100644
index 0000000000..0e1de6f446
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/punctuation/comma.hpp
@@ -0,0 +1,21 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_PUNCTUATION_COMMA_HPP
+# define MSGPACK_PREPROCESSOR_PUNCTUATION_COMMA_HPP
+#
+# /* MSGPACK_PP_COMMA */
+#
+# define MSGPACK_PP_COMMA() ,
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/punctuation/comma_if.hpp b/third_party/msgpack/include/msgpack/preprocessor/punctuation/comma_if.hpp
new file mode 100644
index 0000000000..6e9e9f65fb
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/punctuation/comma_if.hpp
@@ -0,0 +1,31 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_PUNCTUATION_COMMA_IF_HPP
+# define MSGPACK_PREPROCESSOR_PUNCTUATION_COMMA_IF_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/control/if.hpp>
+# include <msgpack/preprocessor/facilities/empty.hpp>
+# include <msgpack/preprocessor/punctuation/comma.hpp>
+#
+# /* MSGPACK_PP_COMMA_IF */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_COMMA_IF(cond) MSGPACK_PP_IF(cond, MSGPACK_PP_COMMA, MSGPACK_PP_EMPTY)()
+# else
+# define MSGPACK_PP_COMMA_IF(cond) MSGPACK_PP_COMMA_IF_I(cond)
+# define MSGPACK_PP_COMMA_IF_I(cond) MSGPACK_PP_IF(cond, MSGPACK_PP_COMMA, MSGPACK_PP_EMPTY)()
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/punctuation/detail/is_begin_parens.hpp b/third_party/msgpack/include/msgpack/preprocessor/punctuation/detail/is_begin_parens.hpp
new file mode 100644
index 0000000000..4da35cba0b
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/punctuation/detail/is_begin_parens.hpp
@@ -0,0 +1,48 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2014.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+#ifndef MSGPACK_PREPROCESSOR_DETAIL_IS_BEGIN_PARENS_HPP
+#define MSGPACK_PREPROCESSOR_DETAIL_IS_BEGIN_PARENS_HPP
+
+#if MSGPACK_PP_VARIADICS_MSVC
+
+#include <msgpack/preprocessor/facilities/empty.hpp>
+
+#define MSGPACK_PP_DETAIL_VD_IBP_CAT(a, b) MSGPACK_PP_DETAIL_VD_IBP_CAT_I(a, b)
+#define MSGPACK_PP_DETAIL_VD_IBP_CAT_I(a, b) MSGPACK_PP_DETAIL_VD_IBP_CAT_II(a ## b)
+#define MSGPACK_PP_DETAIL_VD_IBP_CAT_II(res) res
+
+#define MSGPACK_PP_DETAIL_IBP_SPLIT(i, ...) \
+ MSGPACK_PP_DETAIL_VD_IBP_CAT(MSGPACK_PP_DETAIL_IBP_PRIMITIVE_CAT(MSGPACK_PP_DETAIL_IBP_SPLIT_,i)(__VA_ARGS__),MSGPACK_PP_EMPTY()) \
+/**/
+
+#define MSGPACK_PP_DETAIL_IBP_IS_VARIADIC_C(...) 1 1
+
+#else
+
+#define MSGPACK_PP_DETAIL_IBP_SPLIT(i, ...) \
+ MSGPACK_PP_DETAIL_IBP_PRIMITIVE_CAT(MSGPACK_PP_DETAIL_IBP_SPLIT_,i)(__VA_ARGS__) \
+/**/
+
+#define MSGPACK_PP_DETAIL_IBP_IS_VARIADIC_C(...) 1
+
+#endif /* MSGPACK_PP_VARIADICS_MSVC */
+
+#define MSGPACK_PP_DETAIL_IBP_SPLIT_0(a, ...) a
+#define MSGPACK_PP_DETAIL_IBP_SPLIT_1(a, ...) __VA_ARGS__
+
+#define MSGPACK_PP_DETAIL_IBP_CAT(a, ...) MSGPACK_PP_DETAIL_IBP_PRIMITIVE_CAT(a,__VA_ARGS__)
+#define MSGPACK_PP_DETAIL_IBP_PRIMITIVE_CAT(a, ...) a ## __VA_ARGS__
+
+#define MSGPACK_PP_DETAIL_IBP_IS_VARIADIC_R_1 1,
+#define MSGPACK_PP_DETAIL_IBP_IS_VARIADIC_R_MSGPACK_PP_DETAIL_IBP_IS_VARIADIC_C 0,
+
+#endif /* MSGPACK_PREPROCESSOR_DETAIL_IS_BEGIN_PARENS_HPP */
diff --git a/third_party/msgpack/include/msgpack/preprocessor/punctuation/is_begin_parens.hpp b/third_party/msgpack/include/msgpack/preprocessor/punctuation/is_begin_parens.hpp
new file mode 100644
index 0000000000..50010e21e3
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/punctuation/is_begin_parens.hpp
@@ -0,0 +1,51 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2014.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_IS_BEGIN_PARENS_HPP
+# define MSGPACK_PREPROCESSOR_IS_BEGIN_PARENS_HPP
+
+# include <msgpack/preprocessor/config/config.hpp>
+
+#if MSGPACK_PP_VARIADICS
+
+#include <msgpack/preprocessor/punctuation/detail/is_begin_parens.hpp>
+
+#if MSGPACK_PP_VARIADICS_MSVC && _MSC_VER <= 1400
+
+#define MSGPACK_PP_IS_BEGIN_PARENS(param) \
+ MSGPACK_PP_DETAIL_IBP_SPLIT \
+ ( \
+ 0, \
+ MSGPACK_PP_DETAIL_IBP_CAT \
+ ( \
+ MSGPACK_PP_DETAIL_IBP_IS_VARIADIC_R_, \
+ MSGPACK_PP_DETAIL_IBP_IS_VARIADIC_C param \
+ ) \
+ ) \
+/**/
+
+#else
+
+#define MSGPACK_PP_IS_BEGIN_PARENS(...) \
+ MSGPACK_PP_DETAIL_IBP_SPLIT \
+ ( \
+ 0, \
+ MSGPACK_PP_DETAIL_IBP_CAT \
+ ( \
+ MSGPACK_PP_DETAIL_IBP_IS_VARIADIC_R_, \
+ MSGPACK_PP_DETAIL_IBP_IS_VARIADIC_C __VA_ARGS__ \
+ ) \
+ ) \
+/**/
+
+#endif /* MSGPACK_PP_VARIADICS_MSVC && _MSC_VER <= 1400 */
+#endif /* MSGPACK_PP_VARIADICS */
+#endif /* MSGPACK_PREPROCESSOR_IS_BEGIN_PARENS_HPP */
diff --git a/third_party/msgpack/include/msgpack/preprocessor/punctuation/paren.hpp b/third_party/msgpack/include/msgpack/preprocessor/punctuation/paren.hpp
new file mode 100644
index 0000000000..b2cf00edd9
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/punctuation/paren.hpp
@@ -0,0 +1,23 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_PUNCTUATION_PAREN_HPP
+# define MSGPACK_PREPROCESSOR_PUNCTUATION_PAREN_HPP
+#
+# /* MSGPACK_PP_LPAREN */
+#
+# define MSGPACK_PP_LPAREN() (
+#
+# /* MSGPACK_PP_RPAREN */
+#
+# define MSGPACK_PP_RPAREN() )
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/punctuation/paren_if.hpp b/third_party/msgpack/include/msgpack/preprocessor/punctuation/paren_if.hpp
new file mode 100644
index 0000000000..d842ca7e3e
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/punctuation/paren_if.hpp
@@ -0,0 +1,38 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_PUNCTUATION_PAREN_IF_HPP
+# define MSGPACK_PREPROCESSOR_PUNCTUATION_PAREN_IF_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/control/if.hpp>
+# include <msgpack/preprocessor/facilities/empty.hpp>
+# include <msgpack/preprocessor/punctuation/paren.hpp>
+#
+# /* MSGPACK_PP_LPAREN_IF */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_LPAREN_IF(cond) MSGPACK_PP_IF(cond, MSGPACK_PP_LPAREN, MSGPACK_PP_EMPTY)()
+# else
+# define MSGPACK_PP_LPAREN_IF(cond) MSGPACK_PP_LPAREN_IF_I(cond)
+# define MSGPACK_PP_LPAREN_IF_I(cond) MSGPACK_PP_IF(cond, MSGPACK_PP_LPAREN, MSGPACK_PP_EMPTY)()
+# endif
+#
+# /* MSGPACK_PP_RPAREN_IF */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_RPAREN_IF(cond) MSGPACK_PP_IF(cond, MSGPACK_PP_RPAREN, MSGPACK_PP_EMPTY)()
+# else
+# define MSGPACK_PP_RPAREN_IF(cond) MSGPACK_PP_RPAREN_IF_I(cond)
+# define MSGPACK_PP_RPAREN_IF_I(cond) MSGPACK_PP_IF(cond, MSGPACK_PP_RPAREN, MSGPACK_PP_EMPTY)()
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/punctuation/remove_parens.hpp b/third_party/msgpack/include/msgpack/preprocessor/punctuation/remove_parens.hpp
new file mode 100644
index 0000000000..3f12f56fe8
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/punctuation/remove_parens.hpp
@@ -0,0 +1,39 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2014.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+#ifndef MSGPACK_PREPROCESSOR_REMOVE_PARENS_HPP
+#define MSGPACK_PREPROCESSOR_REMOVE_PARENS_HPP
+
+#include <msgpack/preprocessor/config/config.hpp>
+
+#if MSGPACK_PP_VARIADICS
+
+#include <msgpack/preprocessor/control/iif.hpp>
+#include <msgpack/preprocessor/facilities/identity.hpp>
+#include <msgpack/preprocessor/punctuation/is_begin_parens.hpp>
+#include <msgpack/preprocessor/tuple/enum.hpp>
+
+#define MSGPACK_PP_REMOVE_PARENS(param) \
+ MSGPACK_PP_IIF \
+ ( \
+ MSGPACK_PP_IS_BEGIN_PARENS(param), \
+ MSGPACK_PP_REMOVE_PARENS_DO, \
+ MSGPACK_PP_IDENTITY \
+ ) \
+ (param)() \
+/**/
+
+#define MSGPACK_PP_REMOVE_PARENS_DO(param) \
+ MSGPACK_PP_IDENTITY(MSGPACK_PP_TUPLE_ENUM(param)) \
+/**/
+
+#endif /* MSGPACK_PP_VARIADICS */
+#endif /* MSGPACK_PREPROCESSOR_REMOVE_PARENS_HPP */
diff --git a/third_party/msgpack/include/msgpack/preprocessor/repeat.hpp b/third_party/msgpack/include/msgpack/preprocessor/repeat.hpp
new file mode 100644
index 0000000000..7bf639e055
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/repeat.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_REPEAT_HPP
+# define MSGPACK_PREPROCESSOR_REPEAT_HPP
+#
+# include <msgpack/preprocessor/repetition/repeat.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/repeat_2nd.hpp b/third_party/msgpack/include/msgpack/preprocessor/repeat_2nd.hpp
new file mode 100644
index 0000000000..53c7f5da48
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/repeat_2nd.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_REPEAT_2ND_HPP
+# define MSGPACK_PREPROCESSOR_REPEAT_2ND_HPP
+#
+# include <msgpack/preprocessor/repetition/repeat.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/repeat_3rd.hpp b/third_party/msgpack/include/msgpack/preprocessor/repeat_3rd.hpp
new file mode 100644
index 0000000000..70e8a5d179
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/repeat_3rd.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_REPEAT_3RD_HPP
+# define MSGPACK_PREPROCESSOR_REPEAT_3RD_HPP
+#
+# include <msgpack/preprocessor/repetition/repeat.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/repeat_from_to.hpp b/third_party/msgpack/include/msgpack/preprocessor/repeat_from_to.hpp
new file mode 100644
index 0000000000..b52f8297c1
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/repeat_from_to.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_REPEAT_FROM_TO_HPP
+# define MSGPACK_PREPROCESSOR_REPEAT_FROM_TO_HPP
+#
+# include <msgpack/preprocessor/repetition/repeat_from_to.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/repeat_from_to_2nd.hpp b/third_party/msgpack/include/msgpack/preprocessor/repeat_from_to_2nd.hpp
new file mode 100644
index 0000000000..834f6b0998
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/repeat_from_to_2nd.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_REPEAT_FROM_TO_2ND_HPP
+# define MSGPACK_PREPROCESSOR_REPEAT_FROM_TO_2ND_HPP
+#
+# include <msgpack/preprocessor/repetition/repeat_from_to.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/repeat_from_to_3rd.hpp b/third_party/msgpack/include/msgpack/preprocessor/repeat_from_to_3rd.hpp
new file mode 100644
index 0000000000..899113c368
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/repeat_from_to_3rd.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_REPEAT_FROM_TO_3RD_HPP
+# define MSGPACK_PREPROCESSOR_REPEAT_FROM_TO_3RD_HPP
+#
+# include <msgpack/preprocessor/repetition/repeat_from_to.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/repetition.hpp b/third_party/msgpack/include/msgpack/preprocessor/repetition.hpp
new file mode 100644
index 0000000000..f8c82a7498
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/repetition.hpp
@@ -0,0 +1,32 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_REPETITION_HPP
+# define MSGPACK_PREPROCESSOR_REPETITION_HPP
+#
+# include <msgpack/preprocessor/repetition/deduce_r.hpp>
+# include <msgpack/preprocessor/repetition/deduce_z.hpp>
+# include <msgpack/preprocessor/repetition/enum.hpp>
+# include <msgpack/preprocessor/repetition/enum_binary_params.hpp>
+# include <msgpack/preprocessor/repetition/enum_params.hpp>
+# include <msgpack/preprocessor/repetition/enum_params_with_a_default.hpp>
+# include <msgpack/preprocessor/repetition/enum_params_with_defaults.hpp>
+# include <msgpack/preprocessor/repetition/enum_shifted.hpp>
+# include <msgpack/preprocessor/repetition/enum_shifted_binary_params.hpp>
+# include <msgpack/preprocessor/repetition/enum_shifted_params.hpp>
+# include <msgpack/preprocessor/repetition/enum_trailing.hpp>
+# include <msgpack/preprocessor/repetition/enum_trailing_binary_params.hpp>
+# include <msgpack/preprocessor/repetition/enum_trailing_params.hpp>
+# include <msgpack/preprocessor/repetition/for.hpp>
+# include <msgpack/preprocessor/repetition/repeat.hpp>
+# include <msgpack/preprocessor/repetition/repeat_from_to.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/repetition/deduce_r.hpp b/third_party/msgpack/include/msgpack/preprocessor/repetition/deduce_r.hpp
new file mode 100644
index 0000000000..b314b0df81
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/repetition/deduce_r.hpp
@@ -0,0 +1,22 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_REPETITION_DEDUCE_R_HPP
+# define MSGPACK_PREPROCESSOR_REPETITION_DEDUCE_R_HPP
+#
+# include <msgpack/preprocessor/detail/auto_rec.hpp>
+# include <msgpack/preprocessor/repetition/for.hpp>
+#
+# /* MSGPACK_PP_DEDUCE_R */
+#
+# define MSGPACK_PP_DEDUCE_R() MSGPACK_PP_AUTO_REC(MSGPACK_PP_FOR_P, 256)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/repetition/deduce_z.hpp b/third_party/msgpack/include/msgpack/preprocessor/repetition/deduce_z.hpp
new file mode 100644
index 0000000000..5023e31ab4
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/repetition/deduce_z.hpp
@@ -0,0 +1,22 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_REPETITION_DEDUCE_Z_HPP
+# define MSGPACK_PREPROCESSOR_REPETITION_DEDUCE_Z_HPP
+#
+# include <msgpack/preprocessor/detail/auto_rec.hpp>
+# include <msgpack/preprocessor/repetition/repeat.hpp>
+#
+# /* MSGPACK_PP_DEDUCE_Z */
+#
+# define MSGPACK_PP_DEDUCE_Z() MSGPACK_PP_AUTO_REC(MSGPACK_PP_REPEAT_P, 4)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/repetition/detail/dmc/for.hpp b/third_party/msgpack/include/msgpack/preprocessor/repetition/detail/dmc/for.hpp
new file mode 100644
index 0000000000..630f55cbb1
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/repetition/detail/dmc/for.hpp
@@ -0,0 +1,536 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_REPETITION_DETAIL_FOR_HPP
+# define MSGPACK_PREPROCESSOR_REPETITION_DETAIL_FOR_HPP
+#
+# include <msgpack/preprocessor/control/expr_iif.hpp>
+# include <msgpack/preprocessor/control/iif.hpp>
+# include <msgpack/preprocessor/logical/bool.hpp>
+# include <msgpack/preprocessor/tuple/eat.hpp>
+#
+# define MSGPACK_PP_FOR_1(s, p, o, m) MSGPACK_PP_FOR_1_C(MSGPACK_PP_BOOL(p##(2, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_2(s, p, o, m) MSGPACK_PP_FOR_2_C(MSGPACK_PP_BOOL(p##(3, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_3(s, p, o, m) MSGPACK_PP_FOR_3_C(MSGPACK_PP_BOOL(p##(4, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_4(s, p, o, m) MSGPACK_PP_FOR_4_C(MSGPACK_PP_BOOL(p##(5, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_5(s, p, o, m) MSGPACK_PP_FOR_5_C(MSGPACK_PP_BOOL(p##(6, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_6(s, p, o, m) MSGPACK_PP_FOR_6_C(MSGPACK_PP_BOOL(p##(7, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_7(s, p, o, m) MSGPACK_PP_FOR_7_C(MSGPACK_PP_BOOL(p##(8, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_8(s, p, o, m) MSGPACK_PP_FOR_8_C(MSGPACK_PP_BOOL(p##(9, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_9(s, p, o, m) MSGPACK_PP_FOR_9_C(MSGPACK_PP_BOOL(p##(10, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_10(s, p, o, m) MSGPACK_PP_FOR_10_C(MSGPACK_PP_BOOL(p##(11, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_11(s, p, o, m) MSGPACK_PP_FOR_11_C(MSGPACK_PP_BOOL(p##(12, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_12(s, p, o, m) MSGPACK_PP_FOR_12_C(MSGPACK_PP_BOOL(p##(13, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_13(s, p, o, m) MSGPACK_PP_FOR_13_C(MSGPACK_PP_BOOL(p##(14, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_14(s, p, o, m) MSGPACK_PP_FOR_14_C(MSGPACK_PP_BOOL(p##(15, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_15(s, p, o, m) MSGPACK_PP_FOR_15_C(MSGPACK_PP_BOOL(p##(16, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_16(s, p, o, m) MSGPACK_PP_FOR_16_C(MSGPACK_PP_BOOL(p##(17, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_17(s, p, o, m) MSGPACK_PP_FOR_17_C(MSGPACK_PP_BOOL(p##(18, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_18(s, p, o, m) MSGPACK_PP_FOR_18_C(MSGPACK_PP_BOOL(p##(19, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_19(s, p, o, m) MSGPACK_PP_FOR_19_C(MSGPACK_PP_BOOL(p##(20, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_20(s, p, o, m) MSGPACK_PP_FOR_20_C(MSGPACK_PP_BOOL(p##(21, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_21(s, p, o, m) MSGPACK_PP_FOR_21_C(MSGPACK_PP_BOOL(p##(22, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_22(s, p, o, m) MSGPACK_PP_FOR_22_C(MSGPACK_PP_BOOL(p##(23, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_23(s, p, o, m) MSGPACK_PP_FOR_23_C(MSGPACK_PP_BOOL(p##(24, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_24(s, p, o, m) MSGPACK_PP_FOR_24_C(MSGPACK_PP_BOOL(p##(25, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_25(s, p, o, m) MSGPACK_PP_FOR_25_C(MSGPACK_PP_BOOL(p##(26, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_26(s, p, o, m) MSGPACK_PP_FOR_26_C(MSGPACK_PP_BOOL(p##(27, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_27(s, p, o, m) MSGPACK_PP_FOR_27_C(MSGPACK_PP_BOOL(p##(28, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_28(s, p, o, m) MSGPACK_PP_FOR_28_C(MSGPACK_PP_BOOL(p##(29, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_29(s, p, o, m) MSGPACK_PP_FOR_29_C(MSGPACK_PP_BOOL(p##(30, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_30(s, p, o, m) MSGPACK_PP_FOR_30_C(MSGPACK_PP_BOOL(p##(31, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_31(s, p, o, m) MSGPACK_PP_FOR_31_C(MSGPACK_PP_BOOL(p##(32, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_32(s, p, o, m) MSGPACK_PP_FOR_32_C(MSGPACK_PP_BOOL(p##(33, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_33(s, p, o, m) MSGPACK_PP_FOR_33_C(MSGPACK_PP_BOOL(p##(34, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_34(s, p, o, m) MSGPACK_PP_FOR_34_C(MSGPACK_PP_BOOL(p##(35, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_35(s, p, o, m) MSGPACK_PP_FOR_35_C(MSGPACK_PP_BOOL(p##(36, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_36(s, p, o, m) MSGPACK_PP_FOR_36_C(MSGPACK_PP_BOOL(p##(37, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_37(s, p, o, m) MSGPACK_PP_FOR_37_C(MSGPACK_PP_BOOL(p##(38, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_38(s, p, o, m) MSGPACK_PP_FOR_38_C(MSGPACK_PP_BOOL(p##(39, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_39(s, p, o, m) MSGPACK_PP_FOR_39_C(MSGPACK_PP_BOOL(p##(40, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_40(s, p, o, m) MSGPACK_PP_FOR_40_C(MSGPACK_PP_BOOL(p##(41, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_41(s, p, o, m) MSGPACK_PP_FOR_41_C(MSGPACK_PP_BOOL(p##(42, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_42(s, p, o, m) MSGPACK_PP_FOR_42_C(MSGPACK_PP_BOOL(p##(43, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_43(s, p, o, m) MSGPACK_PP_FOR_43_C(MSGPACK_PP_BOOL(p##(44, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_44(s, p, o, m) MSGPACK_PP_FOR_44_C(MSGPACK_PP_BOOL(p##(45, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_45(s, p, o, m) MSGPACK_PP_FOR_45_C(MSGPACK_PP_BOOL(p##(46, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_46(s, p, o, m) MSGPACK_PP_FOR_46_C(MSGPACK_PP_BOOL(p##(47, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_47(s, p, o, m) MSGPACK_PP_FOR_47_C(MSGPACK_PP_BOOL(p##(48, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_48(s, p, o, m) MSGPACK_PP_FOR_48_C(MSGPACK_PP_BOOL(p##(49, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_49(s, p, o, m) MSGPACK_PP_FOR_49_C(MSGPACK_PP_BOOL(p##(50, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_50(s, p, o, m) MSGPACK_PP_FOR_50_C(MSGPACK_PP_BOOL(p##(51, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_51(s, p, o, m) MSGPACK_PP_FOR_51_C(MSGPACK_PP_BOOL(p##(52, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_52(s, p, o, m) MSGPACK_PP_FOR_52_C(MSGPACK_PP_BOOL(p##(53, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_53(s, p, o, m) MSGPACK_PP_FOR_53_C(MSGPACK_PP_BOOL(p##(54, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_54(s, p, o, m) MSGPACK_PP_FOR_54_C(MSGPACK_PP_BOOL(p##(55, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_55(s, p, o, m) MSGPACK_PP_FOR_55_C(MSGPACK_PP_BOOL(p##(56, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_56(s, p, o, m) MSGPACK_PP_FOR_56_C(MSGPACK_PP_BOOL(p##(57, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_57(s, p, o, m) MSGPACK_PP_FOR_57_C(MSGPACK_PP_BOOL(p##(58, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_58(s, p, o, m) MSGPACK_PP_FOR_58_C(MSGPACK_PP_BOOL(p##(59, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_59(s, p, o, m) MSGPACK_PP_FOR_59_C(MSGPACK_PP_BOOL(p##(60, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_60(s, p, o, m) MSGPACK_PP_FOR_60_C(MSGPACK_PP_BOOL(p##(61, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_61(s, p, o, m) MSGPACK_PP_FOR_61_C(MSGPACK_PP_BOOL(p##(62, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_62(s, p, o, m) MSGPACK_PP_FOR_62_C(MSGPACK_PP_BOOL(p##(63, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_63(s, p, o, m) MSGPACK_PP_FOR_63_C(MSGPACK_PP_BOOL(p##(64, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_64(s, p, o, m) MSGPACK_PP_FOR_64_C(MSGPACK_PP_BOOL(p##(65, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_65(s, p, o, m) MSGPACK_PP_FOR_65_C(MSGPACK_PP_BOOL(p##(66, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_66(s, p, o, m) MSGPACK_PP_FOR_66_C(MSGPACK_PP_BOOL(p##(67, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_67(s, p, o, m) MSGPACK_PP_FOR_67_C(MSGPACK_PP_BOOL(p##(68, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_68(s, p, o, m) MSGPACK_PP_FOR_68_C(MSGPACK_PP_BOOL(p##(69, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_69(s, p, o, m) MSGPACK_PP_FOR_69_C(MSGPACK_PP_BOOL(p##(70, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_70(s, p, o, m) MSGPACK_PP_FOR_70_C(MSGPACK_PP_BOOL(p##(71, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_71(s, p, o, m) MSGPACK_PP_FOR_71_C(MSGPACK_PP_BOOL(p##(72, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_72(s, p, o, m) MSGPACK_PP_FOR_72_C(MSGPACK_PP_BOOL(p##(73, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_73(s, p, o, m) MSGPACK_PP_FOR_73_C(MSGPACK_PP_BOOL(p##(74, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_74(s, p, o, m) MSGPACK_PP_FOR_74_C(MSGPACK_PP_BOOL(p##(75, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_75(s, p, o, m) MSGPACK_PP_FOR_75_C(MSGPACK_PP_BOOL(p##(76, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_76(s, p, o, m) MSGPACK_PP_FOR_76_C(MSGPACK_PP_BOOL(p##(77, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_77(s, p, o, m) MSGPACK_PP_FOR_77_C(MSGPACK_PP_BOOL(p##(78, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_78(s, p, o, m) MSGPACK_PP_FOR_78_C(MSGPACK_PP_BOOL(p##(79, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_79(s, p, o, m) MSGPACK_PP_FOR_79_C(MSGPACK_PP_BOOL(p##(80, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_80(s, p, o, m) MSGPACK_PP_FOR_80_C(MSGPACK_PP_BOOL(p##(81, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_81(s, p, o, m) MSGPACK_PP_FOR_81_C(MSGPACK_PP_BOOL(p##(82, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_82(s, p, o, m) MSGPACK_PP_FOR_82_C(MSGPACK_PP_BOOL(p##(83, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_83(s, p, o, m) MSGPACK_PP_FOR_83_C(MSGPACK_PP_BOOL(p##(84, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_84(s, p, o, m) MSGPACK_PP_FOR_84_C(MSGPACK_PP_BOOL(p##(85, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_85(s, p, o, m) MSGPACK_PP_FOR_85_C(MSGPACK_PP_BOOL(p##(86, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_86(s, p, o, m) MSGPACK_PP_FOR_86_C(MSGPACK_PP_BOOL(p##(87, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_87(s, p, o, m) MSGPACK_PP_FOR_87_C(MSGPACK_PP_BOOL(p##(88, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_88(s, p, o, m) MSGPACK_PP_FOR_88_C(MSGPACK_PP_BOOL(p##(89, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_89(s, p, o, m) MSGPACK_PP_FOR_89_C(MSGPACK_PP_BOOL(p##(90, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_90(s, p, o, m) MSGPACK_PP_FOR_90_C(MSGPACK_PP_BOOL(p##(91, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_91(s, p, o, m) MSGPACK_PP_FOR_91_C(MSGPACK_PP_BOOL(p##(92, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_92(s, p, o, m) MSGPACK_PP_FOR_92_C(MSGPACK_PP_BOOL(p##(93, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_93(s, p, o, m) MSGPACK_PP_FOR_93_C(MSGPACK_PP_BOOL(p##(94, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_94(s, p, o, m) MSGPACK_PP_FOR_94_C(MSGPACK_PP_BOOL(p##(95, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_95(s, p, o, m) MSGPACK_PP_FOR_95_C(MSGPACK_PP_BOOL(p##(96, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_96(s, p, o, m) MSGPACK_PP_FOR_96_C(MSGPACK_PP_BOOL(p##(97, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_97(s, p, o, m) MSGPACK_PP_FOR_97_C(MSGPACK_PP_BOOL(p##(98, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_98(s, p, o, m) MSGPACK_PP_FOR_98_C(MSGPACK_PP_BOOL(p##(99, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_99(s, p, o, m) MSGPACK_PP_FOR_99_C(MSGPACK_PP_BOOL(p##(100, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_100(s, p, o, m) MSGPACK_PP_FOR_100_C(MSGPACK_PP_BOOL(p##(101, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_101(s, p, o, m) MSGPACK_PP_FOR_101_C(MSGPACK_PP_BOOL(p##(102, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_102(s, p, o, m) MSGPACK_PP_FOR_102_C(MSGPACK_PP_BOOL(p##(103, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_103(s, p, o, m) MSGPACK_PP_FOR_103_C(MSGPACK_PP_BOOL(p##(104, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_104(s, p, o, m) MSGPACK_PP_FOR_104_C(MSGPACK_PP_BOOL(p##(105, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_105(s, p, o, m) MSGPACK_PP_FOR_105_C(MSGPACK_PP_BOOL(p##(106, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_106(s, p, o, m) MSGPACK_PP_FOR_106_C(MSGPACK_PP_BOOL(p##(107, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_107(s, p, o, m) MSGPACK_PP_FOR_107_C(MSGPACK_PP_BOOL(p##(108, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_108(s, p, o, m) MSGPACK_PP_FOR_108_C(MSGPACK_PP_BOOL(p##(109, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_109(s, p, o, m) MSGPACK_PP_FOR_109_C(MSGPACK_PP_BOOL(p##(110, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_110(s, p, o, m) MSGPACK_PP_FOR_110_C(MSGPACK_PP_BOOL(p##(111, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_111(s, p, o, m) MSGPACK_PP_FOR_111_C(MSGPACK_PP_BOOL(p##(112, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_112(s, p, o, m) MSGPACK_PP_FOR_112_C(MSGPACK_PP_BOOL(p##(113, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_113(s, p, o, m) MSGPACK_PP_FOR_113_C(MSGPACK_PP_BOOL(p##(114, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_114(s, p, o, m) MSGPACK_PP_FOR_114_C(MSGPACK_PP_BOOL(p##(115, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_115(s, p, o, m) MSGPACK_PP_FOR_115_C(MSGPACK_PP_BOOL(p##(116, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_116(s, p, o, m) MSGPACK_PP_FOR_116_C(MSGPACK_PP_BOOL(p##(117, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_117(s, p, o, m) MSGPACK_PP_FOR_117_C(MSGPACK_PP_BOOL(p##(118, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_118(s, p, o, m) MSGPACK_PP_FOR_118_C(MSGPACK_PP_BOOL(p##(119, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_119(s, p, o, m) MSGPACK_PP_FOR_119_C(MSGPACK_PP_BOOL(p##(120, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_120(s, p, o, m) MSGPACK_PP_FOR_120_C(MSGPACK_PP_BOOL(p##(121, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_121(s, p, o, m) MSGPACK_PP_FOR_121_C(MSGPACK_PP_BOOL(p##(122, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_122(s, p, o, m) MSGPACK_PP_FOR_122_C(MSGPACK_PP_BOOL(p##(123, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_123(s, p, o, m) MSGPACK_PP_FOR_123_C(MSGPACK_PP_BOOL(p##(124, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_124(s, p, o, m) MSGPACK_PP_FOR_124_C(MSGPACK_PP_BOOL(p##(125, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_125(s, p, o, m) MSGPACK_PP_FOR_125_C(MSGPACK_PP_BOOL(p##(126, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_126(s, p, o, m) MSGPACK_PP_FOR_126_C(MSGPACK_PP_BOOL(p##(127, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_127(s, p, o, m) MSGPACK_PP_FOR_127_C(MSGPACK_PP_BOOL(p##(128, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_128(s, p, o, m) MSGPACK_PP_FOR_128_C(MSGPACK_PP_BOOL(p##(129, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_129(s, p, o, m) MSGPACK_PP_FOR_129_C(MSGPACK_PP_BOOL(p##(130, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_130(s, p, o, m) MSGPACK_PP_FOR_130_C(MSGPACK_PP_BOOL(p##(131, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_131(s, p, o, m) MSGPACK_PP_FOR_131_C(MSGPACK_PP_BOOL(p##(132, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_132(s, p, o, m) MSGPACK_PP_FOR_132_C(MSGPACK_PP_BOOL(p##(133, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_133(s, p, o, m) MSGPACK_PP_FOR_133_C(MSGPACK_PP_BOOL(p##(134, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_134(s, p, o, m) MSGPACK_PP_FOR_134_C(MSGPACK_PP_BOOL(p##(135, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_135(s, p, o, m) MSGPACK_PP_FOR_135_C(MSGPACK_PP_BOOL(p##(136, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_136(s, p, o, m) MSGPACK_PP_FOR_136_C(MSGPACK_PP_BOOL(p##(137, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_137(s, p, o, m) MSGPACK_PP_FOR_137_C(MSGPACK_PP_BOOL(p##(138, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_138(s, p, o, m) MSGPACK_PP_FOR_138_C(MSGPACK_PP_BOOL(p##(139, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_139(s, p, o, m) MSGPACK_PP_FOR_139_C(MSGPACK_PP_BOOL(p##(140, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_140(s, p, o, m) MSGPACK_PP_FOR_140_C(MSGPACK_PP_BOOL(p##(141, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_141(s, p, o, m) MSGPACK_PP_FOR_141_C(MSGPACK_PP_BOOL(p##(142, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_142(s, p, o, m) MSGPACK_PP_FOR_142_C(MSGPACK_PP_BOOL(p##(143, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_143(s, p, o, m) MSGPACK_PP_FOR_143_C(MSGPACK_PP_BOOL(p##(144, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_144(s, p, o, m) MSGPACK_PP_FOR_144_C(MSGPACK_PP_BOOL(p##(145, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_145(s, p, o, m) MSGPACK_PP_FOR_145_C(MSGPACK_PP_BOOL(p##(146, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_146(s, p, o, m) MSGPACK_PP_FOR_146_C(MSGPACK_PP_BOOL(p##(147, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_147(s, p, o, m) MSGPACK_PP_FOR_147_C(MSGPACK_PP_BOOL(p##(148, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_148(s, p, o, m) MSGPACK_PP_FOR_148_C(MSGPACK_PP_BOOL(p##(149, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_149(s, p, o, m) MSGPACK_PP_FOR_149_C(MSGPACK_PP_BOOL(p##(150, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_150(s, p, o, m) MSGPACK_PP_FOR_150_C(MSGPACK_PP_BOOL(p##(151, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_151(s, p, o, m) MSGPACK_PP_FOR_151_C(MSGPACK_PP_BOOL(p##(152, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_152(s, p, o, m) MSGPACK_PP_FOR_152_C(MSGPACK_PP_BOOL(p##(153, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_153(s, p, o, m) MSGPACK_PP_FOR_153_C(MSGPACK_PP_BOOL(p##(154, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_154(s, p, o, m) MSGPACK_PP_FOR_154_C(MSGPACK_PP_BOOL(p##(155, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_155(s, p, o, m) MSGPACK_PP_FOR_155_C(MSGPACK_PP_BOOL(p##(156, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_156(s, p, o, m) MSGPACK_PP_FOR_156_C(MSGPACK_PP_BOOL(p##(157, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_157(s, p, o, m) MSGPACK_PP_FOR_157_C(MSGPACK_PP_BOOL(p##(158, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_158(s, p, o, m) MSGPACK_PP_FOR_158_C(MSGPACK_PP_BOOL(p##(159, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_159(s, p, o, m) MSGPACK_PP_FOR_159_C(MSGPACK_PP_BOOL(p##(160, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_160(s, p, o, m) MSGPACK_PP_FOR_160_C(MSGPACK_PP_BOOL(p##(161, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_161(s, p, o, m) MSGPACK_PP_FOR_161_C(MSGPACK_PP_BOOL(p##(162, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_162(s, p, o, m) MSGPACK_PP_FOR_162_C(MSGPACK_PP_BOOL(p##(163, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_163(s, p, o, m) MSGPACK_PP_FOR_163_C(MSGPACK_PP_BOOL(p##(164, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_164(s, p, o, m) MSGPACK_PP_FOR_164_C(MSGPACK_PP_BOOL(p##(165, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_165(s, p, o, m) MSGPACK_PP_FOR_165_C(MSGPACK_PP_BOOL(p##(166, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_166(s, p, o, m) MSGPACK_PP_FOR_166_C(MSGPACK_PP_BOOL(p##(167, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_167(s, p, o, m) MSGPACK_PP_FOR_167_C(MSGPACK_PP_BOOL(p##(168, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_168(s, p, o, m) MSGPACK_PP_FOR_168_C(MSGPACK_PP_BOOL(p##(169, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_169(s, p, o, m) MSGPACK_PP_FOR_169_C(MSGPACK_PP_BOOL(p##(170, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_170(s, p, o, m) MSGPACK_PP_FOR_170_C(MSGPACK_PP_BOOL(p##(171, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_171(s, p, o, m) MSGPACK_PP_FOR_171_C(MSGPACK_PP_BOOL(p##(172, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_172(s, p, o, m) MSGPACK_PP_FOR_172_C(MSGPACK_PP_BOOL(p##(173, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_173(s, p, o, m) MSGPACK_PP_FOR_173_C(MSGPACK_PP_BOOL(p##(174, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_174(s, p, o, m) MSGPACK_PP_FOR_174_C(MSGPACK_PP_BOOL(p##(175, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_175(s, p, o, m) MSGPACK_PP_FOR_175_C(MSGPACK_PP_BOOL(p##(176, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_176(s, p, o, m) MSGPACK_PP_FOR_176_C(MSGPACK_PP_BOOL(p##(177, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_177(s, p, o, m) MSGPACK_PP_FOR_177_C(MSGPACK_PP_BOOL(p##(178, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_178(s, p, o, m) MSGPACK_PP_FOR_178_C(MSGPACK_PP_BOOL(p##(179, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_179(s, p, o, m) MSGPACK_PP_FOR_179_C(MSGPACK_PP_BOOL(p##(180, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_180(s, p, o, m) MSGPACK_PP_FOR_180_C(MSGPACK_PP_BOOL(p##(181, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_181(s, p, o, m) MSGPACK_PP_FOR_181_C(MSGPACK_PP_BOOL(p##(182, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_182(s, p, o, m) MSGPACK_PP_FOR_182_C(MSGPACK_PP_BOOL(p##(183, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_183(s, p, o, m) MSGPACK_PP_FOR_183_C(MSGPACK_PP_BOOL(p##(184, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_184(s, p, o, m) MSGPACK_PP_FOR_184_C(MSGPACK_PP_BOOL(p##(185, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_185(s, p, o, m) MSGPACK_PP_FOR_185_C(MSGPACK_PP_BOOL(p##(186, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_186(s, p, o, m) MSGPACK_PP_FOR_186_C(MSGPACK_PP_BOOL(p##(187, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_187(s, p, o, m) MSGPACK_PP_FOR_187_C(MSGPACK_PP_BOOL(p##(188, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_188(s, p, o, m) MSGPACK_PP_FOR_188_C(MSGPACK_PP_BOOL(p##(189, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_189(s, p, o, m) MSGPACK_PP_FOR_189_C(MSGPACK_PP_BOOL(p##(190, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_190(s, p, o, m) MSGPACK_PP_FOR_190_C(MSGPACK_PP_BOOL(p##(191, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_191(s, p, o, m) MSGPACK_PP_FOR_191_C(MSGPACK_PP_BOOL(p##(192, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_192(s, p, o, m) MSGPACK_PP_FOR_192_C(MSGPACK_PP_BOOL(p##(193, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_193(s, p, o, m) MSGPACK_PP_FOR_193_C(MSGPACK_PP_BOOL(p##(194, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_194(s, p, o, m) MSGPACK_PP_FOR_194_C(MSGPACK_PP_BOOL(p##(195, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_195(s, p, o, m) MSGPACK_PP_FOR_195_C(MSGPACK_PP_BOOL(p##(196, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_196(s, p, o, m) MSGPACK_PP_FOR_196_C(MSGPACK_PP_BOOL(p##(197, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_197(s, p, o, m) MSGPACK_PP_FOR_197_C(MSGPACK_PP_BOOL(p##(198, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_198(s, p, o, m) MSGPACK_PP_FOR_198_C(MSGPACK_PP_BOOL(p##(199, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_199(s, p, o, m) MSGPACK_PP_FOR_199_C(MSGPACK_PP_BOOL(p##(200, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_200(s, p, o, m) MSGPACK_PP_FOR_200_C(MSGPACK_PP_BOOL(p##(201, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_201(s, p, o, m) MSGPACK_PP_FOR_201_C(MSGPACK_PP_BOOL(p##(202, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_202(s, p, o, m) MSGPACK_PP_FOR_202_C(MSGPACK_PP_BOOL(p##(203, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_203(s, p, o, m) MSGPACK_PP_FOR_203_C(MSGPACK_PP_BOOL(p##(204, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_204(s, p, o, m) MSGPACK_PP_FOR_204_C(MSGPACK_PP_BOOL(p##(205, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_205(s, p, o, m) MSGPACK_PP_FOR_205_C(MSGPACK_PP_BOOL(p##(206, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_206(s, p, o, m) MSGPACK_PP_FOR_206_C(MSGPACK_PP_BOOL(p##(207, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_207(s, p, o, m) MSGPACK_PP_FOR_207_C(MSGPACK_PP_BOOL(p##(208, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_208(s, p, o, m) MSGPACK_PP_FOR_208_C(MSGPACK_PP_BOOL(p##(209, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_209(s, p, o, m) MSGPACK_PP_FOR_209_C(MSGPACK_PP_BOOL(p##(210, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_210(s, p, o, m) MSGPACK_PP_FOR_210_C(MSGPACK_PP_BOOL(p##(211, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_211(s, p, o, m) MSGPACK_PP_FOR_211_C(MSGPACK_PP_BOOL(p##(212, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_212(s, p, o, m) MSGPACK_PP_FOR_212_C(MSGPACK_PP_BOOL(p##(213, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_213(s, p, o, m) MSGPACK_PP_FOR_213_C(MSGPACK_PP_BOOL(p##(214, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_214(s, p, o, m) MSGPACK_PP_FOR_214_C(MSGPACK_PP_BOOL(p##(215, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_215(s, p, o, m) MSGPACK_PP_FOR_215_C(MSGPACK_PP_BOOL(p##(216, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_216(s, p, o, m) MSGPACK_PP_FOR_216_C(MSGPACK_PP_BOOL(p##(217, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_217(s, p, o, m) MSGPACK_PP_FOR_217_C(MSGPACK_PP_BOOL(p##(218, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_218(s, p, o, m) MSGPACK_PP_FOR_218_C(MSGPACK_PP_BOOL(p##(219, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_219(s, p, o, m) MSGPACK_PP_FOR_219_C(MSGPACK_PP_BOOL(p##(220, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_220(s, p, o, m) MSGPACK_PP_FOR_220_C(MSGPACK_PP_BOOL(p##(221, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_221(s, p, o, m) MSGPACK_PP_FOR_221_C(MSGPACK_PP_BOOL(p##(222, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_222(s, p, o, m) MSGPACK_PP_FOR_222_C(MSGPACK_PP_BOOL(p##(223, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_223(s, p, o, m) MSGPACK_PP_FOR_223_C(MSGPACK_PP_BOOL(p##(224, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_224(s, p, o, m) MSGPACK_PP_FOR_224_C(MSGPACK_PP_BOOL(p##(225, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_225(s, p, o, m) MSGPACK_PP_FOR_225_C(MSGPACK_PP_BOOL(p##(226, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_226(s, p, o, m) MSGPACK_PP_FOR_226_C(MSGPACK_PP_BOOL(p##(227, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_227(s, p, o, m) MSGPACK_PP_FOR_227_C(MSGPACK_PP_BOOL(p##(228, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_228(s, p, o, m) MSGPACK_PP_FOR_228_C(MSGPACK_PP_BOOL(p##(229, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_229(s, p, o, m) MSGPACK_PP_FOR_229_C(MSGPACK_PP_BOOL(p##(230, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_230(s, p, o, m) MSGPACK_PP_FOR_230_C(MSGPACK_PP_BOOL(p##(231, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_231(s, p, o, m) MSGPACK_PP_FOR_231_C(MSGPACK_PP_BOOL(p##(232, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_232(s, p, o, m) MSGPACK_PP_FOR_232_C(MSGPACK_PP_BOOL(p##(233, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_233(s, p, o, m) MSGPACK_PP_FOR_233_C(MSGPACK_PP_BOOL(p##(234, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_234(s, p, o, m) MSGPACK_PP_FOR_234_C(MSGPACK_PP_BOOL(p##(235, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_235(s, p, o, m) MSGPACK_PP_FOR_235_C(MSGPACK_PP_BOOL(p##(236, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_236(s, p, o, m) MSGPACK_PP_FOR_236_C(MSGPACK_PP_BOOL(p##(237, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_237(s, p, o, m) MSGPACK_PP_FOR_237_C(MSGPACK_PP_BOOL(p##(238, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_238(s, p, o, m) MSGPACK_PP_FOR_238_C(MSGPACK_PP_BOOL(p##(239, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_239(s, p, o, m) MSGPACK_PP_FOR_239_C(MSGPACK_PP_BOOL(p##(240, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_240(s, p, o, m) MSGPACK_PP_FOR_240_C(MSGPACK_PP_BOOL(p##(241, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_241(s, p, o, m) MSGPACK_PP_FOR_241_C(MSGPACK_PP_BOOL(p##(242, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_242(s, p, o, m) MSGPACK_PP_FOR_242_C(MSGPACK_PP_BOOL(p##(243, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_243(s, p, o, m) MSGPACK_PP_FOR_243_C(MSGPACK_PP_BOOL(p##(244, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_244(s, p, o, m) MSGPACK_PP_FOR_244_C(MSGPACK_PP_BOOL(p##(245, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_245(s, p, o, m) MSGPACK_PP_FOR_245_C(MSGPACK_PP_BOOL(p##(246, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_246(s, p, o, m) MSGPACK_PP_FOR_246_C(MSGPACK_PP_BOOL(p##(247, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_247(s, p, o, m) MSGPACK_PP_FOR_247_C(MSGPACK_PP_BOOL(p##(248, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_248(s, p, o, m) MSGPACK_PP_FOR_248_C(MSGPACK_PP_BOOL(p##(249, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_249(s, p, o, m) MSGPACK_PP_FOR_249_C(MSGPACK_PP_BOOL(p##(250, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_250(s, p, o, m) MSGPACK_PP_FOR_250_C(MSGPACK_PP_BOOL(p##(251, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_251(s, p, o, m) MSGPACK_PP_FOR_251_C(MSGPACK_PP_BOOL(p##(252, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_252(s, p, o, m) MSGPACK_PP_FOR_252_C(MSGPACK_PP_BOOL(p##(253, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_253(s, p, o, m) MSGPACK_PP_FOR_253_C(MSGPACK_PP_BOOL(p##(254, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_254(s, p, o, m) MSGPACK_PP_FOR_254_C(MSGPACK_PP_BOOL(p##(255, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_255(s, p, o, m) MSGPACK_PP_FOR_255_C(MSGPACK_PP_BOOL(p##(256, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_256(s, p, o, m) MSGPACK_PP_FOR_256_C(MSGPACK_PP_BOOL(p##(257, s)), s, p, o, m)
+#
+# define MSGPACK_PP_FOR_1_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(2, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_2, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(2, s), p, o, m)
+# define MSGPACK_PP_FOR_2_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(3, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_3, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(3, s), p, o, m)
+# define MSGPACK_PP_FOR_3_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(4, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_4, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(4, s), p, o, m)
+# define MSGPACK_PP_FOR_4_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(5, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_5, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(5, s), p, o, m)
+# define MSGPACK_PP_FOR_5_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(6, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_6, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(6, s), p, o, m)
+# define MSGPACK_PP_FOR_6_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(7, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_7, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(7, s), p, o, m)
+# define MSGPACK_PP_FOR_7_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(8, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_8, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(8, s), p, o, m)
+# define MSGPACK_PP_FOR_8_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(9, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_9, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(9, s), p, o, m)
+# define MSGPACK_PP_FOR_9_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(10, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_10, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(10, s), p, o, m)
+# define MSGPACK_PP_FOR_10_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(11, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_11, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(11, s), p, o, m)
+# define MSGPACK_PP_FOR_11_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(12, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_12, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(12, s), p, o, m)
+# define MSGPACK_PP_FOR_12_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(13, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_13, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(13, s), p, o, m)
+# define MSGPACK_PP_FOR_13_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(14, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_14, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(14, s), p, o, m)
+# define MSGPACK_PP_FOR_14_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(15, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_15, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(15, s), p, o, m)
+# define MSGPACK_PP_FOR_15_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(16, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_16, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(16, s), p, o, m)
+# define MSGPACK_PP_FOR_16_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(17, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_17, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(17, s), p, o, m)
+# define MSGPACK_PP_FOR_17_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(18, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_18, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(18, s), p, o, m)
+# define MSGPACK_PP_FOR_18_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(19, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_19, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(19, s), p, o, m)
+# define MSGPACK_PP_FOR_19_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(20, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_20, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(20, s), p, o, m)
+# define MSGPACK_PP_FOR_20_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(21, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_21, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(21, s), p, o, m)
+# define MSGPACK_PP_FOR_21_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(22, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_22, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(22, s), p, o, m)
+# define MSGPACK_PP_FOR_22_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(23, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_23, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(23, s), p, o, m)
+# define MSGPACK_PP_FOR_23_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(24, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_24, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(24, s), p, o, m)
+# define MSGPACK_PP_FOR_24_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(25, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_25, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(25, s), p, o, m)
+# define MSGPACK_PP_FOR_25_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(26, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_26, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(26, s), p, o, m)
+# define MSGPACK_PP_FOR_26_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(27, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_27, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(27, s), p, o, m)
+# define MSGPACK_PP_FOR_27_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(28, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_28, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(28, s), p, o, m)
+# define MSGPACK_PP_FOR_28_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(29, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_29, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(29, s), p, o, m)
+# define MSGPACK_PP_FOR_29_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(30, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_30, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(30, s), p, o, m)
+# define MSGPACK_PP_FOR_30_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(31, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_31, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(31, s), p, o, m)
+# define MSGPACK_PP_FOR_31_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(32, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_32, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(32, s), p, o, m)
+# define MSGPACK_PP_FOR_32_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(33, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_33, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(33, s), p, o, m)
+# define MSGPACK_PP_FOR_33_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(34, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_34, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(34, s), p, o, m)
+# define MSGPACK_PP_FOR_34_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(35, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_35, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(35, s), p, o, m)
+# define MSGPACK_PP_FOR_35_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(36, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_36, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(36, s), p, o, m)
+# define MSGPACK_PP_FOR_36_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(37, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_37, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(37, s), p, o, m)
+# define MSGPACK_PP_FOR_37_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(38, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_38, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(38, s), p, o, m)
+# define MSGPACK_PP_FOR_38_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(39, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_39, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(39, s), p, o, m)
+# define MSGPACK_PP_FOR_39_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(40, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_40, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(40, s), p, o, m)
+# define MSGPACK_PP_FOR_40_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(41, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_41, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(41, s), p, o, m)
+# define MSGPACK_PP_FOR_41_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(42, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_42, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(42, s), p, o, m)
+# define MSGPACK_PP_FOR_42_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(43, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_43, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(43, s), p, o, m)
+# define MSGPACK_PP_FOR_43_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(44, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_44, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(44, s), p, o, m)
+# define MSGPACK_PP_FOR_44_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(45, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_45, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(45, s), p, o, m)
+# define MSGPACK_PP_FOR_45_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(46, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_46, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(46, s), p, o, m)
+# define MSGPACK_PP_FOR_46_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(47, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_47, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(47, s), p, o, m)
+# define MSGPACK_PP_FOR_47_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(48, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_48, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(48, s), p, o, m)
+# define MSGPACK_PP_FOR_48_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(49, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_49, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(49, s), p, o, m)
+# define MSGPACK_PP_FOR_49_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(50, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_50, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(50, s), p, o, m)
+# define MSGPACK_PP_FOR_50_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(51, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_51, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(51, s), p, o, m)
+# define MSGPACK_PP_FOR_51_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(52, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_52, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(52, s), p, o, m)
+# define MSGPACK_PP_FOR_52_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(53, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_53, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(53, s), p, o, m)
+# define MSGPACK_PP_FOR_53_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(54, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_54, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(54, s), p, o, m)
+# define MSGPACK_PP_FOR_54_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(55, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_55, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(55, s), p, o, m)
+# define MSGPACK_PP_FOR_55_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(56, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_56, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(56, s), p, o, m)
+# define MSGPACK_PP_FOR_56_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(57, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_57, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(57, s), p, o, m)
+# define MSGPACK_PP_FOR_57_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(58, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_58, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(58, s), p, o, m)
+# define MSGPACK_PP_FOR_58_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(59, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_59, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(59, s), p, o, m)
+# define MSGPACK_PP_FOR_59_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(60, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_60, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(60, s), p, o, m)
+# define MSGPACK_PP_FOR_60_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(61, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_61, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(61, s), p, o, m)
+# define MSGPACK_PP_FOR_61_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(62, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_62, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(62, s), p, o, m)
+# define MSGPACK_PP_FOR_62_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(63, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_63, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(63, s), p, o, m)
+# define MSGPACK_PP_FOR_63_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(64, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_64, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(64, s), p, o, m)
+# define MSGPACK_PP_FOR_64_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(65, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_65, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(65, s), p, o, m)
+# define MSGPACK_PP_FOR_65_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(66, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_66, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(66, s), p, o, m)
+# define MSGPACK_PP_FOR_66_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(67, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_67, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(67, s), p, o, m)
+# define MSGPACK_PP_FOR_67_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(68, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_68, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(68, s), p, o, m)
+# define MSGPACK_PP_FOR_68_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(69, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_69, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(69, s), p, o, m)
+# define MSGPACK_PP_FOR_69_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(70, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_70, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(70, s), p, o, m)
+# define MSGPACK_PP_FOR_70_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(71, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_71, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(71, s), p, o, m)
+# define MSGPACK_PP_FOR_71_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(72, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_72, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(72, s), p, o, m)
+# define MSGPACK_PP_FOR_72_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(73, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_73, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(73, s), p, o, m)
+# define MSGPACK_PP_FOR_73_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(74, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_74, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(74, s), p, o, m)
+# define MSGPACK_PP_FOR_74_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(75, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_75, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(75, s), p, o, m)
+# define MSGPACK_PP_FOR_75_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(76, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_76, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(76, s), p, o, m)
+# define MSGPACK_PP_FOR_76_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(77, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_77, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(77, s), p, o, m)
+# define MSGPACK_PP_FOR_77_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(78, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_78, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(78, s), p, o, m)
+# define MSGPACK_PP_FOR_78_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(79, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_79, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(79, s), p, o, m)
+# define MSGPACK_PP_FOR_79_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(80, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_80, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(80, s), p, o, m)
+# define MSGPACK_PP_FOR_80_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(81, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_81, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(81, s), p, o, m)
+# define MSGPACK_PP_FOR_81_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(82, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_82, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(82, s), p, o, m)
+# define MSGPACK_PP_FOR_82_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(83, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_83, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(83, s), p, o, m)
+# define MSGPACK_PP_FOR_83_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(84, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_84, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(84, s), p, o, m)
+# define MSGPACK_PP_FOR_84_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(85, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_85, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(85, s), p, o, m)
+# define MSGPACK_PP_FOR_85_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(86, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_86, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(86, s), p, o, m)
+# define MSGPACK_PP_FOR_86_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(87, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_87, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(87, s), p, o, m)
+# define MSGPACK_PP_FOR_87_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(88, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_88, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(88, s), p, o, m)
+# define MSGPACK_PP_FOR_88_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(89, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_89, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(89, s), p, o, m)
+# define MSGPACK_PP_FOR_89_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(90, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_90, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(90, s), p, o, m)
+# define MSGPACK_PP_FOR_90_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(91, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_91, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(91, s), p, o, m)
+# define MSGPACK_PP_FOR_91_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(92, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_92, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(92, s), p, o, m)
+# define MSGPACK_PP_FOR_92_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(93, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_93, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(93, s), p, o, m)
+# define MSGPACK_PP_FOR_93_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(94, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_94, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(94, s), p, o, m)
+# define MSGPACK_PP_FOR_94_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(95, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_95, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(95, s), p, o, m)
+# define MSGPACK_PP_FOR_95_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(96, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_96, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(96, s), p, o, m)
+# define MSGPACK_PP_FOR_96_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(97, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_97, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(97, s), p, o, m)
+# define MSGPACK_PP_FOR_97_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(98, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_98, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(98, s), p, o, m)
+# define MSGPACK_PP_FOR_98_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(99, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_99, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(99, s), p, o, m)
+# define MSGPACK_PP_FOR_99_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(100, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_100, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(100, s), p, o, m)
+# define MSGPACK_PP_FOR_100_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(101, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_101, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(101, s), p, o, m)
+# define MSGPACK_PP_FOR_101_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(102, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_102, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(102, s), p, o, m)
+# define MSGPACK_PP_FOR_102_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(103, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_103, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(103, s), p, o, m)
+# define MSGPACK_PP_FOR_103_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(104, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_104, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(104, s), p, o, m)
+# define MSGPACK_PP_FOR_104_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(105, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_105, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(105, s), p, o, m)
+# define MSGPACK_PP_FOR_105_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(106, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_106, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(106, s), p, o, m)
+# define MSGPACK_PP_FOR_106_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(107, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_107, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(107, s), p, o, m)
+# define MSGPACK_PP_FOR_107_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(108, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_108, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(108, s), p, o, m)
+# define MSGPACK_PP_FOR_108_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(109, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_109, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(109, s), p, o, m)
+# define MSGPACK_PP_FOR_109_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(110, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_110, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(110, s), p, o, m)
+# define MSGPACK_PP_FOR_110_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(111, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_111, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(111, s), p, o, m)
+# define MSGPACK_PP_FOR_111_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(112, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_112, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(112, s), p, o, m)
+# define MSGPACK_PP_FOR_112_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(113, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_113, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(113, s), p, o, m)
+# define MSGPACK_PP_FOR_113_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(114, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_114, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(114, s), p, o, m)
+# define MSGPACK_PP_FOR_114_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(115, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_115, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(115, s), p, o, m)
+# define MSGPACK_PP_FOR_115_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(116, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_116, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(116, s), p, o, m)
+# define MSGPACK_PP_FOR_116_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(117, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_117, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(117, s), p, o, m)
+# define MSGPACK_PP_FOR_117_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(118, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_118, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(118, s), p, o, m)
+# define MSGPACK_PP_FOR_118_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(119, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_119, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(119, s), p, o, m)
+# define MSGPACK_PP_FOR_119_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(120, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_120, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(120, s), p, o, m)
+# define MSGPACK_PP_FOR_120_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(121, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_121, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(121, s), p, o, m)
+# define MSGPACK_PP_FOR_121_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(122, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_122, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(122, s), p, o, m)
+# define MSGPACK_PP_FOR_122_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(123, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_123, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(123, s), p, o, m)
+# define MSGPACK_PP_FOR_123_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(124, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_124, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(124, s), p, o, m)
+# define MSGPACK_PP_FOR_124_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(125, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_125, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(125, s), p, o, m)
+# define MSGPACK_PP_FOR_125_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(126, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_126, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(126, s), p, o, m)
+# define MSGPACK_PP_FOR_126_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(127, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_127, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(127, s), p, o, m)
+# define MSGPACK_PP_FOR_127_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(128, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_128, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(128, s), p, o, m)
+# define MSGPACK_PP_FOR_128_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(129, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_129, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(129, s), p, o, m)
+# define MSGPACK_PP_FOR_129_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(130, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_130, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(130, s), p, o, m)
+# define MSGPACK_PP_FOR_130_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(131, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_131, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(131, s), p, o, m)
+# define MSGPACK_PP_FOR_131_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(132, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_132, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(132, s), p, o, m)
+# define MSGPACK_PP_FOR_132_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(133, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_133, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(133, s), p, o, m)
+# define MSGPACK_PP_FOR_133_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(134, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_134, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(134, s), p, o, m)
+# define MSGPACK_PP_FOR_134_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(135, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_135, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(135, s), p, o, m)
+# define MSGPACK_PP_FOR_135_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(136, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_136, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(136, s), p, o, m)
+# define MSGPACK_PP_FOR_136_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(137, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_137, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(137, s), p, o, m)
+# define MSGPACK_PP_FOR_137_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(138, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_138, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(138, s), p, o, m)
+# define MSGPACK_PP_FOR_138_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(139, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_139, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(139, s), p, o, m)
+# define MSGPACK_PP_FOR_139_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(140, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_140, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(140, s), p, o, m)
+# define MSGPACK_PP_FOR_140_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(141, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_141, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(141, s), p, o, m)
+# define MSGPACK_PP_FOR_141_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(142, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_142, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(142, s), p, o, m)
+# define MSGPACK_PP_FOR_142_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(143, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_143, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(143, s), p, o, m)
+# define MSGPACK_PP_FOR_143_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(144, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_144, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(144, s), p, o, m)
+# define MSGPACK_PP_FOR_144_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(145, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_145, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(145, s), p, o, m)
+# define MSGPACK_PP_FOR_145_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(146, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_146, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(146, s), p, o, m)
+# define MSGPACK_PP_FOR_146_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(147, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_147, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(147, s), p, o, m)
+# define MSGPACK_PP_FOR_147_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(148, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_148, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(148, s), p, o, m)
+# define MSGPACK_PP_FOR_148_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(149, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_149, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(149, s), p, o, m)
+# define MSGPACK_PP_FOR_149_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(150, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_150, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(150, s), p, o, m)
+# define MSGPACK_PP_FOR_150_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(151, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_151, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(151, s), p, o, m)
+# define MSGPACK_PP_FOR_151_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(152, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_152, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(152, s), p, o, m)
+# define MSGPACK_PP_FOR_152_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(153, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_153, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(153, s), p, o, m)
+# define MSGPACK_PP_FOR_153_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(154, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_154, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(154, s), p, o, m)
+# define MSGPACK_PP_FOR_154_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(155, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_155, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(155, s), p, o, m)
+# define MSGPACK_PP_FOR_155_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(156, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_156, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(156, s), p, o, m)
+# define MSGPACK_PP_FOR_156_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(157, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_157, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(157, s), p, o, m)
+# define MSGPACK_PP_FOR_157_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(158, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_158, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(158, s), p, o, m)
+# define MSGPACK_PP_FOR_158_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(159, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_159, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(159, s), p, o, m)
+# define MSGPACK_PP_FOR_159_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(160, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_160, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(160, s), p, o, m)
+# define MSGPACK_PP_FOR_160_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(161, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_161, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(161, s), p, o, m)
+# define MSGPACK_PP_FOR_161_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(162, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_162, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(162, s), p, o, m)
+# define MSGPACK_PP_FOR_162_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(163, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_163, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(163, s), p, o, m)
+# define MSGPACK_PP_FOR_163_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(164, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_164, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(164, s), p, o, m)
+# define MSGPACK_PP_FOR_164_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(165, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_165, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(165, s), p, o, m)
+# define MSGPACK_PP_FOR_165_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(166, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_166, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(166, s), p, o, m)
+# define MSGPACK_PP_FOR_166_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(167, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_167, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(167, s), p, o, m)
+# define MSGPACK_PP_FOR_167_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(168, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_168, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(168, s), p, o, m)
+# define MSGPACK_PP_FOR_168_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(169, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_169, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(169, s), p, o, m)
+# define MSGPACK_PP_FOR_169_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(170, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_170, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(170, s), p, o, m)
+# define MSGPACK_PP_FOR_170_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(171, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_171, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(171, s), p, o, m)
+# define MSGPACK_PP_FOR_171_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(172, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_172, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(172, s), p, o, m)
+# define MSGPACK_PP_FOR_172_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(173, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_173, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(173, s), p, o, m)
+# define MSGPACK_PP_FOR_173_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(174, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_174, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(174, s), p, o, m)
+# define MSGPACK_PP_FOR_174_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(175, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_175, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(175, s), p, o, m)
+# define MSGPACK_PP_FOR_175_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(176, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_176, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(176, s), p, o, m)
+# define MSGPACK_PP_FOR_176_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(177, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_177, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(177, s), p, o, m)
+# define MSGPACK_PP_FOR_177_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(178, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_178, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(178, s), p, o, m)
+# define MSGPACK_PP_FOR_178_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(179, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_179, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(179, s), p, o, m)
+# define MSGPACK_PP_FOR_179_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(180, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_180, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(180, s), p, o, m)
+# define MSGPACK_PP_FOR_180_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(181, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_181, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(181, s), p, o, m)
+# define MSGPACK_PP_FOR_181_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(182, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_182, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(182, s), p, o, m)
+# define MSGPACK_PP_FOR_182_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(183, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_183, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(183, s), p, o, m)
+# define MSGPACK_PP_FOR_183_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(184, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_184, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(184, s), p, o, m)
+# define MSGPACK_PP_FOR_184_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(185, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_185, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(185, s), p, o, m)
+# define MSGPACK_PP_FOR_185_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(186, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_186, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(186, s), p, o, m)
+# define MSGPACK_PP_FOR_186_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(187, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_187, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(187, s), p, o, m)
+# define MSGPACK_PP_FOR_187_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(188, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_188, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(188, s), p, o, m)
+# define MSGPACK_PP_FOR_188_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(189, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_189, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(189, s), p, o, m)
+# define MSGPACK_PP_FOR_189_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(190, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_190, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(190, s), p, o, m)
+# define MSGPACK_PP_FOR_190_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(191, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_191, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(191, s), p, o, m)
+# define MSGPACK_PP_FOR_191_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(192, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_192, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(192, s), p, o, m)
+# define MSGPACK_PP_FOR_192_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(193, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_193, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(193, s), p, o, m)
+# define MSGPACK_PP_FOR_193_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(194, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_194, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(194, s), p, o, m)
+# define MSGPACK_PP_FOR_194_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(195, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_195, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(195, s), p, o, m)
+# define MSGPACK_PP_FOR_195_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(196, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_196, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(196, s), p, o, m)
+# define MSGPACK_PP_FOR_196_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(197, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_197, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(197, s), p, o, m)
+# define MSGPACK_PP_FOR_197_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(198, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_198, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(198, s), p, o, m)
+# define MSGPACK_PP_FOR_198_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(199, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_199, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(199, s), p, o, m)
+# define MSGPACK_PP_FOR_199_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(200, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_200, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(200, s), p, o, m)
+# define MSGPACK_PP_FOR_200_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(201, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_201, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(201, s), p, o, m)
+# define MSGPACK_PP_FOR_201_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(202, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_202, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(202, s), p, o, m)
+# define MSGPACK_PP_FOR_202_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(203, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_203, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(203, s), p, o, m)
+# define MSGPACK_PP_FOR_203_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(204, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_204, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(204, s), p, o, m)
+# define MSGPACK_PP_FOR_204_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(205, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_205, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(205, s), p, o, m)
+# define MSGPACK_PP_FOR_205_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(206, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_206, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(206, s), p, o, m)
+# define MSGPACK_PP_FOR_206_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(207, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_207, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(207, s), p, o, m)
+# define MSGPACK_PP_FOR_207_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(208, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_208, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(208, s), p, o, m)
+# define MSGPACK_PP_FOR_208_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(209, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_209, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(209, s), p, o, m)
+# define MSGPACK_PP_FOR_209_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(210, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_210, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(210, s), p, o, m)
+# define MSGPACK_PP_FOR_210_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(211, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_211, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(211, s), p, o, m)
+# define MSGPACK_PP_FOR_211_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(212, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_212, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(212, s), p, o, m)
+# define MSGPACK_PP_FOR_212_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(213, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_213, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(213, s), p, o, m)
+# define MSGPACK_PP_FOR_213_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(214, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_214, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(214, s), p, o, m)
+# define MSGPACK_PP_FOR_214_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(215, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_215, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(215, s), p, o, m)
+# define MSGPACK_PP_FOR_215_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(216, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_216, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(216, s), p, o, m)
+# define MSGPACK_PP_FOR_216_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(217, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_217, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(217, s), p, o, m)
+# define MSGPACK_PP_FOR_217_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(218, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_218, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(218, s), p, o, m)
+# define MSGPACK_PP_FOR_218_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(219, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_219, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(219, s), p, o, m)
+# define MSGPACK_PP_FOR_219_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(220, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_220, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(220, s), p, o, m)
+# define MSGPACK_PP_FOR_220_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(221, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_221, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(221, s), p, o, m)
+# define MSGPACK_PP_FOR_221_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(222, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_222, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(222, s), p, o, m)
+# define MSGPACK_PP_FOR_222_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(223, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_223, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(223, s), p, o, m)
+# define MSGPACK_PP_FOR_223_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(224, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_224, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(224, s), p, o, m)
+# define MSGPACK_PP_FOR_224_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(225, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_225, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(225, s), p, o, m)
+# define MSGPACK_PP_FOR_225_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(226, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_226, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(226, s), p, o, m)
+# define MSGPACK_PP_FOR_226_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(227, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_227, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(227, s), p, o, m)
+# define MSGPACK_PP_FOR_227_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(228, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_228, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(228, s), p, o, m)
+# define MSGPACK_PP_FOR_228_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(229, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_229, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(229, s), p, o, m)
+# define MSGPACK_PP_FOR_229_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(230, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_230, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(230, s), p, o, m)
+# define MSGPACK_PP_FOR_230_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(231, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_231, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(231, s), p, o, m)
+# define MSGPACK_PP_FOR_231_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(232, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_232, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(232, s), p, o, m)
+# define MSGPACK_PP_FOR_232_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(233, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_233, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(233, s), p, o, m)
+# define MSGPACK_PP_FOR_233_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(234, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_234, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(234, s), p, o, m)
+# define MSGPACK_PP_FOR_234_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(235, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_235, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(235, s), p, o, m)
+# define MSGPACK_PP_FOR_235_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(236, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_236, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(236, s), p, o, m)
+# define MSGPACK_PP_FOR_236_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(237, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_237, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(237, s), p, o, m)
+# define MSGPACK_PP_FOR_237_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(238, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_238, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(238, s), p, o, m)
+# define MSGPACK_PP_FOR_238_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(239, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_239, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(239, s), p, o, m)
+# define MSGPACK_PP_FOR_239_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(240, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_240, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(240, s), p, o, m)
+# define MSGPACK_PP_FOR_240_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(241, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_241, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(241, s), p, o, m)
+# define MSGPACK_PP_FOR_241_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(242, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_242, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(242, s), p, o, m)
+# define MSGPACK_PP_FOR_242_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(243, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_243, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(243, s), p, o, m)
+# define MSGPACK_PP_FOR_243_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(244, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_244, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(244, s), p, o, m)
+# define MSGPACK_PP_FOR_244_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(245, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_245, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(245, s), p, o, m)
+# define MSGPACK_PP_FOR_245_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(246, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_246, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(246, s), p, o, m)
+# define MSGPACK_PP_FOR_246_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(247, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_247, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(247, s), p, o, m)
+# define MSGPACK_PP_FOR_247_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(248, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_248, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(248, s), p, o, m)
+# define MSGPACK_PP_FOR_248_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(249, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_249, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(249, s), p, o, m)
+# define MSGPACK_PP_FOR_249_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(250, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_250, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(250, s), p, o, m)
+# define MSGPACK_PP_FOR_250_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(251, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_251, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(251, s), p, o, m)
+# define MSGPACK_PP_FOR_251_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(252, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_252, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(252, s), p, o, m)
+# define MSGPACK_PP_FOR_252_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(253, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_253, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(253, s), p, o, m)
+# define MSGPACK_PP_FOR_253_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(254, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_254, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(254, s), p, o, m)
+# define MSGPACK_PP_FOR_254_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(255, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_255, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(255, s), p, o, m)
+# define MSGPACK_PP_FOR_255_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(256, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_256, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(256, s), p, o, m)
+# define MSGPACK_PP_FOR_256_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(257, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_257, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(257, s), p, o, m)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/repetition/detail/edg/for.hpp b/third_party/msgpack/include/msgpack/preprocessor/repetition/detail/edg/for.hpp
new file mode 100644
index 0000000000..b9a510f6c6
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/repetition/detail/edg/for.hpp
@@ -0,0 +1,534 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_REPETITION_DETAIL_EDG_FOR_HPP
+# define MSGPACK_PREPROCESSOR_REPETITION_DETAIL_EDG_FOR_HPP
+#
+# include <msgpack/preprocessor/control/if.hpp>
+# include <msgpack/preprocessor/tuple/eat.hpp>
+#
+# define MSGPACK_PP_FOR_1(s, p, o, m) MSGPACK_PP_FOR_1_I(s, p, o, m)
+# define MSGPACK_PP_FOR_2(s, p, o, m) MSGPACK_PP_FOR_2_I(s, p, o, m)
+# define MSGPACK_PP_FOR_3(s, p, o, m) MSGPACK_PP_FOR_3_I(s, p, o, m)
+# define MSGPACK_PP_FOR_4(s, p, o, m) MSGPACK_PP_FOR_4_I(s, p, o, m)
+# define MSGPACK_PP_FOR_5(s, p, o, m) MSGPACK_PP_FOR_5_I(s, p, o, m)
+# define MSGPACK_PP_FOR_6(s, p, o, m) MSGPACK_PP_FOR_6_I(s, p, o, m)
+# define MSGPACK_PP_FOR_7(s, p, o, m) MSGPACK_PP_FOR_7_I(s, p, o, m)
+# define MSGPACK_PP_FOR_8(s, p, o, m) MSGPACK_PP_FOR_8_I(s, p, o, m)
+# define MSGPACK_PP_FOR_9(s, p, o, m) MSGPACK_PP_FOR_9_I(s, p, o, m)
+# define MSGPACK_PP_FOR_10(s, p, o, m) MSGPACK_PP_FOR_10_I(s, p, o, m)
+# define MSGPACK_PP_FOR_11(s, p, o, m) MSGPACK_PP_FOR_11_I(s, p, o, m)
+# define MSGPACK_PP_FOR_12(s, p, o, m) MSGPACK_PP_FOR_12_I(s, p, o, m)
+# define MSGPACK_PP_FOR_13(s, p, o, m) MSGPACK_PP_FOR_13_I(s, p, o, m)
+# define MSGPACK_PP_FOR_14(s, p, o, m) MSGPACK_PP_FOR_14_I(s, p, o, m)
+# define MSGPACK_PP_FOR_15(s, p, o, m) MSGPACK_PP_FOR_15_I(s, p, o, m)
+# define MSGPACK_PP_FOR_16(s, p, o, m) MSGPACK_PP_FOR_16_I(s, p, o, m)
+# define MSGPACK_PP_FOR_17(s, p, o, m) MSGPACK_PP_FOR_17_I(s, p, o, m)
+# define MSGPACK_PP_FOR_18(s, p, o, m) MSGPACK_PP_FOR_18_I(s, p, o, m)
+# define MSGPACK_PP_FOR_19(s, p, o, m) MSGPACK_PP_FOR_19_I(s, p, o, m)
+# define MSGPACK_PP_FOR_20(s, p, o, m) MSGPACK_PP_FOR_20_I(s, p, o, m)
+# define MSGPACK_PP_FOR_21(s, p, o, m) MSGPACK_PP_FOR_21_I(s, p, o, m)
+# define MSGPACK_PP_FOR_22(s, p, o, m) MSGPACK_PP_FOR_22_I(s, p, o, m)
+# define MSGPACK_PP_FOR_23(s, p, o, m) MSGPACK_PP_FOR_23_I(s, p, o, m)
+# define MSGPACK_PP_FOR_24(s, p, o, m) MSGPACK_PP_FOR_24_I(s, p, o, m)
+# define MSGPACK_PP_FOR_25(s, p, o, m) MSGPACK_PP_FOR_25_I(s, p, o, m)
+# define MSGPACK_PP_FOR_26(s, p, o, m) MSGPACK_PP_FOR_26_I(s, p, o, m)
+# define MSGPACK_PP_FOR_27(s, p, o, m) MSGPACK_PP_FOR_27_I(s, p, o, m)
+# define MSGPACK_PP_FOR_28(s, p, o, m) MSGPACK_PP_FOR_28_I(s, p, o, m)
+# define MSGPACK_PP_FOR_29(s, p, o, m) MSGPACK_PP_FOR_29_I(s, p, o, m)
+# define MSGPACK_PP_FOR_30(s, p, o, m) MSGPACK_PP_FOR_30_I(s, p, o, m)
+# define MSGPACK_PP_FOR_31(s, p, o, m) MSGPACK_PP_FOR_31_I(s, p, o, m)
+# define MSGPACK_PP_FOR_32(s, p, o, m) MSGPACK_PP_FOR_32_I(s, p, o, m)
+# define MSGPACK_PP_FOR_33(s, p, o, m) MSGPACK_PP_FOR_33_I(s, p, o, m)
+# define MSGPACK_PP_FOR_34(s, p, o, m) MSGPACK_PP_FOR_34_I(s, p, o, m)
+# define MSGPACK_PP_FOR_35(s, p, o, m) MSGPACK_PP_FOR_35_I(s, p, o, m)
+# define MSGPACK_PP_FOR_36(s, p, o, m) MSGPACK_PP_FOR_36_I(s, p, o, m)
+# define MSGPACK_PP_FOR_37(s, p, o, m) MSGPACK_PP_FOR_37_I(s, p, o, m)
+# define MSGPACK_PP_FOR_38(s, p, o, m) MSGPACK_PP_FOR_38_I(s, p, o, m)
+# define MSGPACK_PP_FOR_39(s, p, o, m) MSGPACK_PP_FOR_39_I(s, p, o, m)
+# define MSGPACK_PP_FOR_40(s, p, o, m) MSGPACK_PP_FOR_40_I(s, p, o, m)
+# define MSGPACK_PP_FOR_41(s, p, o, m) MSGPACK_PP_FOR_41_I(s, p, o, m)
+# define MSGPACK_PP_FOR_42(s, p, o, m) MSGPACK_PP_FOR_42_I(s, p, o, m)
+# define MSGPACK_PP_FOR_43(s, p, o, m) MSGPACK_PP_FOR_43_I(s, p, o, m)
+# define MSGPACK_PP_FOR_44(s, p, o, m) MSGPACK_PP_FOR_44_I(s, p, o, m)
+# define MSGPACK_PP_FOR_45(s, p, o, m) MSGPACK_PP_FOR_45_I(s, p, o, m)
+# define MSGPACK_PP_FOR_46(s, p, o, m) MSGPACK_PP_FOR_46_I(s, p, o, m)
+# define MSGPACK_PP_FOR_47(s, p, o, m) MSGPACK_PP_FOR_47_I(s, p, o, m)
+# define MSGPACK_PP_FOR_48(s, p, o, m) MSGPACK_PP_FOR_48_I(s, p, o, m)
+# define MSGPACK_PP_FOR_49(s, p, o, m) MSGPACK_PP_FOR_49_I(s, p, o, m)
+# define MSGPACK_PP_FOR_50(s, p, o, m) MSGPACK_PP_FOR_50_I(s, p, o, m)
+# define MSGPACK_PP_FOR_51(s, p, o, m) MSGPACK_PP_FOR_51_I(s, p, o, m)
+# define MSGPACK_PP_FOR_52(s, p, o, m) MSGPACK_PP_FOR_52_I(s, p, o, m)
+# define MSGPACK_PP_FOR_53(s, p, o, m) MSGPACK_PP_FOR_53_I(s, p, o, m)
+# define MSGPACK_PP_FOR_54(s, p, o, m) MSGPACK_PP_FOR_54_I(s, p, o, m)
+# define MSGPACK_PP_FOR_55(s, p, o, m) MSGPACK_PP_FOR_55_I(s, p, o, m)
+# define MSGPACK_PP_FOR_56(s, p, o, m) MSGPACK_PP_FOR_56_I(s, p, o, m)
+# define MSGPACK_PP_FOR_57(s, p, o, m) MSGPACK_PP_FOR_57_I(s, p, o, m)
+# define MSGPACK_PP_FOR_58(s, p, o, m) MSGPACK_PP_FOR_58_I(s, p, o, m)
+# define MSGPACK_PP_FOR_59(s, p, o, m) MSGPACK_PP_FOR_59_I(s, p, o, m)
+# define MSGPACK_PP_FOR_60(s, p, o, m) MSGPACK_PP_FOR_60_I(s, p, o, m)
+# define MSGPACK_PP_FOR_61(s, p, o, m) MSGPACK_PP_FOR_61_I(s, p, o, m)
+# define MSGPACK_PP_FOR_62(s, p, o, m) MSGPACK_PP_FOR_62_I(s, p, o, m)
+# define MSGPACK_PP_FOR_63(s, p, o, m) MSGPACK_PP_FOR_63_I(s, p, o, m)
+# define MSGPACK_PP_FOR_64(s, p, o, m) MSGPACK_PP_FOR_64_I(s, p, o, m)
+# define MSGPACK_PP_FOR_65(s, p, o, m) MSGPACK_PP_FOR_65_I(s, p, o, m)
+# define MSGPACK_PP_FOR_66(s, p, o, m) MSGPACK_PP_FOR_66_I(s, p, o, m)
+# define MSGPACK_PP_FOR_67(s, p, o, m) MSGPACK_PP_FOR_67_I(s, p, o, m)
+# define MSGPACK_PP_FOR_68(s, p, o, m) MSGPACK_PP_FOR_68_I(s, p, o, m)
+# define MSGPACK_PP_FOR_69(s, p, o, m) MSGPACK_PP_FOR_69_I(s, p, o, m)
+# define MSGPACK_PP_FOR_70(s, p, o, m) MSGPACK_PP_FOR_70_I(s, p, o, m)
+# define MSGPACK_PP_FOR_71(s, p, o, m) MSGPACK_PP_FOR_71_I(s, p, o, m)
+# define MSGPACK_PP_FOR_72(s, p, o, m) MSGPACK_PP_FOR_72_I(s, p, o, m)
+# define MSGPACK_PP_FOR_73(s, p, o, m) MSGPACK_PP_FOR_73_I(s, p, o, m)
+# define MSGPACK_PP_FOR_74(s, p, o, m) MSGPACK_PP_FOR_74_I(s, p, o, m)
+# define MSGPACK_PP_FOR_75(s, p, o, m) MSGPACK_PP_FOR_75_I(s, p, o, m)
+# define MSGPACK_PP_FOR_76(s, p, o, m) MSGPACK_PP_FOR_76_I(s, p, o, m)
+# define MSGPACK_PP_FOR_77(s, p, o, m) MSGPACK_PP_FOR_77_I(s, p, o, m)
+# define MSGPACK_PP_FOR_78(s, p, o, m) MSGPACK_PP_FOR_78_I(s, p, o, m)
+# define MSGPACK_PP_FOR_79(s, p, o, m) MSGPACK_PP_FOR_79_I(s, p, o, m)
+# define MSGPACK_PP_FOR_80(s, p, o, m) MSGPACK_PP_FOR_80_I(s, p, o, m)
+# define MSGPACK_PP_FOR_81(s, p, o, m) MSGPACK_PP_FOR_81_I(s, p, o, m)
+# define MSGPACK_PP_FOR_82(s, p, o, m) MSGPACK_PP_FOR_82_I(s, p, o, m)
+# define MSGPACK_PP_FOR_83(s, p, o, m) MSGPACK_PP_FOR_83_I(s, p, o, m)
+# define MSGPACK_PP_FOR_84(s, p, o, m) MSGPACK_PP_FOR_84_I(s, p, o, m)
+# define MSGPACK_PP_FOR_85(s, p, o, m) MSGPACK_PP_FOR_85_I(s, p, o, m)
+# define MSGPACK_PP_FOR_86(s, p, o, m) MSGPACK_PP_FOR_86_I(s, p, o, m)
+# define MSGPACK_PP_FOR_87(s, p, o, m) MSGPACK_PP_FOR_87_I(s, p, o, m)
+# define MSGPACK_PP_FOR_88(s, p, o, m) MSGPACK_PP_FOR_88_I(s, p, o, m)
+# define MSGPACK_PP_FOR_89(s, p, o, m) MSGPACK_PP_FOR_89_I(s, p, o, m)
+# define MSGPACK_PP_FOR_90(s, p, o, m) MSGPACK_PP_FOR_90_I(s, p, o, m)
+# define MSGPACK_PP_FOR_91(s, p, o, m) MSGPACK_PP_FOR_91_I(s, p, o, m)
+# define MSGPACK_PP_FOR_92(s, p, o, m) MSGPACK_PP_FOR_92_I(s, p, o, m)
+# define MSGPACK_PP_FOR_93(s, p, o, m) MSGPACK_PP_FOR_93_I(s, p, o, m)
+# define MSGPACK_PP_FOR_94(s, p, o, m) MSGPACK_PP_FOR_94_I(s, p, o, m)
+# define MSGPACK_PP_FOR_95(s, p, o, m) MSGPACK_PP_FOR_95_I(s, p, o, m)
+# define MSGPACK_PP_FOR_96(s, p, o, m) MSGPACK_PP_FOR_96_I(s, p, o, m)
+# define MSGPACK_PP_FOR_97(s, p, o, m) MSGPACK_PP_FOR_97_I(s, p, o, m)
+# define MSGPACK_PP_FOR_98(s, p, o, m) MSGPACK_PP_FOR_98_I(s, p, o, m)
+# define MSGPACK_PP_FOR_99(s, p, o, m) MSGPACK_PP_FOR_99_I(s, p, o, m)
+# define MSGPACK_PP_FOR_100(s, p, o, m) MSGPACK_PP_FOR_100_I(s, p, o, m)
+# define MSGPACK_PP_FOR_101(s, p, o, m) MSGPACK_PP_FOR_101_I(s, p, o, m)
+# define MSGPACK_PP_FOR_102(s, p, o, m) MSGPACK_PP_FOR_102_I(s, p, o, m)
+# define MSGPACK_PP_FOR_103(s, p, o, m) MSGPACK_PP_FOR_103_I(s, p, o, m)
+# define MSGPACK_PP_FOR_104(s, p, o, m) MSGPACK_PP_FOR_104_I(s, p, o, m)
+# define MSGPACK_PP_FOR_105(s, p, o, m) MSGPACK_PP_FOR_105_I(s, p, o, m)
+# define MSGPACK_PP_FOR_106(s, p, o, m) MSGPACK_PP_FOR_106_I(s, p, o, m)
+# define MSGPACK_PP_FOR_107(s, p, o, m) MSGPACK_PP_FOR_107_I(s, p, o, m)
+# define MSGPACK_PP_FOR_108(s, p, o, m) MSGPACK_PP_FOR_108_I(s, p, o, m)
+# define MSGPACK_PP_FOR_109(s, p, o, m) MSGPACK_PP_FOR_109_I(s, p, o, m)
+# define MSGPACK_PP_FOR_110(s, p, o, m) MSGPACK_PP_FOR_110_I(s, p, o, m)
+# define MSGPACK_PP_FOR_111(s, p, o, m) MSGPACK_PP_FOR_111_I(s, p, o, m)
+# define MSGPACK_PP_FOR_112(s, p, o, m) MSGPACK_PP_FOR_112_I(s, p, o, m)
+# define MSGPACK_PP_FOR_113(s, p, o, m) MSGPACK_PP_FOR_113_I(s, p, o, m)
+# define MSGPACK_PP_FOR_114(s, p, o, m) MSGPACK_PP_FOR_114_I(s, p, o, m)
+# define MSGPACK_PP_FOR_115(s, p, o, m) MSGPACK_PP_FOR_115_I(s, p, o, m)
+# define MSGPACK_PP_FOR_116(s, p, o, m) MSGPACK_PP_FOR_116_I(s, p, o, m)
+# define MSGPACK_PP_FOR_117(s, p, o, m) MSGPACK_PP_FOR_117_I(s, p, o, m)
+# define MSGPACK_PP_FOR_118(s, p, o, m) MSGPACK_PP_FOR_118_I(s, p, o, m)
+# define MSGPACK_PP_FOR_119(s, p, o, m) MSGPACK_PP_FOR_119_I(s, p, o, m)
+# define MSGPACK_PP_FOR_120(s, p, o, m) MSGPACK_PP_FOR_120_I(s, p, o, m)
+# define MSGPACK_PP_FOR_121(s, p, o, m) MSGPACK_PP_FOR_121_I(s, p, o, m)
+# define MSGPACK_PP_FOR_122(s, p, o, m) MSGPACK_PP_FOR_122_I(s, p, o, m)
+# define MSGPACK_PP_FOR_123(s, p, o, m) MSGPACK_PP_FOR_123_I(s, p, o, m)
+# define MSGPACK_PP_FOR_124(s, p, o, m) MSGPACK_PP_FOR_124_I(s, p, o, m)
+# define MSGPACK_PP_FOR_125(s, p, o, m) MSGPACK_PP_FOR_125_I(s, p, o, m)
+# define MSGPACK_PP_FOR_126(s, p, o, m) MSGPACK_PP_FOR_126_I(s, p, o, m)
+# define MSGPACK_PP_FOR_127(s, p, o, m) MSGPACK_PP_FOR_127_I(s, p, o, m)
+# define MSGPACK_PP_FOR_128(s, p, o, m) MSGPACK_PP_FOR_128_I(s, p, o, m)
+# define MSGPACK_PP_FOR_129(s, p, o, m) MSGPACK_PP_FOR_129_I(s, p, o, m)
+# define MSGPACK_PP_FOR_130(s, p, o, m) MSGPACK_PP_FOR_130_I(s, p, o, m)
+# define MSGPACK_PP_FOR_131(s, p, o, m) MSGPACK_PP_FOR_131_I(s, p, o, m)
+# define MSGPACK_PP_FOR_132(s, p, o, m) MSGPACK_PP_FOR_132_I(s, p, o, m)
+# define MSGPACK_PP_FOR_133(s, p, o, m) MSGPACK_PP_FOR_133_I(s, p, o, m)
+# define MSGPACK_PP_FOR_134(s, p, o, m) MSGPACK_PP_FOR_134_I(s, p, o, m)
+# define MSGPACK_PP_FOR_135(s, p, o, m) MSGPACK_PP_FOR_135_I(s, p, o, m)
+# define MSGPACK_PP_FOR_136(s, p, o, m) MSGPACK_PP_FOR_136_I(s, p, o, m)
+# define MSGPACK_PP_FOR_137(s, p, o, m) MSGPACK_PP_FOR_137_I(s, p, o, m)
+# define MSGPACK_PP_FOR_138(s, p, o, m) MSGPACK_PP_FOR_138_I(s, p, o, m)
+# define MSGPACK_PP_FOR_139(s, p, o, m) MSGPACK_PP_FOR_139_I(s, p, o, m)
+# define MSGPACK_PP_FOR_140(s, p, o, m) MSGPACK_PP_FOR_140_I(s, p, o, m)
+# define MSGPACK_PP_FOR_141(s, p, o, m) MSGPACK_PP_FOR_141_I(s, p, o, m)
+# define MSGPACK_PP_FOR_142(s, p, o, m) MSGPACK_PP_FOR_142_I(s, p, o, m)
+# define MSGPACK_PP_FOR_143(s, p, o, m) MSGPACK_PP_FOR_143_I(s, p, o, m)
+# define MSGPACK_PP_FOR_144(s, p, o, m) MSGPACK_PP_FOR_144_I(s, p, o, m)
+# define MSGPACK_PP_FOR_145(s, p, o, m) MSGPACK_PP_FOR_145_I(s, p, o, m)
+# define MSGPACK_PP_FOR_146(s, p, o, m) MSGPACK_PP_FOR_146_I(s, p, o, m)
+# define MSGPACK_PP_FOR_147(s, p, o, m) MSGPACK_PP_FOR_147_I(s, p, o, m)
+# define MSGPACK_PP_FOR_148(s, p, o, m) MSGPACK_PP_FOR_148_I(s, p, o, m)
+# define MSGPACK_PP_FOR_149(s, p, o, m) MSGPACK_PP_FOR_149_I(s, p, o, m)
+# define MSGPACK_PP_FOR_150(s, p, o, m) MSGPACK_PP_FOR_150_I(s, p, o, m)
+# define MSGPACK_PP_FOR_151(s, p, o, m) MSGPACK_PP_FOR_151_I(s, p, o, m)
+# define MSGPACK_PP_FOR_152(s, p, o, m) MSGPACK_PP_FOR_152_I(s, p, o, m)
+# define MSGPACK_PP_FOR_153(s, p, o, m) MSGPACK_PP_FOR_153_I(s, p, o, m)
+# define MSGPACK_PP_FOR_154(s, p, o, m) MSGPACK_PP_FOR_154_I(s, p, o, m)
+# define MSGPACK_PP_FOR_155(s, p, o, m) MSGPACK_PP_FOR_155_I(s, p, o, m)
+# define MSGPACK_PP_FOR_156(s, p, o, m) MSGPACK_PP_FOR_156_I(s, p, o, m)
+# define MSGPACK_PP_FOR_157(s, p, o, m) MSGPACK_PP_FOR_157_I(s, p, o, m)
+# define MSGPACK_PP_FOR_158(s, p, o, m) MSGPACK_PP_FOR_158_I(s, p, o, m)
+# define MSGPACK_PP_FOR_159(s, p, o, m) MSGPACK_PP_FOR_159_I(s, p, o, m)
+# define MSGPACK_PP_FOR_160(s, p, o, m) MSGPACK_PP_FOR_160_I(s, p, o, m)
+# define MSGPACK_PP_FOR_161(s, p, o, m) MSGPACK_PP_FOR_161_I(s, p, o, m)
+# define MSGPACK_PP_FOR_162(s, p, o, m) MSGPACK_PP_FOR_162_I(s, p, o, m)
+# define MSGPACK_PP_FOR_163(s, p, o, m) MSGPACK_PP_FOR_163_I(s, p, o, m)
+# define MSGPACK_PP_FOR_164(s, p, o, m) MSGPACK_PP_FOR_164_I(s, p, o, m)
+# define MSGPACK_PP_FOR_165(s, p, o, m) MSGPACK_PP_FOR_165_I(s, p, o, m)
+# define MSGPACK_PP_FOR_166(s, p, o, m) MSGPACK_PP_FOR_166_I(s, p, o, m)
+# define MSGPACK_PP_FOR_167(s, p, o, m) MSGPACK_PP_FOR_167_I(s, p, o, m)
+# define MSGPACK_PP_FOR_168(s, p, o, m) MSGPACK_PP_FOR_168_I(s, p, o, m)
+# define MSGPACK_PP_FOR_169(s, p, o, m) MSGPACK_PP_FOR_169_I(s, p, o, m)
+# define MSGPACK_PP_FOR_170(s, p, o, m) MSGPACK_PP_FOR_170_I(s, p, o, m)
+# define MSGPACK_PP_FOR_171(s, p, o, m) MSGPACK_PP_FOR_171_I(s, p, o, m)
+# define MSGPACK_PP_FOR_172(s, p, o, m) MSGPACK_PP_FOR_172_I(s, p, o, m)
+# define MSGPACK_PP_FOR_173(s, p, o, m) MSGPACK_PP_FOR_173_I(s, p, o, m)
+# define MSGPACK_PP_FOR_174(s, p, o, m) MSGPACK_PP_FOR_174_I(s, p, o, m)
+# define MSGPACK_PP_FOR_175(s, p, o, m) MSGPACK_PP_FOR_175_I(s, p, o, m)
+# define MSGPACK_PP_FOR_176(s, p, o, m) MSGPACK_PP_FOR_176_I(s, p, o, m)
+# define MSGPACK_PP_FOR_177(s, p, o, m) MSGPACK_PP_FOR_177_I(s, p, o, m)
+# define MSGPACK_PP_FOR_178(s, p, o, m) MSGPACK_PP_FOR_178_I(s, p, o, m)
+# define MSGPACK_PP_FOR_179(s, p, o, m) MSGPACK_PP_FOR_179_I(s, p, o, m)
+# define MSGPACK_PP_FOR_180(s, p, o, m) MSGPACK_PP_FOR_180_I(s, p, o, m)
+# define MSGPACK_PP_FOR_181(s, p, o, m) MSGPACK_PP_FOR_181_I(s, p, o, m)
+# define MSGPACK_PP_FOR_182(s, p, o, m) MSGPACK_PP_FOR_182_I(s, p, o, m)
+# define MSGPACK_PP_FOR_183(s, p, o, m) MSGPACK_PP_FOR_183_I(s, p, o, m)
+# define MSGPACK_PP_FOR_184(s, p, o, m) MSGPACK_PP_FOR_184_I(s, p, o, m)
+# define MSGPACK_PP_FOR_185(s, p, o, m) MSGPACK_PP_FOR_185_I(s, p, o, m)
+# define MSGPACK_PP_FOR_186(s, p, o, m) MSGPACK_PP_FOR_186_I(s, p, o, m)
+# define MSGPACK_PP_FOR_187(s, p, o, m) MSGPACK_PP_FOR_187_I(s, p, o, m)
+# define MSGPACK_PP_FOR_188(s, p, o, m) MSGPACK_PP_FOR_188_I(s, p, o, m)
+# define MSGPACK_PP_FOR_189(s, p, o, m) MSGPACK_PP_FOR_189_I(s, p, o, m)
+# define MSGPACK_PP_FOR_190(s, p, o, m) MSGPACK_PP_FOR_190_I(s, p, o, m)
+# define MSGPACK_PP_FOR_191(s, p, o, m) MSGPACK_PP_FOR_191_I(s, p, o, m)
+# define MSGPACK_PP_FOR_192(s, p, o, m) MSGPACK_PP_FOR_192_I(s, p, o, m)
+# define MSGPACK_PP_FOR_193(s, p, o, m) MSGPACK_PP_FOR_193_I(s, p, o, m)
+# define MSGPACK_PP_FOR_194(s, p, o, m) MSGPACK_PP_FOR_194_I(s, p, o, m)
+# define MSGPACK_PP_FOR_195(s, p, o, m) MSGPACK_PP_FOR_195_I(s, p, o, m)
+# define MSGPACK_PP_FOR_196(s, p, o, m) MSGPACK_PP_FOR_196_I(s, p, o, m)
+# define MSGPACK_PP_FOR_197(s, p, o, m) MSGPACK_PP_FOR_197_I(s, p, o, m)
+# define MSGPACK_PP_FOR_198(s, p, o, m) MSGPACK_PP_FOR_198_I(s, p, o, m)
+# define MSGPACK_PP_FOR_199(s, p, o, m) MSGPACK_PP_FOR_199_I(s, p, o, m)
+# define MSGPACK_PP_FOR_200(s, p, o, m) MSGPACK_PP_FOR_200_I(s, p, o, m)
+# define MSGPACK_PP_FOR_201(s, p, o, m) MSGPACK_PP_FOR_201_I(s, p, o, m)
+# define MSGPACK_PP_FOR_202(s, p, o, m) MSGPACK_PP_FOR_202_I(s, p, o, m)
+# define MSGPACK_PP_FOR_203(s, p, o, m) MSGPACK_PP_FOR_203_I(s, p, o, m)
+# define MSGPACK_PP_FOR_204(s, p, o, m) MSGPACK_PP_FOR_204_I(s, p, o, m)
+# define MSGPACK_PP_FOR_205(s, p, o, m) MSGPACK_PP_FOR_205_I(s, p, o, m)
+# define MSGPACK_PP_FOR_206(s, p, o, m) MSGPACK_PP_FOR_206_I(s, p, o, m)
+# define MSGPACK_PP_FOR_207(s, p, o, m) MSGPACK_PP_FOR_207_I(s, p, o, m)
+# define MSGPACK_PP_FOR_208(s, p, o, m) MSGPACK_PP_FOR_208_I(s, p, o, m)
+# define MSGPACK_PP_FOR_209(s, p, o, m) MSGPACK_PP_FOR_209_I(s, p, o, m)
+# define MSGPACK_PP_FOR_210(s, p, o, m) MSGPACK_PP_FOR_210_I(s, p, o, m)
+# define MSGPACK_PP_FOR_211(s, p, o, m) MSGPACK_PP_FOR_211_I(s, p, o, m)
+# define MSGPACK_PP_FOR_212(s, p, o, m) MSGPACK_PP_FOR_212_I(s, p, o, m)
+# define MSGPACK_PP_FOR_213(s, p, o, m) MSGPACK_PP_FOR_213_I(s, p, o, m)
+# define MSGPACK_PP_FOR_214(s, p, o, m) MSGPACK_PP_FOR_214_I(s, p, o, m)
+# define MSGPACK_PP_FOR_215(s, p, o, m) MSGPACK_PP_FOR_215_I(s, p, o, m)
+# define MSGPACK_PP_FOR_216(s, p, o, m) MSGPACK_PP_FOR_216_I(s, p, o, m)
+# define MSGPACK_PP_FOR_217(s, p, o, m) MSGPACK_PP_FOR_217_I(s, p, o, m)
+# define MSGPACK_PP_FOR_218(s, p, o, m) MSGPACK_PP_FOR_218_I(s, p, o, m)
+# define MSGPACK_PP_FOR_219(s, p, o, m) MSGPACK_PP_FOR_219_I(s, p, o, m)
+# define MSGPACK_PP_FOR_220(s, p, o, m) MSGPACK_PP_FOR_220_I(s, p, o, m)
+# define MSGPACK_PP_FOR_221(s, p, o, m) MSGPACK_PP_FOR_221_I(s, p, o, m)
+# define MSGPACK_PP_FOR_222(s, p, o, m) MSGPACK_PP_FOR_222_I(s, p, o, m)
+# define MSGPACK_PP_FOR_223(s, p, o, m) MSGPACK_PP_FOR_223_I(s, p, o, m)
+# define MSGPACK_PP_FOR_224(s, p, o, m) MSGPACK_PP_FOR_224_I(s, p, o, m)
+# define MSGPACK_PP_FOR_225(s, p, o, m) MSGPACK_PP_FOR_225_I(s, p, o, m)
+# define MSGPACK_PP_FOR_226(s, p, o, m) MSGPACK_PP_FOR_226_I(s, p, o, m)
+# define MSGPACK_PP_FOR_227(s, p, o, m) MSGPACK_PP_FOR_227_I(s, p, o, m)
+# define MSGPACK_PP_FOR_228(s, p, o, m) MSGPACK_PP_FOR_228_I(s, p, o, m)
+# define MSGPACK_PP_FOR_229(s, p, o, m) MSGPACK_PP_FOR_229_I(s, p, o, m)
+# define MSGPACK_PP_FOR_230(s, p, o, m) MSGPACK_PP_FOR_230_I(s, p, o, m)
+# define MSGPACK_PP_FOR_231(s, p, o, m) MSGPACK_PP_FOR_231_I(s, p, o, m)
+# define MSGPACK_PP_FOR_232(s, p, o, m) MSGPACK_PP_FOR_232_I(s, p, o, m)
+# define MSGPACK_PP_FOR_233(s, p, o, m) MSGPACK_PP_FOR_233_I(s, p, o, m)
+# define MSGPACK_PP_FOR_234(s, p, o, m) MSGPACK_PP_FOR_234_I(s, p, o, m)
+# define MSGPACK_PP_FOR_235(s, p, o, m) MSGPACK_PP_FOR_235_I(s, p, o, m)
+# define MSGPACK_PP_FOR_236(s, p, o, m) MSGPACK_PP_FOR_236_I(s, p, o, m)
+# define MSGPACK_PP_FOR_237(s, p, o, m) MSGPACK_PP_FOR_237_I(s, p, o, m)
+# define MSGPACK_PP_FOR_238(s, p, o, m) MSGPACK_PP_FOR_238_I(s, p, o, m)
+# define MSGPACK_PP_FOR_239(s, p, o, m) MSGPACK_PP_FOR_239_I(s, p, o, m)
+# define MSGPACK_PP_FOR_240(s, p, o, m) MSGPACK_PP_FOR_240_I(s, p, o, m)
+# define MSGPACK_PP_FOR_241(s, p, o, m) MSGPACK_PP_FOR_241_I(s, p, o, m)
+# define MSGPACK_PP_FOR_242(s, p, o, m) MSGPACK_PP_FOR_242_I(s, p, o, m)
+# define MSGPACK_PP_FOR_243(s, p, o, m) MSGPACK_PP_FOR_243_I(s, p, o, m)
+# define MSGPACK_PP_FOR_244(s, p, o, m) MSGPACK_PP_FOR_244_I(s, p, o, m)
+# define MSGPACK_PP_FOR_245(s, p, o, m) MSGPACK_PP_FOR_245_I(s, p, o, m)
+# define MSGPACK_PP_FOR_246(s, p, o, m) MSGPACK_PP_FOR_246_I(s, p, o, m)
+# define MSGPACK_PP_FOR_247(s, p, o, m) MSGPACK_PP_FOR_247_I(s, p, o, m)
+# define MSGPACK_PP_FOR_248(s, p, o, m) MSGPACK_PP_FOR_248_I(s, p, o, m)
+# define MSGPACK_PP_FOR_249(s, p, o, m) MSGPACK_PP_FOR_249_I(s, p, o, m)
+# define MSGPACK_PP_FOR_250(s, p, o, m) MSGPACK_PP_FOR_250_I(s, p, o, m)
+# define MSGPACK_PP_FOR_251(s, p, o, m) MSGPACK_PP_FOR_251_I(s, p, o, m)
+# define MSGPACK_PP_FOR_252(s, p, o, m) MSGPACK_PP_FOR_252_I(s, p, o, m)
+# define MSGPACK_PP_FOR_253(s, p, o, m) MSGPACK_PP_FOR_253_I(s, p, o, m)
+# define MSGPACK_PP_FOR_254(s, p, o, m) MSGPACK_PP_FOR_254_I(s, p, o, m)
+# define MSGPACK_PP_FOR_255(s, p, o, m) MSGPACK_PP_FOR_255_I(s, p, o, m)
+# define MSGPACK_PP_FOR_256(s, p, o, m) MSGPACK_PP_FOR_256_I(s, p, o, m)
+#
+# define MSGPACK_PP_FOR_1_I(s, p, o, m) MSGPACK_PP_IF(p(2, s), m, MSGPACK_PP_TUPLE_EAT_2)(2, s) MSGPACK_PP_IF(p(2, s), MSGPACK_PP_FOR_2, MSGPACK_PP_TUPLE_EAT_4)(o(2, s), p, o, m)
+# define MSGPACK_PP_FOR_2_I(s, p, o, m) MSGPACK_PP_IF(p(3, s), m, MSGPACK_PP_TUPLE_EAT_2)(3, s) MSGPACK_PP_IF(p(3, s), MSGPACK_PP_FOR_3, MSGPACK_PP_TUPLE_EAT_4)(o(3, s), p, o, m)
+# define MSGPACK_PP_FOR_3_I(s, p, o, m) MSGPACK_PP_IF(p(4, s), m, MSGPACK_PP_TUPLE_EAT_2)(4, s) MSGPACK_PP_IF(p(4, s), MSGPACK_PP_FOR_4, MSGPACK_PP_TUPLE_EAT_4)(o(4, s), p, o, m)
+# define MSGPACK_PP_FOR_4_I(s, p, o, m) MSGPACK_PP_IF(p(5, s), m, MSGPACK_PP_TUPLE_EAT_2)(5, s) MSGPACK_PP_IF(p(5, s), MSGPACK_PP_FOR_5, MSGPACK_PP_TUPLE_EAT_4)(o(5, s), p, o, m)
+# define MSGPACK_PP_FOR_5_I(s, p, o, m) MSGPACK_PP_IF(p(6, s), m, MSGPACK_PP_TUPLE_EAT_2)(6, s) MSGPACK_PP_IF(p(6, s), MSGPACK_PP_FOR_6, MSGPACK_PP_TUPLE_EAT_4)(o(6, s), p, o, m)
+# define MSGPACK_PP_FOR_6_I(s, p, o, m) MSGPACK_PP_IF(p(7, s), m, MSGPACK_PP_TUPLE_EAT_2)(7, s) MSGPACK_PP_IF(p(7, s), MSGPACK_PP_FOR_7, MSGPACK_PP_TUPLE_EAT_4)(o(7, s), p, o, m)
+# define MSGPACK_PP_FOR_7_I(s, p, o, m) MSGPACK_PP_IF(p(8, s), m, MSGPACK_PP_TUPLE_EAT_2)(8, s) MSGPACK_PP_IF(p(8, s), MSGPACK_PP_FOR_8, MSGPACK_PP_TUPLE_EAT_4)(o(8, s), p, o, m)
+# define MSGPACK_PP_FOR_8_I(s, p, o, m) MSGPACK_PP_IF(p(9, s), m, MSGPACK_PP_TUPLE_EAT_2)(9, s) MSGPACK_PP_IF(p(9, s), MSGPACK_PP_FOR_9, MSGPACK_PP_TUPLE_EAT_4)(o(9, s), p, o, m)
+# define MSGPACK_PP_FOR_9_I(s, p, o, m) MSGPACK_PP_IF(p(10, s), m, MSGPACK_PP_TUPLE_EAT_2)(10, s) MSGPACK_PP_IF(p(10, s), MSGPACK_PP_FOR_10, MSGPACK_PP_TUPLE_EAT_4)(o(10, s), p, o, m)
+# define MSGPACK_PP_FOR_10_I(s, p, o, m) MSGPACK_PP_IF(p(11, s), m, MSGPACK_PP_TUPLE_EAT_2)(11, s) MSGPACK_PP_IF(p(11, s), MSGPACK_PP_FOR_11, MSGPACK_PP_TUPLE_EAT_4)(o(11, s), p, o, m)
+# define MSGPACK_PP_FOR_11_I(s, p, o, m) MSGPACK_PP_IF(p(12, s), m, MSGPACK_PP_TUPLE_EAT_2)(12, s) MSGPACK_PP_IF(p(12, s), MSGPACK_PP_FOR_12, MSGPACK_PP_TUPLE_EAT_4)(o(12, s), p, o, m)
+# define MSGPACK_PP_FOR_12_I(s, p, o, m) MSGPACK_PP_IF(p(13, s), m, MSGPACK_PP_TUPLE_EAT_2)(13, s) MSGPACK_PP_IF(p(13, s), MSGPACK_PP_FOR_13, MSGPACK_PP_TUPLE_EAT_4)(o(13, s), p, o, m)
+# define MSGPACK_PP_FOR_13_I(s, p, o, m) MSGPACK_PP_IF(p(14, s), m, MSGPACK_PP_TUPLE_EAT_2)(14, s) MSGPACK_PP_IF(p(14, s), MSGPACK_PP_FOR_14, MSGPACK_PP_TUPLE_EAT_4)(o(14, s), p, o, m)
+# define MSGPACK_PP_FOR_14_I(s, p, o, m) MSGPACK_PP_IF(p(15, s), m, MSGPACK_PP_TUPLE_EAT_2)(15, s) MSGPACK_PP_IF(p(15, s), MSGPACK_PP_FOR_15, MSGPACK_PP_TUPLE_EAT_4)(o(15, s), p, o, m)
+# define MSGPACK_PP_FOR_15_I(s, p, o, m) MSGPACK_PP_IF(p(16, s), m, MSGPACK_PP_TUPLE_EAT_2)(16, s) MSGPACK_PP_IF(p(16, s), MSGPACK_PP_FOR_16, MSGPACK_PP_TUPLE_EAT_4)(o(16, s), p, o, m)
+# define MSGPACK_PP_FOR_16_I(s, p, o, m) MSGPACK_PP_IF(p(17, s), m, MSGPACK_PP_TUPLE_EAT_2)(17, s) MSGPACK_PP_IF(p(17, s), MSGPACK_PP_FOR_17, MSGPACK_PP_TUPLE_EAT_4)(o(17, s), p, o, m)
+# define MSGPACK_PP_FOR_17_I(s, p, o, m) MSGPACK_PP_IF(p(18, s), m, MSGPACK_PP_TUPLE_EAT_2)(18, s) MSGPACK_PP_IF(p(18, s), MSGPACK_PP_FOR_18, MSGPACK_PP_TUPLE_EAT_4)(o(18, s), p, o, m)
+# define MSGPACK_PP_FOR_18_I(s, p, o, m) MSGPACK_PP_IF(p(19, s), m, MSGPACK_PP_TUPLE_EAT_2)(19, s) MSGPACK_PP_IF(p(19, s), MSGPACK_PP_FOR_19, MSGPACK_PP_TUPLE_EAT_4)(o(19, s), p, o, m)
+# define MSGPACK_PP_FOR_19_I(s, p, o, m) MSGPACK_PP_IF(p(20, s), m, MSGPACK_PP_TUPLE_EAT_2)(20, s) MSGPACK_PP_IF(p(20, s), MSGPACK_PP_FOR_20, MSGPACK_PP_TUPLE_EAT_4)(o(20, s), p, o, m)
+# define MSGPACK_PP_FOR_20_I(s, p, o, m) MSGPACK_PP_IF(p(21, s), m, MSGPACK_PP_TUPLE_EAT_2)(21, s) MSGPACK_PP_IF(p(21, s), MSGPACK_PP_FOR_21, MSGPACK_PP_TUPLE_EAT_4)(o(21, s), p, o, m)
+# define MSGPACK_PP_FOR_21_I(s, p, o, m) MSGPACK_PP_IF(p(22, s), m, MSGPACK_PP_TUPLE_EAT_2)(22, s) MSGPACK_PP_IF(p(22, s), MSGPACK_PP_FOR_22, MSGPACK_PP_TUPLE_EAT_4)(o(22, s), p, o, m)
+# define MSGPACK_PP_FOR_22_I(s, p, o, m) MSGPACK_PP_IF(p(23, s), m, MSGPACK_PP_TUPLE_EAT_2)(23, s) MSGPACK_PP_IF(p(23, s), MSGPACK_PP_FOR_23, MSGPACK_PP_TUPLE_EAT_4)(o(23, s), p, o, m)
+# define MSGPACK_PP_FOR_23_I(s, p, o, m) MSGPACK_PP_IF(p(24, s), m, MSGPACK_PP_TUPLE_EAT_2)(24, s) MSGPACK_PP_IF(p(24, s), MSGPACK_PP_FOR_24, MSGPACK_PP_TUPLE_EAT_4)(o(24, s), p, o, m)
+# define MSGPACK_PP_FOR_24_I(s, p, o, m) MSGPACK_PP_IF(p(25, s), m, MSGPACK_PP_TUPLE_EAT_2)(25, s) MSGPACK_PP_IF(p(25, s), MSGPACK_PP_FOR_25, MSGPACK_PP_TUPLE_EAT_4)(o(25, s), p, o, m)
+# define MSGPACK_PP_FOR_25_I(s, p, o, m) MSGPACK_PP_IF(p(26, s), m, MSGPACK_PP_TUPLE_EAT_2)(26, s) MSGPACK_PP_IF(p(26, s), MSGPACK_PP_FOR_26, MSGPACK_PP_TUPLE_EAT_4)(o(26, s), p, o, m)
+# define MSGPACK_PP_FOR_26_I(s, p, o, m) MSGPACK_PP_IF(p(27, s), m, MSGPACK_PP_TUPLE_EAT_2)(27, s) MSGPACK_PP_IF(p(27, s), MSGPACK_PP_FOR_27, MSGPACK_PP_TUPLE_EAT_4)(o(27, s), p, o, m)
+# define MSGPACK_PP_FOR_27_I(s, p, o, m) MSGPACK_PP_IF(p(28, s), m, MSGPACK_PP_TUPLE_EAT_2)(28, s) MSGPACK_PP_IF(p(28, s), MSGPACK_PP_FOR_28, MSGPACK_PP_TUPLE_EAT_4)(o(28, s), p, o, m)
+# define MSGPACK_PP_FOR_28_I(s, p, o, m) MSGPACK_PP_IF(p(29, s), m, MSGPACK_PP_TUPLE_EAT_2)(29, s) MSGPACK_PP_IF(p(29, s), MSGPACK_PP_FOR_29, MSGPACK_PP_TUPLE_EAT_4)(o(29, s), p, o, m)
+# define MSGPACK_PP_FOR_29_I(s, p, o, m) MSGPACK_PP_IF(p(30, s), m, MSGPACK_PP_TUPLE_EAT_2)(30, s) MSGPACK_PP_IF(p(30, s), MSGPACK_PP_FOR_30, MSGPACK_PP_TUPLE_EAT_4)(o(30, s), p, o, m)
+# define MSGPACK_PP_FOR_30_I(s, p, o, m) MSGPACK_PP_IF(p(31, s), m, MSGPACK_PP_TUPLE_EAT_2)(31, s) MSGPACK_PP_IF(p(31, s), MSGPACK_PP_FOR_31, MSGPACK_PP_TUPLE_EAT_4)(o(31, s), p, o, m)
+# define MSGPACK_PP_FOR_31_I(s, p, o, m) MSGPACK_PP_IF(p(32, s), m, MSGPACK_PP_TUPLE_EAT_2)(32, s) MSGPACK_PP_IF(p(32, s), MSGPACK_PP_FOR_32, MSGPACK_PP_TUPLE_EAT_4)(o(32, s), p, o, m)
+# define MSGPACK_PP_FOR_32_I(s, p, o, m) MSGPACK_PP_IF(p(33, s), m, MSGPACK_PP_TUPLE_EAT_2)(33, s) MSGPACK_PP_IF(p(33, s), MSGPACK_PP_FOR_33, MSGPACK_PP_TUPLE_EAT_4)(o(33, s), p, o, m)
+# define MSGPACK_PP_FOR_33_I(s, p, o, m) MSGPACK_PP_IF(p(34, s), m, MSGPACK_PP_TUPLE_EAT_2)(34, s) MSGPACK_PP_IF(p(34, s), MSGPACK_PP_FOR_34, MSGPACK_PP_TUPLE_EAT_4)(o(34, s), p, o, m)
+# define MSGPACK_PP_FOR_34_I(s, p, o, m) MSGPACK_PP_IF(p(35, s), m, MSGPACK_PP_TUPLE_EAT_2)(35, s) MSGPACK_PP_IF(p(35, s), MSGPACK_PP_FOR_35, MSGPACK_PP_TUPLE_EAT_4)(o(35, s), p, o, m)
+# define MSGPACK_PP_FOR_35_I(s, p, o, m) MSGPACK_PP_IF(p(36, s), m, MSGPACK_PP_TUPLE_EAT_2)(36, s) MSGPACK_PP_IF(p(36, s), MSGPACK_PP_FOR_36, MSGPACK_PP_TUPLE_EAT_4)(o(36, s), p, o, m)
+# define MSGPACK_PP_FOR_36_I(s, p, o, m) MSGPACK_PP_IF(p(37, s), m, MSGPACK_PP_TUPLE_EAT_2)(37, s) MSGPACK_PP_IF(p(37, s), MSGPACK_PP_FOR_37, MSGPACK_PP_TUPLE_EAT_4)(o(37, s), p, o, m)
+# define MSGPACK_PP_FOR_37_I(s, p, o, m) MSGPACK_PP_IF(p(38, s), m, MSGPACK_PP_TUPLE_EAT_2)(38, s) MSGPACK_PP_IF(p(38, s), MSGPACK_PP_FOR_38, MSGPACK_PP_TUPLE_EAT_4)(o(38, s), p, o, m)
+# define MSGPACK_PP_FOR_38_I(s, p, o, m) MSGPACK_PP_IF(p(39, s), m, MSGPACK_PP_TUPLE_EAT_2)(39, s) MSGPACK_PP_IF(p(39, s), MSGPACK_PP_FOR_39, MSGPACK_PP_TUPLE_EAT_4)(o(39, s), p, o, m)
+# define MSGPACK_PP_FOR_39_I(s, p, o, m) MSGPACK_PP_IF(p(40, s), m, MSGPACK_PP_TUPLE_EAT_2)(40, s) MSGPACK_PP_IF(p(40, s), MSGPACK_PP_FOR_40, MSGPACK_PP_TUPLE_EAT_4)(o(40, s), p, o, m)
+# define MSGPACK_PP_FOR_40_I(s, p, o, m) MSGPACK_PP_IF(p(41, s), m, MSGPACK_PP_TUPLE_EAT_2)(41, s) MSGPACK_PP_IF(p(41, s), MSGPACK_PP_FOR_41, MSGPACK_PP_TUPLE_EAT_4)(o(41, s), p, o, m)
+# define MSGPACK_PP_FOR_41_I(s, p, o, m) MSGPACK_PP_IF(p(42, s), m, MSGPACK_PP_TUPLE_EAT_2)(42, s) MSGPACK_PP_IF(p(42, s), MSGPACK_PP_FOR_42, MSGPACK_PP_TUPLE_EAT_4)(o(42, s), p, o, m)
+# define MSGPACK_PP_FOR_42_I(s, p, o, m) MSGPACK_PP_IF(p(43, s), m, MSGPACK_PP_TUPLE_EAT_2)(43, s) MSGPACK_PP_IF(p(43, s), MSGPACK_PP_FOR_43, MSGPACK_PP_TUPLE_EAT_4)(o(43, s), p, o, m)
+# define MSGPACK_PP_FOR_43_I(s, p, o, m) MSGPACK_PP_IF(p(44, s), m, MSGPACK_PP_TUPLE_EAT_2)(44, s) MSGPACK_PP_IF(p(44, s), MSGPACK_PP_FOR_44, MSGPACK_PP_TUPLE_EAT_4)(o(44, s), p, o, m)
+# define MSGPACK_PP_FOR_44_I(s, p, o, m) MSGPACK_PP_IF(p(45, s), m, MSGPACK_PP_TUPLE_EAT_2)(45, s) MSGPACK_PP_IF(p(45, s), MSGPACK_PP_FOR_45, MSGPACK_PP_TUPLE_EAT_4)(o(45, s), p, o, m)
+# define MSGPACK_PP_FOR_45_I(s, p, o, m) MSGPACK_PP_IF(p(46, s), m, MSGPACK_PP_TUPLE_EAT_2)(46, s) MSGPACK_PP_IF(p(46, s), MSGPACK_PP_FOR_46, MSGPACK_PP_TUPLE_EAT_4)(o(46, s), p, o, m)
+# define MSGPACK_PP_FOR_46_I(s, p, o, m) MSGPACK_PP_IF(p(47, s), m, MSGPACK_PP_TUPLE_EAT_2)(47, s) MSGPACK_PP_IF(p(47, s), MSGPACK_PP_FOR_47, MSGPACK_PP_TUPLE_EAT_4)(o(47, s), p, o, m)
+# define MSGPACK_PP_FOR_47_I(s, p, o, m) MSGPACK_PP_IF(p(48, s), m, MSGPACK_PP_TUPLE_EAT_2)(48, s) MSGPACK_PP_IF(p(48, s), MSGPACK_PP_FOR_48, MSGPACK_PP_TUPLE_EAT_4)(o(48, s), p, o, m)
+# define MSGPACK_PP_FOR_48_I(s, p, o, m) MSGPACK_PP_IF(p(49, s), m, MSGPACK_PP_TUPLE_EAT_2)(49, s) MSGPACK_PP_IF(p(49, s), MSGPACK_PP_FOR_49, MSGPACK_PP_TUPLE_EAT_4)(o(49, s), p, o, m)
+# define MSGPACK_PP_FOR_49_I(s, p, o, m) MSGPACK_PP_IF(p(50, s), m, MSGPACK_PP_TUPLE_EAT_2)(50, s) MSGPACK_PP_IF(p(50, s), MSGPACK_PP_FOR_50, MSGPACK_PP_TUPLE_EAT_4)(o(50, s), p, o, m)
+# define MSGPACK_PP_FOR_50_I(s, p, o, m) MSGPACK_PP_IF(p(51, s), m, MSGPACK_PP_TUPLE_EAT_2)(51, s) MSGPACK_PP_IF(p(51, s), MSGPACK_PP_FOR_51, MSGPACK_PP_TUPLE_EAT_4)(o(51, s), p, o, m)
+# define MSGPACK_PP_FOR_51_I(s, p, o, m) MSGPACK_PP_IF(p(52, s), m, MSGPACK_PP_TUPLE_EAT_2)(52, s) MSGPACK_PP_IF(p(52, s), MSGPACK_PP_FOR_52, MSGPACK_PP_TUPLE_EAT_4)(o(52, s), p, o, m)
+# define MSGPACK_PP_FOR_52_I(s, p, o, m) MSGPACK_PP_IF(p(53, s), m, MSGPACK_PP_TUPLE_EAT_2)(53, s) MSGPACK_PP_IF(p(53, s), MSGPACK_PP_FOR_53, MSGPACK_PP_TUPLE_EAT_4)(o(53, s), p, o, m)
+# define MSGPACK_PP_FOR_53_I(s, p, o, m) MSGPACK_PP_IF(p(54, s), m, MSGPACK_PP_TUPLE_EAT_2)(54, s) MSGPACK_PP_IF(p(54, s), MSGPACK_PP_FOR_54, MSGPACK_PP_TUPLE_EAT_4)(o(54, s), p, o, m)
+# define MSGPACK_PP_FOR_54_I(s, p, o, m) MSGPACK_PP_IF(p(55, s), m, MSGPACK_PP_TUPLE_EAT_2)(55, s) MSGPACK_PP_IF(p(55, s), MSGPACK_PP_FOR_55, MSGPACK_PP_TUPLE_EAT_4)(o(55, s), p, o, m)
+# define MSGPACK_PP_FOR_55_I(s, p, o, m) MSGPACK_PP_IF(p(56, s), m, MSGPACK_PP_TUPLE_EAT_2)(56, s) MSGPACK_PP_IF(p(56, s), MSGPACK_PP_FOR_56, MSGPACK_PP_TUPLE_EAT_4)(o(56, s), p, o, m)
+# define MSGPACK_PP_FOR_56_I(s, p, o, m) MSGPACK_PP_IF(p(57, s), m, MSGPACK_PP_TUPLE_EAT_2)(57, s) MSGPACK_PP_IF(p(57, s), MSGPACK_PP_FOR_57, MSGPACK_PP_TUPLE_EAT_4)(o(57, s), p, o, m)
+# define MSGPACK_PP_FOR_57_I(s, p, o, m) MSGPACK_PP_IF(p(58, s), m, MSGPACK_PP_TUPLE_EAT_2)(58, s) MSGPACK_PP_IF(p(58, s), MSGPACK_PP_FOR_58, MSGPACK_PP_TUPLE_EAT_4)(o(58, s), p, o, m)
+# define MSGPACK_PP_FOR_58_I(s, p, o, m) MSGPACK_PP_IF(p(59, s), m, MSGPACK_PP_TUPLE_EAT_2)(59, s) MSGPACK_PP_IF(p(59, s), MSGPACK_PP_FOR_59, MSGPACK_PP_TUPLE_EAT_4)(o(59, s), p, o, m)
+# define MSGPACK_PP_FOR_59_I(s, p, o, m) MSGPACK_PP_IF(p(60, s), m, MSGPACK_PP_TUPLE_EAT_2)(60, s) MSGPACK_PP_IF(p(60, s), MSGPACK_PP_FOR_60, MSGPACK_PP_TUPLE_EAT_4)(o(60, s), p, o, m)
+# define MSGPACK_PP_FOR_60_I(s, p, o, m) MSGPACK_PP_IF(p(61, s), m, MSGPACK_PP_TUPLE_EAT_2)(61, s) MSGPACK_PP_IF(p(61, s), MSGPACK_PP_FOR_61, MSGPACK_PP_TUPLE_EAT_4)(o(61, s), p, o, m)
+# define MSGPACK_PP_FOR_61_I(s, p, o, m) MSGPACK_PP_IF(p(62, s), m, MSGPACK_PP_TUPLE_EAT_2)(62, s) MSGPACK_PP_IF(p(62, s), MSGPACK_PP_FOR_62, MSGPACK_PP_TUPLE_EAT_4)(o(62, s), p, o, m)
+# define MSGPACK_PP_FOR_62_I(s, p, o, m) MSGPACK_PP_IF(p(63, s), m, MSGPACK_PP_TUPLE_EAT_2)(63, s) MSGPACK_PP_IF(p(63, s), MSGPACK_PP_FOR_63, MSGPACK_PP_TUPLE_EAT_4)(o(63, s), p, o, m)
+# define MSGPACK_PP_FOR_63_I(s, p, o, m) MSGPACK_PP_IF(p(64, s), m, MSGPACK_PP_TUPLE_EAT_2)(64, s) MSGPACK_PP_IF(p(64, s), MSGPACK_PP_FOR_64, MSGPACK_PP_TUPLE_EAT_4)(o(64, s), p, o, m)
+# define MSGPACK_PP_FOR_64_I(s, p, o, m) MSGPACK_PP_IF(p(65, s), m, MSGPACK_PP_TUPLE_EAT_2)(65, s) MSGPACK_PP_IF(p(65, s), MSGPACK_PP_FOR_65, MSGPACK_PP_TUPLE_EAT_4)(o(65, s), p, o, m)
+# define MSGPACK_PP_FOR_65_I(s, p, o, m) MSGPACK_PP_IF(p(66, s), m, MSGPACK_PP_TUPLE_EAT_2)(66, s) MSGPACK_PP_IF(p(66, s), MSGPACK_PP_FOR_66, MSGPACK_PP_TUPLE_EAT_4)(o(66, s), p, o, m)
+# define MSGPACK_PP_FOR_66_I(s, p, o, m) MSGPACK_PP_IF(p(67, s), m, MSGPACK_PP_TUPLE_EAT_2)(67, s) MSGPACK_PP_IF(p(67, s), MSGPACK_PP_FOR_67, MSGPACK_PP_TUPLE_EAT_4)(o(67, s), p, o, m)
+# define MSGPACK_PP_FOR_67_I(s, p, o, m) MSGPACK_PP_IF(p(68, s), m, MSGPACK_PP_TUPLE_EAT_2)(68, s) MSGPACK_PP_IF(p(68, s), MSGPACK_PP_FOR_68, MSGPACK_PP_TUPLE_EAT_4)(o(68, s), p, o, m)
+# define MSGPACK_PP_FOR_68_I(s, p, o, m) MSGPACK_PP_IF(p(69, s), m, MSGPACK_PP_TUPLE_EAT_2)(69, s) MSGPACK_PP_IF(p(69, s), MSGPACK_PP_FOR_69, MSGPACK_PP_TUPLE_EAT_4)(o(69, s), p, o, m)
+# define MSGPACK_PP_FOR_69_I(s, p, o, m) MSGPACK_PP_IF(p(70, s), m, MSGPACK_PP_TUPLE_EAT_2)(70, s) MSGPACK_PP_IF(p(70, s), MSGPACK_PP_FOR_70, MSGPACK_PP_TUPLE_EAT_4)(o(70, s), p, o, m)
+# define MSGPACK_PP_FOR_70_I(s, p, o, m) MSGPACK_PP_IF(p(71, s), m, MSGPACK_PP_TUPLE_EAT_2)(71, s) MSGPACK_PP_IF(p(71, s), MSGPACK_PP_FOR_71, MSGPACK_PP_TUPLE_EAT_4)(o(71, s), p, o, m)
+# define MSGPACK_PP_FOR_71_I(s, p, o, m) MSGPACK_PP_IF(p(72, s), m, MSGPACK_PP_TUPLE_EAT_2)(72, s) MSGPACK_PP_IF(p(72, s), MSGPACK_PP_FOR_72, MSGPACK_PP_TUPLE_EAT_4)(o(72, s), p, o, m)
+# define MSGPACK_PP_FOR_72_I(s, p, o, m) MSGPACK_PP_IF(p(73, s), m, MSGPACK_PP_TUPLE_EAT_2)(73, s) MSGPACK_PP_IF(p(73, s), MSGPACK_PP_FOR_73, MSGPACK_PP_TUPLE_EAT_4)(o(73, s), p, o, m)
+# define MSGPACK_PP_FOR_73_I(s, p, o, m) MSGPACK_PP_IF(p(74, s), m, MSGPACK_PP_TUPLE_EAT_2)(74, s) MSGPACK_PP_IF(p(74, s), MSGPACK_PP_FOR_74, MSGPACK_PP_TUPLE_EAT_4)(o(74, s), p, o, m)
+# define MSGPACK_PP_FOR_74_I(s, p, o, m) MSGPACK_PP_IF(p(75, s), m, MSGPACK_PP_TUPLE_EAT_2)(75, s) MSGPACK_PP_IF(p(75, s), MSGPACK_PP_FOR_75, MSGPACK_PP_TUPLE_EAT_4)(o(75, s), p, o, m)
+# define MSGPACK_PP_FOR_75_I(s, p, o, m) MSGPACK_PP_IF(p(76, s), m, MSGPACK_PP_TUPLE_EAT_2)(76, s) MSGPACK_PP_IF(p(76, s), MSGPACK_PP_FOR_76, MSGPACK_PP_TUPLE_EAT_4)(o(76, s), p, o, m)
+# define MSGPACK_PP_FOR_76_I(s, p, o, m) MSGPACK_PP_IF(p(77, s), m, MSGPACK_PP_TUPLE_EAT_2)(77, s) MSGPACK_PP_IF(p(77, s), MSGPACK_PP_FOR_77, MSGPACK_PP_TUPLE_EAT_4)(o(77, s), p, o, m)
+# define MSGPACK_PP_FOR_77_I(s, p, o, m) MSGPACK_PP_IF(p(78, s), m, MSGPACK_PP_TUPLE_EAT_2)(78, s) MSGPACK_PP_IF(p(78, s), MSGPACK_PP_FOR_78, MSGPACK_PP_TUPLE_EAT_4)(o(78, s), p, o, m)
+# define MSGPACK_PP_FOR_78_I(s, p, o, m) MSGPACK_PP_IF(p(79, s), m, MSGPACK_PP_TUPLE_EAT_2)(79, s) MSGPACK_PP_IF(p(79, s), MSGPACK_PP_FOR_79, MSGPACK_PP_TUPLE_EAT_4)(o(79, s), p, o, m)
+# define MSGPACK_PP_FOR_79_I(s, p, o, m) MSGPACK_PP_IF(p(80, s), m, MSGPACK_PP_TUPLE_EAT_2)(80, s) MSGPACK_PP_IF(p(80, s), MSGPACK_PP_FOR_80, MSGPACK_PP_TUPLE_EAT_4)(o(80, s), p, o, m)
+# define MSGPACK_PP_FOR_80_I(s, p, o, m) MSGPACK_PP_IF(p(81, s), m, MSGPACK_PP_TUPLE_EAT_2)(81, s) MSGPACK_PP_IF(p(81, s), MSGPACK_PP_FOR_81, MSGPACK_PP_TUPLE_EAT_4)(o(81, s), p, o, m)
+# define MSGPACK_PP_FOR_81_I(s, p, o, m) MSGPACK_PP_IF(p(82, s), m, MSGPACK_PP_TUPLE_EAT_2)(82, s) MSGPACK_PP_IF(p(82, s), MSGPACK_PP_FOR_82, MSGPACK_PP_TUPLE_EAT_4)(o(82, s), p, o, m)
+# define MSGPACK_PP_FOR_82_I(s, p, o, m) MSGPACK_PP_IF(p(83, s), m, MSGPACK_PP_TUPLE_EAT_2)(83, s) MSGPACK_PP_IF(p(83, s), MSGPACK_PP_FOR_83, MSGPACK_PP_TUPLE_EAT_4)(o(83, s), p, o, m)
+# define MSGPACK_PP_FOR_83_I(s, p, o, m) MSGPACK_PP_IF(p(84, s), m, MSGPACK_PP_TUPLE_EAT_2)(84, s) MSGPACK_PP_IF(p(84, s), MSGPACK_PP_FOR_84, MSGPACK_PP_TUPLE_EAT_4)(o(84, s), p, o, m)
+# define MSGPACK_PP_FOR_84_I(s, p, o, m) MSGPACK_PP_IF(p(85, s), m, MSGPACK_PP_TUPLE_EAT_2)(85, s) MSGPACK_PP_IF(p(85, s), MSGPACK_PP_FOR_85, MSGPACK_PP_TUPLE_EAT_4)(o(85, s), p, o, m)
+# define MSGPACK_PP_FOR_85_I(s, p, o, m) MSGPACK_PP_IF(p(86, s), m, MSGPACK_PP_TUPLE_EAT_2)(86, s) MSGPACK_PP_IF(p(86, s), MSGPACK_PP_FOR_86, MSGPACK_PP_TUPLE_EAT_4)(o(86, s), p, o, m)
+# define MSGPACK_PP_FOR_86_I(s, p, o, m) MSGPACK_PP_IF(p(87, s), m, MSGPACK_PP_TUPLE_EAT_2)(87, s) MSGPACK_PP_IF(p(87, s), MSGPACK_PP_FOR_87, MSGPACK_PP_TUPLE_EAT_4)(o(87, s), p, o, m)
+# define MSGPACK_PP_FOR_87_I(s, p, o, m) MSGPACK_PP_IF(p(88, s), m, MSGPACK_PP_TUPLE_EAT_2)(88, s) MSGPACK_PP_IF(p(88, s), MSGPACK_PP_FOR_88, MSGPACK_PP_TUPLE_EAT_4)(o(88, s), p, o, m)
+# define MSGPACK_PP_FOR_88_I(s, p, o, m) MSGPACK_PP_IF(p(89, s), m, MSGPACK_PP_TUPLE_EAT_2)(89, s) MSGPACK_PP_IF(p(89, s), MSGPACK_PP_FOR_89, MSGPACK_PP_TUPLE_EAT_4)(o(89, s), p, o, m)
+# define MSGPACK_PP_FOR_89_I(s, p, o, m) MSGPACK_PP_IF(p(90, s), m, MSGPACK_PP_TUPLE_EAT_2)(90, s) MSGPACK_PP_IF(p(90, s), MSGPACK_PP_FOR_90, MSGPACK_PP_TUPLE_EAT_4)(o(90, s), p, o, m)
+# define MSGPACK_PP_FOR_90_I(s, p, o, m) MSGPACK_PP_IF(p(91, s), m, MSGPACK_PP_TUPLE_EAT_2)(91, s) MSGPACK_PP_IF(p(91, s), MSGPACK_PP_FOR_91, MSGPACK_PP_TUPLE_EAT_4)(o(91, s), p, o, m)
+# define MSGPACK_PP_FOR_91_I(s, p, o, m) MSGPACK_PP_IF(p(92, s), m, MSGPACK_PP_TUPLE_EAT_2)(92, s) MSGPACK_PP_IF(p(92, s), MSGPACK_PP_FOR_92, MSGPACK_PP_TUPLE_EAT_4)(o(92, s), p, o, m)
+# define MSGPACK_PP_FOR_92_I(s, p, o, m) MSGPACK_PP_IF(p(93, s), m, MSGPACK_PP_TUPLE_EAT_2)(93, s) MSGPACK_PP_IF(p(93, s), MSGPACK_PP_FOR_93, MSGPACK_PP_TUPLE_EAT_4)(o(93, s), p, o, m)
+# define MSGPACK_PP_FOR_93_I(s, p, o, m) MSGPACK_PP_IF(p(94, s), m, MSGPACK_PP_TUPLE_EAT_2)(94, s) MSGPACK_PP_IF(p(94, s), MSGPACK_PP_FOR_94, MSGPACK_PP_TUPLE_EAT_4)(o(94, s), p, o, m)
+# define MSGPACK_PP_FOR_94_I(s, p, o, m) MSGPACK_PP_IF(p(95, s), m, MSGPACK_PP_TUPLE_EAT_2)(95, s) MSGPACK_PP_IF(p(95, s), MSGPACK_PP_FOR_95, MSGPACK_PP_TUPLE_EAT_4)(o(95, s), p, o, m)
+# define MSGPACK_PP_FOR_95_I(s, p, o, m) MSGPACK_PP_IF(p(96, s), m, MSGPACK_PP_TUPLE_EAT_2)(96, s) MSGPACK_PP_IF(p(96, s), MSGPACK_PP_FOR_96, MSGPACK_PP_TUPLE_EAT_4)(o(96, s), p, o, m)
+# define MSGPACK_PP_FOR_96_I(s, p, o, m) MSGPACK_PP_IF(p(97, s), m, MSGPACK_PP_TUPLE_EAT_2)(97, s) MSGPACK_PP_IF(p(97, s), MSGPACK_PP_FOR_97, MSGPACK_PP_TUPLE_EAT_4)(o(97, s), p, o, m)
+# define MSGPACK_PP_FOR_97_I(s, p, o, m) MSGPACK_PP_IF(p(98, s), m, MSGPACK_PP_TUPLE_EAT_2)(98, s) MSGPACK_PP_IF(p(98, s), MSGPACK_PP_FOR_98, MSGPACK_PP_TUPLE_EAT_4)(o(98, s), p, o, m)
+# define MSGPACK_PP_FOR_98_I(s, p, o, m) MSGPACK_PP_IF(p(99, s), m, MSGPACK_PP_TUPLE_EAT_2)(99, s) MSGPACK_PP_IF(p(99, s), MSGPACK_PP_FOR_99, MSGPACK_PP_TUPLE_EAT_4)(o(99, s), p, o, m)
+# define MSGPACK_PP_FOR_99_I(s, p, o, m) MSGPACK_PP_IF(p(100, s), m, MSGPACK_PP_TUPLE_EAT_2)(100, s) MSGPACK_PP_IF(p(100, s), MSGPACK_PP_FOR_100, MSGPACK_PP_TUPLE_EAT_4)(o(100, s), p, o, m)
+# define MSGPACK_PP_FOR_100_I(s, p, o, m) MSGPACK_PP_IF(p(101, s), m, MSGPACK_PP_TUPLE_EAT_2)(101, s) MSGPACK_PP_IF(p(101, s), MSGPACK_PP_FOR_101, MSGPACK_PP_TUPLE_EAT_4)(o(101, s), p, o, m)
+# define MSGPACK_PP_FOR_101_I(s, p, o, m) MSGPACK_PP_IF(p(102, s), m, MSGPACK_PP_TUPLE_EAT_2)(102, s) MSGPACK_PP_IF(p(102, s), MSGPACK_PP_FOR_102, MSGPACK_PP_TUPLE_EAT_4)(o(102, s), p, o, m)
+# define MSGPACK_PP_FOR_102_I(s, p, o, m) MSGPACK_PP_IF(p(103, s), m, MSGPACK_PP_TUPLE_EAT_2)(103, s) MSGPACK_PP_IF(p(103, s), MSGPACK_PP_FOR_103, MSGPACK_PP_TUPLE_EAT_4)(o(103, s), p, o, m)
+# define MSGPACK_PP_FOR_103_I(s, p, o, m) MSGPACK_PP_IF(p(104, s), m, MSGPACK_PP_TUPLE_EAT_2)(104, s) MSGPACK_PP_IF(p(104, s), MSGPACK_PP_FOR_104, MSGPACK_PP_TUPLE_EAT_4)(o(104, s), p, o, m)
+# define MSGPACK_PP_FOR_104_I(s, p, o, m) MSGPACK_PP_IF(p(105, s), m, MSGPACK_PP_TUPLE_EAT_2)(105, s) MSGPACK_PP_IF(p(105, s), MSGPACK_PP_FOR_105, MSGPACK_PP_TUPLE_EAT_4)(o(105, s), p, o, m)
+# define MSGPACK_PP_FOR_105_I(s, p, o, m) MSGPACK_PP_IF(p(106, s), m, MSGPACK_PP_TUPLE_EAT_2)(106, s) MSGPACK_PP_IF(p(106, s), MSGPACK_PP_FOR_106, MSGPACK_PP_TUPLE_EAT_4)(o(106, s), p, o, m)
+# define MSGPACK_PP_FOR_106_I(s, p, o, m) MSGPACK_PP_IF(p(107, s), m, MSGPACK_PP_TUPLE_EAT_2)(107, s) MSGPACK_PP_IF(p(107, s), MSGPACK_PP_FOR_107, MSGPACK_PP_TUPLE_EAT_4)(o(107, s), p, o, m)
+# define MSGPACK_PP_FOR_107_I(s, p, o, m) MSGPACK_PP_IF(p(108, s), m, MSGPACK_PP_TUPLE_EAT_2)(108, s) MSGPACK_PP_IF(p(108, s), MSGPACK_PP_FOR_108, MSGPACK_PP_TUPLE_EAT_4)(o(108, s), p, o, m)
+# define MSGPACK_PP_FOR_108_I(s, p, o, m) MSGPACK_PP_IF(p(109, s), m, MSGPACK_PP_TUPLE_EAT_2)(109, s) MSGPACK_PP_IF(p(109, s), MSGPACK_PP_FOR_109, MSGPACK_PP_TUPLE_EAT_4)(o(109, s), p, o, m)
+# define MSGPACK_PP_FOR_109_I(s, p, o, m) MSGPACK_PP_IF(p(110, s), m, MSGPACK_PP_TUPLE_EAT_2)(110, s) MSGPACK_PP_IF(p(110, s), MSGPACK_PP_FOR_110, MSGPACK_PP_TUPLE_EAT_4)(o(110, s), p, o, m)
+# define MSGPACK_PP_FOR_110_I(s, p, o, m) MSGPACK_PP_IF(p(111, s), m, MSGPACK_PP_TUPLE_EAT_2)(111, s) MSGPACK_PP_IF(p(111, s), MSGPACK_PP_FOR_111, MSGPACK_PP_TUPLE_EAT_4)(o(111, s), p, o, m)
+# define MSGPACK_PP_FOR_111_I(s, p, o, m) MSGPACK_PP_IF(p(112, s), m, MSGPACK_PP_TUPLE_EAT_2)(112, s) MSGPACK_PP_IF(p(112, s), MSGPACK_PP_FOR_112, MSGPACK_PP_TUPLE_EAT_4)(o(112, s), p, o, m)
+# define MSGPACK_PP_FOR_112_I(s, p, o, m) MSGPACK_PP_IF(p(113, s), m, MSGPACK_PP_TUPLE_EAT_2)(113, s) MSGPACK_PP_IF(p(113, s), MSGPACK_PP_FOR_113, MSGPACK_PP_TUPLE_EAT_4)(o(113, s), p, o, m)
+# define MSGPACK_PP_FOR_113_I(s, p, o, m) MSGPACK_PP_IF(p(114, s), m, MSGPACK_PP_TUPLE_EAT_2)(114, s) MSGPACK_PP_IF(p(114, s), MSGPACK_PP_FOR_114, MSGPACK_PP_TUPLE_EAT_4)(o(114, s), p, o, m)
+# define MSGPACK_PP_FOR_114_I(s, p, o, m) MSGPACK_PP_IF(p(115, s), m, MSGPACK_PP_TUPLE_EAT_2)(115, s) MSGPACK_PP_IF(p(115, s), MSGPACK_PP_FOR_115, MSGPACK_PP_TUPLE_EAT_4)(o(115, s), p, o, m)
+# define MSGPACK_PP_FOR_115_I(s, p, o, m) MSGPACK_PP_IF(p(116, s), m, MSGPACK_PP_TUPLE_EAT_2)(116, s) MSGPACK_PP_IF(p(116, s), MSGPACK_PP_FOR_116, MSGPACK_PP_TUPLE_EAT_4)(o(116, s), p, o, m)
+# define MSGPACK_PP_FOR_116_I(s, p, o, m) MSGPACK_PP_IF(p(117, s), m, MSGPACK_PP_TUPLE_EAT_2)(117, s) MSGPACK_PP_IF(p(117, s), MSGPACK_PP_FOR_117, MSGPACK_PP_TUPLE_EAT_4)(o(117, s), p, o, m)
+# define MSGPACK_PP_FOR_117_I(s, p, o, m) MSGPACK_PP_IF(p(118, s), m, MSGPACK_PP_TUPLE_EAT_2)(118, s) MSGPACK_PP_IF(p(118, s), MSGPACK_PP_FOR_118, MSGPACK_PP_TUPLE_EAT_4)(o(118, s), p, o, m)
+# define MSGPACK_PP_FOR_118_I(s, p, o, m) MSGPACK_PP_IF(p(119, s), m, MSGPACK_PP_TUPLE_EAT_2)(119, s) MSGPACK_PP_IF(p(119, s), MSGPACK_PP_FOR_119, MSGPACK_PP_TUPLE_EAT_4)(o(119, s), p, o, m)
+# define MSGPACK_PP_FOR_119_I(s, p, o, m) MSGPACK_PP_IF(p(120, s), m, MSGPACK_PP_TUPLE_EAT_2)(120, s) MSGPACK_PP_IF(p(120, s), MSGPACK_PP_FOR_120, MSGPACK_PP_TUPLE_EAT_4)(o(120, s), p, o, m)
+# define MSGPACK_PP_FOR_120_I(s, p, o, m) MSGPACK_PP_IF(p(121, s), m, MSGPACK_PP_TUPLE_EAT_2)(121, s) MSGPACK_PP_IF(p(121, s), MSGPACK_PP_FOR_121, MSGPACK_PP_TUPLE_EAT_4)(o(121, s), p, o, m)
+# define MSGPACK_PP_FOR_121_I(s, p, o, m) MSGPACK_PP_IF(p(122, s), m, MSGPACK_PP_TUPLE_EAT_2)(122, s) MSGPACK_PP_IF(p(122, s), MSGPACK_PP_FOR_122, MSGPACK_PP_TUPLE_EAT_4)(o(122, s), p, o, m)
+# define MSGPACK_PP_FOR_122_I(s, p, o, m) MSGPACK_PP_IF(p(123, s), m, MSGPACK_PP_TUPLE_EAT_2)(123, s) MSGPACK_PP_IF(p(123, s), MSGPACK_PP_FOR_123, MSGPACK_PP_TUPLE_EAT_4)(o(123, s), p, o, m)
+# define MSGPACK_PP_FOR_123_I(s, p, o, m) MSGPACK_PP_IF(p(124, s), m, MSGPACK_PP_TUPLE_EAT_2)(124, s) MSGPACK_PP_IF(p(124, s), MSGPACK_PP_FOR_124, MSGPACK_PP_TUPLE_EAT_4)(o(124, s), p, o, m)
+# define MSGPACK_PP_FOR_124_I(s, p, o, m) MSGPACK_PP_IF(p(125, s), m, MSGPACK_PP_TUPLE_EAT_2)(125, s) MSGPACK_PP_IF(p(125, s), MSGPACK_PP_FOR_125, MSGPACK_PP_TUPLE_EAT_4)(o(125, s), p, o, m)
+# define MSGPACK_PP_FOR_125_I(s, p, o, m) MSGPACK_PP_IF(p(126, s), m, MSGPACK_PP_TUPLE_EAT_2)(126, s) MSGPACK_PP_IF(p(126, s), MSGPACK_PP_FOR_126, MSGPACK_PP_TUPLE_EAT_4)(o(126, s), p, o, m)
+# define MSGPACK_PP_FOR_126_I(s, p, o, m) MSGPACK_PP_IF(p(127, s), m, MSGPACK_PP_TUPLE_EAT_2)(127, s) MSGPACK_PP_IF(p(127, s), MSGPACK_PP_FOR_127, MSGPACK_PP_TUPLE_EAT_4)(o(127, s), p, o, m)
+# define MSGPACK_PP_FOR_127_I(s, p, o, m) MSGPACK_PP_IF(p(128, s), m, MSGPACK_PP_TUPLE_EAT_2)(128, s) MSGPACK_PP_IF(p(128, s), MSGPACK_PP_FOR_128, MSGPACK_PP_TUPLE_EAT_4)(o(128, s), p, o, m)
+# define MSGPACK_PP_FOR_128_I(s, p, o, m) MSGPACK_PP_IF(p(129, s), m, MSGPACK_PP_TUPLE_EAT_2)(129, s) MSGPACK_PP_IF(p(129, s), MSGPACK_PP_FOR_129, MSGPACK_PP_TUPLE_EAT_4)(o(129, s), p, o, m)
+# define MSGPACK_PP_FOR_129_I(s, p, o, m) MSGPACK_PP_IF(p(130, s), m, MSGPACK_PP_TUPLE_EAT_2)(130, s) MSGPACK_PP_IF(p(130, s), MSGPACK_PP_FOR_130, MSGPACK_PP_TUPLE_EAT_4)(o(130, s), p, o, m)
+# define MSGPACK_PP_FOR_130_I(s, p, o, m) MSGPACK_PP_IF(p(131, s), m, MSGPACK_PP_TUPLE_EAT_2)(131, s) MSGPACK_PP_IF(p(131, s), MSGPACK_PP_FOR_131, MSGPACK_PP_TUPLE_EAT_4)(o(131, s), p, o, m)
+# define MSGPACK_PP_FOR_131_I(s, p, o, m) MSGPACK_PP_IF(p(132, s), m, MSGPACK_PP_TUPLE_EAT_2)(132, s) MSGPACK_PP_IF(p(132, s), MSGPACK_PP_FOR_132, MSGPACK_PP_TUPLE_EAT_4)(o(132, s), p, o, m)
+# define MSGPACK_PP_FOR_132_I(s, p, o, m) MSGPACK_PP_IF(p(133, s), m, MSGPACK_PP_TUPLE_EAT_2)(133, s) MSGPACK_PP_IF(p(133, s), MSGPACK_PP_FOR_133, MSGPACK_PP_TUPLE_EAT_4)(o(133, s), p, o, m)
+# define MSGPACK_PP_FOR_133_I(s, p, o, m) MSGPACK_PP_IF(p(134, s), m, MSGPACK_PP_TUPLE_EAT_2)(134, s) MSGPACK_PP_IF(p(134, s), MSGPACK_PP_FOR_134, MSGPACK_PP_TUPLE_EAT_4)(o(134, s), p, o, m)
+# define MSGPACK_PP_FOR_134_I(s, p, o, m) MSGPACK_PP_IF(p(135, s), m, MSGPACK_PP_TUPLE_EAT_2)(135, s) MSGPACK_PP_IF(p(135, s), MSGPACK_PP_FOR_135, MSGPACK_PP_TUPLE_EAT_4)(o(135, s), p, o, m)
+# define MSGPACK_PP_FOR_135_I(s, p, o, m) MSGPACK_PP_IF(p(136, s), m, MSGPACK_PP_TUPLE_EAT_2)(136, s) MSGPACK_PP_IF(p(136, s), MSGPACK_PP_FOR_136, MSGPACK_PP_TUPLE_EAT_4)(o(136, s), p, o, m)
+# define MSGPACK_PP_FOR_136_I(s, p, o, m) MSGPACK_PP_IF(p(137, s), m, MSGPACK_PP_TUPLE_EAT_2)(137, s) MSGPACK_PP_IF(p(137, s), MSGPACK_PP_FOR_137, MSGPACK_PP_TUPLE_EAT_4)(o(137, s), p, o, m)
+# define MSGPACK_PP_FOR_137_I(s, p, o, m) MSGPACK_PP_IF(p(138, s), m, MSGPACK_PP_TUPLE_EAT_2)(138, s) MSGPACK_PP_IF(p(138, s), MSGPACK_PP_FOR_138, MSGPACK_PP_TUPLE_EAT_4)(o(138, s), p, o, m)
+# define MSGPACK_PP_FOR_138_I(s, p, o, m) MSGPACK_PP_IF(p(139, s), m, MSGPACK_PP_TUPLE_EAT_2)(139, s) MSGPACK_PP_IF(p(139, s), MSGPACK_PP_FOR_139, MSGPACK_PP_TUPLE_EAT_4)(o(139, s), p, o, m)
+# define MSGPACK_PP_FOR_139_I(s, p, o, m) MSGPACK_PP_IF(p(140, s), m, MSGPACK_PP_TUPLE_EAT_2)(140, s) MSGPACK_PP_IF(p(140, s), MSGPACK_PP_FOR_140, MSGPACK_PP_TUPLE_EAT_4)(o(140, s), p, o, m)
+# define MSGPACK_PP_FOR_140_I(s, p, o, m) MSGPACK_PP_IF(p(141, s), m, MSGPACK_PP_TUPLE_EAT_2)(141, s) MSGPACK_PP_IF(p(141, s), MSGPACK_PP_FOR_141, MSGPACK_PP_TUPLE_EAT_4)(o(141, s), p, o, m)
+# define MSGPACK_PP_FOR_141_I(s, p, o, m) MSGPACK_PP_IF(p(142, s), m, MSGPACK_PP_TUPLE_EAT_2)(142, s) MSGPACK_PP_IF(p(142, s), MSGPACK_PP_FOR_142, MSGPACK_PP_TUPLE_EAT_4)(o(142, s), p, o, m)
+# define MSGPACK_PP_FOR_142_I(s, p, o, m) MSGPACK_PP_IF(p(143, s), m, MSGPACK_PP_TUPLE_EAT_2)(143, s) MSGPACK_PP_IF(p(143, s), MSGPACK_PP_FOR_143, MSGPACK_PP_TUPLE_EAT_4)(o(143, s), p, o, m)
+# define MSGPACK_PP_FOR_143_I(s, p, o, m) MSGPACK_PP_IF(p(144, s), m, MSGPACK_PP_TUPLE_EAT_2)(144, s) MSGPACK_PP_IF(p(144, s), MSGPACK_PP_FOR_144, MSGPACK_PP_TUPLE_EAT_4)(o(144, s), p, o, m)
+# define MSGPACK_PP_FOR_144_I(s, p, o, m) MSGPACK_PP_IF(p(145, s), m, MSGPACK_PP_TUPLE_EAT_2)(145, s) MSGPACK_PP_IF(p(145, s), MSGPACK_PP_FOR_145, MSGPACK_PP_TUPLE_EAT_4)(o(145, s), p, o, m)
+# define MSGPACK_PP_FOR_145_I(s, p, o, m) MSGPACK_PP_IF(p(146, s), m, MSGPACK_PP_TUPLE_EAT_2)(146, s) MSGPACK_PP_IF(p(146, s), MSGPACK_PP_FOR_146, MSGPACK_PP_TUPLE_EAT_4)(o(146, s), p, o, m)
+# define MSGPACK_PP_FOR_146_I(s, p, o, m) MSGPACK_PP_IF(p(147, s), m, MSGPACK_PP_TUPLE_EAT_2)(147, s) MSGPACK_PP_IF(p(147, s), MSGPACK_PP_FOR_147, MSGPACK_PP_TUPLE_EAT_4)(o(147, s), p, o, m)
+# define MSGPACK_PP_FOR_147_I(s, p, o, m) MSGPACK_PP_IF(p(148, s), m, MSGPACK_PP_TUPLE_EAT_2)(148, s) MSGPACK_PP_IF(p(148, s), MSGPACK_PP_FOR_148, MSGPACK_PP_TUPLE_EAT_4)(o(148, s), p, o, m)
+# define MSGPACK_PP_FOR_148_I(s, p, o, m) MSGPACK_PP_IF(p(149, s), m, MSGPACK_PP_TUPLE_EAT_2)(149, s) MSGPACK_PP_IF(p(149, s), MSGPACK_PP_FOR_149, MSGPACK_PP_TUPLE_EAT_4)(o(149, s), p, o, m)
+# define MSGPACK_PP_FOR_149_I(s, p, o, m) MSGPACK_PP_IF(p(150, s), m, MSGPACK_PP_TUPLE_EAT_2)(150, s) MSGPACK_PP_IF(p(150, s), MSGPACK_PP_FOR_150, MSGPACK_PP_TUPLE_EAT_4)(o(150, s), p, o, m)
+# define MSGPACK_PP_FOR_150_I(s, p, o, m) MSGPACK_PP_IF(p(151, s), m, MSGPACK_PP_TUPLE_EAT_2)(151, s) MSGPACK_PP_IF(p(151, s), MSGPACK_PP_FOR_151, MSGPACK_PP_TUPLE_EAT_4)(o(151, s), p, o, m)
+# define MSGPACK_PP_FOR_151_I(s, p, o, m) MSGPACK_PP_IF(p(152, s), m, MSGPACK_PP_TUPLE_EAT_2)(152, s) MSGPACK_PP_IF(p(152, s), MSGPACK_PP_FOR_152, MSGPACK_PP_TUPLE_EAT_4)(o(152, s), p, o, m)
+# define MSGPACK_PP_FOR_152_I(s, p, o, m) MSGPACK_PP_IF(p(153, s), m, MSGPACK_PP_TUPLE_EAT_2)(153, s) MSGPACK_PP_IF(p(153, s), MSGPACK_PP_FOR_153, MSGPACK_PP_TUPLE_EAT_4)(o(153, s), p, o, m)
+# define MSGPACK_PP_FOR_153_I(s, p, o, m) MSGPACK_PP_IF(p(154, s), m, MSGPACK_PP_TUPLE_EAT_2)(154, s) MSGPACK_PP_IF(p(154, s), MSGPACK_PP_FOR_154, MSGPACK_PP_TUPLE_EAT_4)(o(154, s), p, o, m)
+# define MSGPACK_PP_FOR_154_I(s, p, o, m) MSGPACK_PP_IF(p(155, s), m, MSGPACK_PP_TUPLE_EAT_2)(155, s) MSGPACK_PP_IF(p(155, s), MSGPACK_PP_FOR_155, MSGPACK_PP_TUPLE_EAT_4)(o(155, s), p, o, m)
+# define MSGPACK_PP_FOR_155_I(s, p, o, m) MSGPACK_PP_IF(p(156, s), m, MSGPACK_PP_TUPLE_EAT_2)(156, s) MSGPACK_PP_IF(p(156, s), MSGPACK_PP_FOR_156, MSGPACK_PP_TUPLE_EAT_4)(o(156, s), p, o, m)
+# define MSGPACK_PP_FOR_156_I(s, p, o, m) MSGPACK_PP_IF(p(157, s), m, MSGPACK_PP_TUPLE_EAT_2)(157, s) MSGPACK_PP_IF(p(157, s), MSGPACK_PP_FOR_157, MSGPACK_PP_TUPLE_EAT_4)(o(157, s), p, o, m)
+# define MSGPACK_PP_FOR_157_I(s, p, o, m) MSGPACK_PP_IF(p(158, s), m, MSGPACK_PP_TUPLE_EAT_2)(158, s) MSGPACK_PP_IF(p(158, s), MSGPACK_PP_FOR_158, MSGPACK_PP_TUPLE_EAT_4)(o(158, s), p, o, m)
+# define MSGPACK_PP_FOR_158_I(s, p, o, m) MSGPACK_PP_IF(p(159, s), m, MSGPACK_PP_TUPLE_EAT_2)(159, s) MSGPACK_PP_IF(p(159, s), MSGPACK_PP_FOR_159, MSGPACK_PP_TUPLE_EAT_4)(o(159, s), p, o, m)
+# define MSGPACK_PP_FOR_159_I(s, p, o, m) MSGPACK_PP_IF(p(160, s), m, MSGPACK_PP_TUPLE_EAT_2)(160, s) MSGPACK_PP_IF(p(160, s), MSGPACK_PP_FOR_160, MSGPACK_PP_TUPLE_EAT_4)(o(160, s), p, o, m)
+# define MSGPACK_PP_FOR_160_I(s, p, o, m) MSGPACK_PP_IF(p(161, s), m, MSGPACK_PP_TUPLE_EAT_2)(161, s) MSGPACK_PP_IF(p(161, s), MSGPACK_PP_FOR_161, MSGPACK_PP_TUPLE_EAT_4)(o(161, s), p, o, m)
+# define MSGPACK_PP_FOR_161_I(s, p, o, m) MSGPACK_PP_IF(p(162, s), m, MSGPACK_PP_TUPLE_EAT_2)(162, s) MSGPACK_PP_IF(p(162, s), MSGPACK_PP_FOR_162, MSGPACK_PP_TUPLE_EAT_4)(o(162, s), p, o, m)
+# define MSGPACK_PP_FOR_162_I(s, p, o, m) MSGPACK_PP_IF(p(163, s), m, MSGPACK_PP_TUPLE_EAT_2)(163, s) MSGPACK_PP_IF(p(163, s), MSGPACK_PP_FOR_163, MSGPACK_PP_TUPLE_EAT_4)(o(163, s), p, o, m)
+# define MSGPACK_PP_FOR_163_I(s, p, o, m) MSGPACK_PP_IF(p(164, s), m, MSGPACK_PP_TUPLE_EAT_2)(164, s) MSGPACK_PP_IF(p(164, s), MSGPACK_PP_FOR_164, MSGPACK_PP_TUPLE_EAT_4)(o(164, s), p, o, m)
+# define MSGPACK_PP_FOR_164_I(s, p, o, m) MSGPACK_PP_IF(p(165, s), m, MSGPACK_PP_TUPLE_EAT_2)(165, s) MSGPACK_PP_IF(p(165, s), MSGPACK_PP_FOR_165, MSGPACK_PP_TUPLE_EAT_4)(o(165, s), p, o, m)
+# define MSGPACK_PP_FOR_165_I(s, p, o, m) MSGPACK_PP_IF(p(166, s), m, MSGPACK_PP_TUPLE_EAT_2)(166, s) MSGPACK_PP_IF(p(166, s), MSGPACK_PP_FOR_166, MSGPACK_PP_TUPLE_EAT_4)(o(166, s), p, o, m)
+# define MSGPACK_PP_FOR_166_I(s, p, o, m) MSGPACK_PP_IF(p(167, s), m, MSGPACK_PP_TUPLE_EAT_2)(167, s) MSGPACK_PP_IF(p(167, s), MSGPACK_PP_FOR_167, MSGPACK_PP_TUPLE_EAT_4)(o(167, s), p, o, m)
+# define MSGPACK_PP_FOR_167_I(s, p, o, m) MSGPACK_PP_IF(p(168, s), m, MSGPACK_PP_TUPLE_EAT_2)(168, s) MSGPACK_PP_IF(p(168, s), MSGPACK_PP_FOR_168, MSGPACK_PP_TUPLE_EAT_4)(o(168, s), p, o, m)
+# define MSGPACK_PP_FOR_168_I(s, p, o, m) MSGPACK_PP_IF(p(169, s), m, MSGPACK_PP_TUPLE_EAT_2)(169, s) MSGPACK_PP_IF(p(169, s), MSGPACK_PP_FOR_169, MSGPACK_PP_TUPLE_EAT_4)(o(169, s), p, o, m)
+# define MSGPACK_PP_FOR_169_I(s, p, o, m) MSGPACK_PP_IF(p(170, s), m, MSGPACK_PP_TUPLE_EAT_2)(170, s) MSGPACK_PP_IF(p(170, s), MSGPACK_PP_FOR_170, MSGPACK_PP_TUPLE_EAT_4)(o(170, s), p, o, m)
+# define MSGPACK_PP_FOR_170_I(s, p, o, m) MSGPACK_PP_IF(p(171, s), m, MSGPACK_PP_TUPLE_EAT_2)(171, s) MSGPACK_PP_IF(p(171, s), MSGPACK_PP_FOR_171, MSGPACK_PP_TUPLE_EAT_4)(o(171, s), p, o, m)
+# define MSGPACK_PP_FOR_171_I(s, p, o, m) MSGPACK_PP_IF(p(172, s), m, MSGPACK_PP_TUPLE_EAT_2)(172, s) MSGPACK_PP_IF(p(172, s), MSGPACK_PP_FOR_172, MSGPACK_PP_TUPLE_EAT_4)(o(172, s), p, o, m)
+# define MSGPACK_PP_FOR_172_I(s, p, o, m) MSGPACK_PP_IF(p(173, s), m, MSGPACK_PP_TUPLE_EAT_2)(173, s) MSGPACK_PP_IF(p(173, s), MSGPACK_PP_FOR_173, MSGPACK_PP_TUPLE_EAT_4)(o(173, s), p, o, m)
+# define MSGPACK_PP_FOR_173_I(s, p, o, m) MSGPACK_PP_IF(p(174, s), m, MSGPACK_PP_TUPLE_EAT_2)(174, s) MSGPACK_PP_IF(p(174, s), MSGPACK_PP_FOR_174, MSGPACK_PP_TUPLE_EAT_4)(o(174, s), p, o, m)
+# define MSGPACK_PP_FOR_174_I(s, p, o, m) MSGPACK_PP_IF(p(175, s), m, MSGPACK_PP_TUPLE_EAT_2)(175, s) MSGPACK_PP_IF(p(175, s), MSGPACK_PP_FOR_175, MSGPACK_PP_TUPLE_EAT_4)(o(175, s), p, o, m)
+# define MSGPACK_PP_FOR_175_I(s, p, o, m) MSGPACK_PP_IF(p(176, s), m, MSGPACK_PP_TUPLE_EAT_2)(176, s) MSGPACK_PP_IF(p(176, s), MSGPACK_PP_FOR_176, MSGPACK_PP_TUPLE_EAT_4)(o(176, s), p, o, m)
+# define MSGPACK_PP_FOR_176_I(s, p, o, m) MSGPACK_PP_IF(p(177, s), m, MSGPACK_PP_TUPLE_EAT_2)(177, s) MSGPACK_PP_IF(p(177, s), MSGPACK_PP_FOR_177, MSGPACK_PP_TUPLE_EAT_4)(o(177, s), p, o, m)
+# define MSGPACK_PP_FOR_177_I(s, p, o, m) MSGPACK_PP_IF(p(178, s), m, MSGPACK_PP_TUPLE_EAT_2)(178, s) MSGPACK_PP_IF(p(178, s), MSGPACK_PP_FOR_178, MSGPACK_PP_TUPLE_EAT_4)(o(178, s), p, o, m)
+# define MSGPACK_PP_FOR_178_I(s, p, o, m) MSGPACK_PP_IF(p(179, s), m, MSGPACK_PP_TUPLE_EAT_2)(179, s) MSGPACK_PP_IF(p(179, s), MSGPACK_PP_FOR_179, MSGPACK_PP_TUPLE_EAT_4)(o(179, s), p, o, m)
+# define MSGPACK_PP_FOR_179_I(s, p, o, m) MSGPACK_PP_IF(p(180, s), m, MSGPACK_PP_TUPLE_EAT_2)(180, s) MSGPACK_PP_IF(p(180, s), MSGPACK_PP_FOR_180, MSGPACK_PP_TUPLE_EAT_4)(o(180, s), p, o, m)
+# define MSGPACK_PP_FOR_180_I(s, p, o, m) MSGPACK_PP_IF(p(181, s), m, MSGPACK_PP_TUPLE_EAT_2)(181, s) MSGPACK_PP_IF(p(181, s), MSGPACK_PP_FOR_181, MSGPACK_PP_TUPLE_EAT_4)(o(181, s), p, o, m)
+# define MSGPACK_PP_FOR_181_I(s, p, o, m) MSGPACK_PP_IF(p(182, s), m, MSGPACK_PP_TUPLE_EAT_2)(182, s) MSGPACK_PP_IF(p(182, s), MSGPACK_PP_FOR_182, MSGPACK_PP_TUPLE_EAT_4)(o(182, s), p, o, m)
+# define MSGPACK_PP_FOR_182_I(s, p, o, m) MSGPACK_PP_IF(p(183, s), m, MSGPACK_PP_TUPLE_EAT_2)(183, s) MSGPACK_PP_IF(p(183, s), MSGPACK_PP_FOR_183, MSGPACK_PP_TUPLE_EAT_4)(o(183, s), p, o, m)
+# define MSGPACK_PP_FOR_183_I(s, p, o, m) MSGPACK_PP_IF(p(184, s), m, MSGPACK_PP_TUPLE_EAT_2)(184, s) MSGPACK_PP_IF(p(184, s), MSGPACK_PP_FOR_184, MSGPACK_PP_TUPLE_EAT_4)(o(184, s), p, o, m)
+# define MSGPACK_PP_FOR_184_I(s, p, o, m) MSGPACK_PP_IF(p(185, s), m, MSGPACK_PP_TUPLE_EAT_2)(185, s) MSGPACK_PP_IF(p(185, s), MSGPACK_PP_FOR_185, MSGPACK_PP_TUPLE_EAT_4)(o(185, s), p, o, m)
+# define MSGPACK_PP_FOR_185_I(s, p, o, m) MSGPACK_PP_IF(p(186, s), m, MSGPACK_PP_TUPLE_EAT_2)(186, s) MSGPACK_PP_IF(p(186, s), MSGPACK_PP_FOR_186, MSGPACK_PP_TUPLE_EAT_4)(o(186, s), p, o, m)
+# define MSGPACK_PP_FOR_186_I(s, p, o, m) MSGPACK_PP_IF(p(187, s), m, MSGPACK_PP_TUPLE_EAT_2)(187, s) MSGPACK_PP_IF(p(187, s), MSGPACK_PP_FOR_187, MSGPACK_PP_TUPLE_EAT_4)(o(187, s), p, o, m)
+# define MSGPACK_PP_FOR_187_I(s, p, o, m) MSGPACK_PP_IF(p(188, s), m, MSGPACK_PP_TUPLE_EAT_2)(188, s) MSGPACK_PP_IF(p(188, s), MSGPACK_PP_FOR_188, MSGPACK_PP_TUPLE_EAT_4)(o(188, s), p, o, m)
+# define MSGPACK_PP_FOR_188_I(s, p, o, m) MSGPACK_PP_IF(p(189, s), m, MSGPACK_PP_TUPLE_EAT_2)(189, s) MSGPACK_PP_IF(p(189, s), MSGPACK_PP_FOR_189, MSGPACK_PP_TUPLE_EAT_4)(o(189, s), p, o, m)
+# define MSGPACK_PP_FOR_189_I(s, p, o, m) MSGPACK_PP_IF(p(190, s), m, MSGPACK_PP_TUPLE_EAT_2)(190, s) MSGPACK_PP_IF(p(190, s), MSGPACK_PP_FOR_190, MSGPACK_PP_TUPLE_EAT_4)(o(190, s), p, o, m)
+# define MSGPACK_PP_FOR_190_I(s, p, o, m) MSGPACK_PP_IF(p(191, s), m, MSGPACK_PP_TUPLE_EAT_2)(191, s) MSGPACK_PP_IF(p(191, s), MSGPACK_PP_FOR_191, MSGPACK_PP_TUPLE_EAT_4)(o(191, s), p, o, m)
+# define MSGPACK_PP_FOR_191_I(s, p, o, m) MSGPACK_PP_IF(p(192, s), m, MSGPACK_PP_TUPLE_EAT_2)(192, s) MSGPACK_PP_IF(p(192, s), MSGPACK_PP_FOR_192, MSGPACK_PP_TUPLE_EAT_4)(o(192, s), p, o, m)
+# define MSGPACK_PP_FOR_192_I(s, p, o, m) MSGPACK_PP_IF(p(193, s), m, MSGPACK_PP_TUPLE_EAT_2)(193, s) MSGPACK_PP_IF(p(193, s), MSGPACK_PP_FOR_193, MSGPACK_PP_TUPLE_EAT_4)(o(193, s), p, o, m)
+# define MSGPACK_PP_FOR_193_I(s, p, o, m) MSGPACK_PP_IF(p(194, s), m, MSGPACK_PP_TUPLE_EAT_2)(194, s) MSGPACK_PP_IF(p(194, s), MSGPACK_PP_FOR_194, MSGPACK_PP_TUPLE_EAT_4)(o(194, s), p, o, m)
+# define MSGPACK_PP_FOR_194_I(s, p, o, m) MSGPACK_PP_IF(p(195, s), m, MSGPACK_PP_TUPLE_EAT_2)(195, s) MSGPACK_PP_IF(p(195, s), MSGPACK_PP_FOR_195, MSGPACK_PP_TUPLE_EAT_4)(o(195, s), p, o, m)
+# define MSGPACK_PP_FOR_195_I(s, p, o, m) MSGPACK_PP_IF(p(196, s), m, MSGPACK_PP_TUPLE_EAT_2)(196, s) MSGPACK_PP_IF(p(196, s), MSGPACK_PP_FOR_196, MSGPACK_PP_TUPLE_EAT_4)(o(196, s), p, o, m)
+# define MSGPACK_PP_FOR_196_I(s, p, o, m) MSGPACK_PP_IF(p(197, s), m, MSGPACK_PP_TUPLE_EAT_2)(197, s) MSGPACK_PP_IF(p(197, s), MSGPACK_PP_FOR_197, MSGPACK_PP_TUPLE_EAT_4)(o(197, s), p, o, m)
+# define MSGPACK_PP_FOR_197_I(s, p, o, m) MSGPACK_PP_IF(p(198, s), m, MSGPACK_PP_TUPLE_EAT_2)(198, s) MSGPACK_PP_IF(p(198, s), MSGPACK_PP_FOR_198, MSGPACK_PP_TUPLE_EAT_4)(o(198, s), p, o, m)
+# define MSGPACK_PP_FOR_198_I(s, p, o, m) MSGPACK_PP_IF(p(199, s), m, MSGPACK_PP_TUPLE_EAT_2)(199, s) MSGPACK_PP_IF(p(199, s), MSGPACK_PP_FOR_199, MSGPACK_PP_TUPLE_EAT_4)(o(199, s), p, o, m)
+# define MSGPACK_PP_FOR_199_I(s, p, o, m) MSGPACK_PP_IF(p(200, s), m, MSGPACK_PP_TUPLE_EAT_2)(200, s) MSGPACK_PP_IF(p(200, s), MSGPACK_PP_FOR_200, MSGPACK_PP_TUPLE_EAT_4)(o(200, s), p, o, m)
+# define MSGPACK_PP_FOR_200_I(s, p, o, m) MSGPACK_PP_IF(p(201, s), m, MSGPACK_PP_TUPLE_EAT_2)(201, s) MSGPACK_PP_IF(p(201, s), MSGPACK_PP_FOR_201, MSGPACK_PP_TUPLE_EAT_4)(o(201, s), p, o, m)
+# define MSGPACK_PP_FOR_201_I(s, p, o, m) MSGPACK_PP_IF(p(202, s), m, MSGPACK_PP_TUPLE_EAT_2)(202, s) MSGPACK_PP_IF(p(202, s), MSGPACK_PP_FOR_202, MSGPACK_PP_TUPLE_EAT_4)(o(202, s), p, o, m)
+# define MSGPACK_PP_FOR_202_I(s, p, o, m) MSGPACK_PP_IF(p(203, s), m, MSGPACK_PP_TUPLE_EAT_2)(203, s) MSGPACK_PP_IF(p(203, s), MSGPACK_PP_FOR_203, MSGPACK_PP_TUPLE_EAT_4)(o(203, s), p, o, m)
+# define MSGPACK_PP_FOR_203_I(s, p, o, m) MSGPACK_PP_IF(p(204, s), m, MSGPACK_PP_TUPLE_EAT_2)(204, s) MSGPACK_PP_IF(p(204, s), MSGPACK_PP_FOR_204, MSGPACK_PP_TUPLE_EAT_4)(o(204, s), p, o, m)
+# define MSGPACK_PP_FOR_204_I(s, p, o, m) MSGPACK_PP_IF(p(205, s), m, MSGPACK_PP_TUPLE_EAT_2)(205, s) MSGPACK_PP_IF(p(205, s), MSGPACK_PP_FOR_205, MSGPACK_PP_TUPLE_EAT_4)(o(205, s), p, o, m)
+# define MSGPACK_PP_FOR_205_I(s, p, o, m) MSGPACK_PP_IF(p(206, s), m, MSGPACK_PP_TUPLE_EAT_2)(206, s) MSGPACK_PP_IF(p(206, s), MSGPACK_PP_FOR_206, MSGPACK_PP_TUPLE_EAT_4)(o(206, s), p, o, m)
+# define MSGPACK_PP_FOR_206_I(s, p, o, m) MSGPACK_PP_IF(p(207, s), m, MSGPACK_PP_TUPLE_EAT_2)(207, s) MSGPACK_PP_IF(p(207, s), MSGPACK_PP_FOR_207, MSGPACK_PP_TUPLE_EAT_4)(o(207, s), p, o, m)
+# define MSGPACK_PP_FOR_207_I(s, p, o, m) MSGPACK_PP_IF(p(208, s), m, MSGPACK_PP_TUPLE_EAT_2)(208, s) MSGPACK_PP_IF(p(208, s), MSGPACK_PP_FOR_208, MSGPACK_PP_TUPLE_EAT_4)(o(208, s), p, o, m)
+# define MSGPACK_PP_FOR_208_I(s, p, o, m) MSGPACK_PP_IF(p(209, s), m, MSGPACK_PP_TUPLE_EAT_2)(209, s) MSGPACK_PP_IF(p(209, s), MSGPACK_PP_FOR_209, MSGPACK_PP_TUPLE_EAT_4)(o(209, s), p, o, m)
+# define MSGPACK_PP_FOR_209_I(s, p, o, m) MSGPACK_PP_IF(p(210, s), m, MSGPACK_PP_TUPLE_EAT_2)(210, s) MSGPACK_PP_IF(p(210, s), MSGPACK_PP_FOR_210, MSGPACK_PP_TUPLE_EAT_4)(o(210, s), p, o, m)
+# define MSGPACK_PP_FOR_210_I(s, p, o, m) MSGPACK_PP_IF(p(211, s), m, MSGPACK_PP_TUPLE_EAT_2)(211, s) MSGPACK_PP_IF(p(211, s), MSGPACK_PP_FOR_211, MSGPACK_PP_TUPLE_EAT_4)(o(211, s), p, o, m)
+# define MSGPACK_PP_FOR_211_I(s, p, o, m) MSGPACK_PP_IF(p(212, s), m, MSGPACK_PP_TUPLE_EAT_2)(212, s) MSGPACK_PP_IF(p(212, s), MSGPACK_PP_FOR_212, MSGPACK_PP_TUPLE_EAT_4)(o(212, s), p, o, m)
+# define MSGPACK_PP_FOR_212_I(s, p, o, m) MSGPACK_PP_IF(p(213, s), m, MSGPACK_PP_TUPLE_EAT_2)(213, s) MSGPACK_PP_IF(p(213, s), MSGPACK_PP_FOR_213, MSGPACK_PP_TUPLE_EAT_4)(o(213, s), p, o, m)
+# define MSGPACK_PP_FOR_213_I(s, p, o, m) MSGPACK_PP_IF(p(214, s), m, MSGPACK_PP_TUPLE_EAT_2)(214, s) MSGPACK_PP_IF(p(214, s), MSGPACK_PP_FOR_214, MSGPACK_PP_TUPLE_EAT_4)(o(214, s), p, o, m)
+# define MSGPACK_PP_FOR_214_I(s, p, o, m) MSGPACK_PP_IF(p(215, s), m, MSGPACK_PP_TUPLE_EAT_2)(215, s) MSGPACK_PP_IF(p(215, s), MSGPACK_PP_FOR_215, MSGPACK_PP_TUPLE_EAT_4)(o(215, s), p, o, m)
+# define MSGPACK_PP_FOR_215_I(s, p, o, m) MSGPACK_PP_IF(p(216, s), m, MSGPACK_PP_TUPLE_EAT_2)(216, s) MSGPACK_PP_IF(p(216, s), MSGPACK_PP_FOR_216, MSGPACK_PP_TUPLE_EAT_4)(o(216, s), p, o, m)
+# define MSGPACK_PP_FOR_216_I(s, p, o, m) MSGPACK_PP_IF(p(217, s), m, MSGPACK_PP_TUPLE_EAT_2)(217, s) MSGPACK_PP_IF(p(217, s), MSGPACK_PP_FOR_217, MSGPACK_PP_TUPLE_EAT_4)(o(217, s), p, o, m)
+# define MSGPACK_PP_FOR_217_I(s, p, o, m) MSGPACK_PP_IF(p(218, s), m, MSGPACK_PP_TUPLE_EAT_2)(218, s) MSGPACK_PP_IF(p(218, s), MSGPACK_PP_FOR_218, MSGPACK_PP_TUPLE_EAT_4)(o(218, s), p, o, m)
+# define MSGPACK_PP_FOR_218_I(s, p, o, m) MSGPACK_PP_IF(p(219, s), m, MSGPACK_PP_TUPLE_EAT_2)(219, s) MSGPACK_PP_IF(p(219, s), MSGPACK_PP_FOR_219, MSGPACK_PP_TUPLE_EAT_4)(o(219, s), p, o, m)
+# define MSGPACK_PP_FOR_219_I(s, p, o, m) MSGPACK_PP_IF(p(220, s), m, MSGPACK_PP_TUPLE_EAT_2)(220, s) MSGPACK_PP_IF(p(220, s), MSGPACK_PP_FOR_220, MSGPACK_PP_TUPLE_EAT_4)(o(220, s), p, o, m)
+# define MSGPACK_PP_FOR_220_I(s, p, o, m) MSGPACK_PP_IF(p(221, s), m, MSGPACK_PP_TUPLE_EAT_2)(221, s) MSGPACK_PP_IF(p(221, s), MSGPACK_PP_FOR_221, MSGPACK_PP_TUPLE_EAT_4)(o(221, s), p, o, m)
+# define MSGPACK_PP_FOR_221_I(s, p, o, m) MSGPACK_PP_IF(p(222, s), m, MSGPACK_PP_TUPLE_EAT_2)(222, s) MSGPACK_PP_IF(p(222, s), MSGPACK_PP_FOR_222, MSGPACK_PP_TUPLE_EAT_4)(o(222, s), p, o, m)
+# define MSGPACK_PP_FOR_222_I(s, p, o, m) MSGPACK_PP_IF(p(223, s), m, MSGPACK_PP_TUPLE_EAT_2)(223, s) MSGPACK_PP_IF(p(223, s), MSGPACK_PP_FOR_223, MSGPACK_PP_TUPLE_EAT_4)(o(223, s), p, o, m)
+# define MSGPACK_PP_FOR_223_I(s, p, o, m) MSGPACK_PP_IF(p(224, s), m, MSGPACK_PP_TUPLE_EAT_2)(224, s) MSGPACK_PP_IF(p(224, s), MSGPACK_PP_FOR_224, MSGPACK_PP_TUPLE_EAT_4)(o(224, s), p, o, m)
+# define MSGPACK_PP_FOR_224_I(s, p, o, m) MSGPACK_PP_IF(p(225, s), m, MSGPACK_PP_TUPLE_EAT_2)(225, s) MSGPACK_PP_IF(p(225, s), MSGPACK_PP_FOR_225, MSGPACK_PP_TUPLE_EAT_4)(o(225, s), p, o, m)
+# define MSGPACK_PP_FOR_225_I(s, p, o, m) MSGPACK_PP_IF(p(226, s), m, MSGPACK_PP_TUPLE_EAT_2)(226, s) MSGPACK_PP_IF(p(226, s), MSGPACK_PP_FOR_226, MSGPACK_PP_TUPLE_EAT_4)(o(226, s), p, o, m)
+# define MSGPACK_PP_FOR_226_I(s, p, o, m) MSGPACK_PP_IF(p(227, s), m, MSGPACK_PP_TUPLE_EAT_2)(227, s) MSGPACK_PP_IF(p(227, s), MSGPACK_PP_FOR_227, MSGPACK_PP_TUPLE_EAT_4)(o(227, s), p, o, m)
+# define MSGPACK_PP_FOR_227_I(s, p, o, m) MSGPACK_PP_IF(p(228, s), m, MSGPACK_PP_TUPLE_EAT_2)(228, s) MSGPACK_PP_IF(p(228, s), MSGPACK_PP_FOR_228, MSGPACK_PP_TUPLE_EAT_4)(o(228, s), p, o, m)
+# define MSGPACK_PP_FOR_228_I(s, p, o, m) MSGPACK_PP_IF(p(229, s), m, MSGPACK_PP_TUPLE_EAT_2)(229, s) MSGPACK_PP_IF(p(229, s), MSGPACK_PP_FOR_229, MSGPACK_PP_TUPLE_EAT_4)(o(229, s), p, o, m)
+# define MSGPACK_PP_FOR_229_I(s, p, o, m) MSGPACK_PP_IF(p(230, s), m, MSGPACK_PP_TUPLE_EAT_2)(230, s) MSGPACK_PP_IF(p(230, s), MSGPACK_PP_FOR_230, MSGPACK_PP_TUPLE_EAT_4)(o(230, s), p, o, m)
+# define MSGPACK_PP_FOR_230_I(s, p, o, m) MSGPACK_PP_IF(p(231, s), m, MSGPACK_PP_TUPLE_EAT_2)(231, s) MSGPACK_PP_IF(p(231, s), MSGPACK_PP_FOR_231, MSGPACK_PP_TUPLE_EAT_4)(o(231, s), p, o, m)
+# define MSGPACK_PP_FOR_231_I(s, p, o, m) MSGPACK_PP_IF(p(232, s), m, MSGPACK_PP_TUPLE_EAT_2)(232, s) MSGPACK_PP_IF(p(232, s), MSGPACK_PP_FOR_232, MSGPACK_PP_TUPLE_EAT_4)(o(232, s), p, o, m)
+# define MSGPACK_PP_FOR_232_I(s, p, o, m) MSGPACK_PP_IF(p(233, s), m, MSGPACK_PP_TUPLE_EAT_2)(233, s) MSGPACK_PP_IF(p(233, s), MSGPACK_PP_FOR_233, MSGPACK_PP_TUPLE_EAT_4)(o(233, s), p, o, m)
+# define MSGPACK_PP_FOR_233_I(s, p, o, m) MSGPACK_PP_IF(p(234, s), m, MSGPACK_PP_TUPLE_EAT_2)(234, s) MSGPACK_PP_IF(p(234, s), MSGPACK_PP_FOR_234, MSGPACK_PP_TUPLE_EAT_4)(o(234, s), p, o, m)
+# define MSGPACK_PP_FOR_234_I(s, p, o, m) MSGPACK_PP_IF(p(235, s), m, MSGPACK_PP_TUPLE_EAT_2)(235, s) MSGPACK_PP_IF(p(235, s), MSGPACK_PP_FOR_235, MSGPACK_PP_TUPLE_EAT_4)(o(235, s), p, o, m)
+# define MSGPACK_PP_FOR_235_I(s, p, o, m) MSGPACK_PP_IF(p(236, s), m, MSGPACK_PP_TUPLE_EAT_2)(236, s) MSGPACK_PP_IF(p(236, s), MSGPACK_PP_FOR_236, MSGPACK_PP_TUPLE_EAT_4)(o(236, s), p, o, m)
+# define MSGPACK_PP_FOR_236_I(s, p, o, m) MSGPACK_PP_IF(p(237, s), m, MSGPACK_PP_TUPLE_EAT_2)(237, s) MSGPACK_PP_IF(p(237, s), MSGPACK_PP_FOR_237, MSGPACK_PP_TUPLE_EAT_4)(o(237, s), p, o, m)
+# define MSGPACK_PP_FOR_237_I(s, p, o, m) MSGPACK_PP_IF(p(238, s), m, MSGPACK_PP_TUPLE_EAT_2)(238, s) MSGPACK_PP_IF(p(238, s), MSGPACK_PP_FOR_238, MSGPACK_PP_TUPLE_EAT_4)(o(238, s), p, o, m)
+# define MSGPACK_PP_FOR_238_I(s, p, o, m) MSGPACK_PP_IF(p(239, s), m, MSGPACK_PP_TUPLE_EAT_2)(239, s) MSGPACK_PP_IF(p(239, s), MSGPACK_PP_FOR_239, MSGPACK_PP_TUPLE_EAT_4)(o(239, s), p, o, m)
+# define MSGPACK_PP_FOR_239_I(s, p, o, m) MSGPACK_PP_IF(p(240, s), m, MSGPACK_PP_TUPLE_EAT_2)(240, s) MSGPACK_PP_IF(p(240, s), MSGPACK_PP_FOR_240, MSGPACK_PP_TUPLE_EAT_4)(o(240, s), p, o, m)
+# define MSGPACK_PP_FOR_240_I(s, p, o, m) MSGPACK_PP_IF(p(241, s), m, MSGPACK_PP_TUPLE_EAT_2)(241, s) MSGPACK_PP_IF(p(241, s), MSGPACK_PP_FOR_241, MSGPACK_PP_TUPLE_EAT_4)(o(241, s), p, o, m)
+# define MSGPACK_PP_FOR_241_I(s, p, o, m) MSGPACK_PP_IF(p(242, s), m, MSGPACK_PP_TUPLE_EAT_2)(242, s) MSGPACK_PP_IF(p(242, s), MSGPACK_PP_FOR_242, MSGPACK_PP_TUPLE_EAT_4)(o(242, s), p, o, m)
+# define MSGPACK_PP_FOR_242_I(s, p, o, m) MSGPACK_PP_IF(p(243, s), m, MSGPACK_PP_TUPLE_EAT_2)(243, s) MSGPACK_PP_IF(p(243, s), MSGPACK_PP_FOR_243, MSGPACK_PP_TUPLE_EAT_4)(o(243, s), p, o, m)
+# define MSGPACK_PP_FOR_243_I(s, p, o, m) MSGPACK_PP_IF(p(244, s), m, MSGPACK_PP_TUPLE_EAT_2)(244, s) MSGPACK_PP_IF(p(244, s), MSGPACK_PP_FOR_244, MSGPACK_PP_TUPLE_EAT_4)(o(244, s), p, o, m)
+# define MSGPACK_PP_FOR_244_I(s, p, o, m) MSGPACK_PP_IF(p(245, s), m, MSGPACK_PP_TUPLE_EAT_2)(245, s) MSGPACK_PP_IF(p(245, s), MSGPACK_PP_FOR_245, MSGPACK_PP_TUPLE_EAT_4)(o(245, s), p, o, m)
+# define MSGPACK_PP_FOR_245_I(s, p, o, m) MSGPACK_PP_IF(p(246, s), m, MSGPACK_PP_TUPLE_EAT_2)(246, s) MSGPACK_PP_IF(p(246, s), MSGPACK_PP_FOR_246, MSGPACK_PP_TUPLE_EAT_4)(o(246, s), p, o, m)
+# define MSGPACK_PP_FOR_246_I(s, p, o, m) MSGPACK_PP_IF(p(247, s), m, MSGPACK_PP_TUPLE_EAT_2)(247, s) MSGPACK_PP_IF(p(247, s), MSGPACK_PP_FOR_247, MSGPACK_PP_TUPLE_EAT_4)(o(247, s), p, o, m)
+# define MSGPACK_PP_FOR_247_I(s, p, o, m) MSGPACK_PP_IF(p(248, s), m, MSGPACK_PP_TUPLE_EAT_2)(248, s) MSGPACK_PP_IF(p(248, s), MSGPACK_PP_FOR_248, MSGPACK_PP_TUPLE_EAT_4)(o(248, s), p, o, m)
+# define MSGPACK_PP_FOR_248_I(s, p, o, m) MSGPACK_PP_IF(p(249, s), m, MSGPACK_PP_TUPLE_EAT_2)(249, s) MSGPACK_PP_IF(p(249, s), MSGPACK_PP_FOR_249, MSGPACK_PP_TUPLE_EAT_4)(o(249, s), p, o, m)
+# define MSGPACK_PP_FOR_249_I(s, p, o, m) MSGPACK_PP_IF(p(250, s), m, MSGPACK_PP_TUPLE_EAT_2)(250, s) MSGPACK_PP_IF(p(250, s), MSGPACK_PP_FOR_250, MSGPACK_PP_TUPLE_EAT_4)(o(250, s), p, o, m)
+# define MSGPACK_PP_FOR_250_I(s, p, o, m) MSGPACK_PP_IF(p(251, s), m, MSGPACK_PP_TUPLE_EAT_2)(251, s) MSGPACK_PP_IF(p(251, s), MSGPACK_PP_FOR_251, MSGPACK_PP_TUPLE_EAT_4)(o(251, s), p, o, m)
+# define MSGPACK_PP_FOR_251_I(s, p, o, m) MSGPACK_PP_IF(p(252, s), m, MSGPACK_PP_TUPLE_EAT_2)(252, s) MSGPACK_PP_IF(p(252, s), MSGPACK_PP_FOR_252, MSGPACK_PP_TUPLE_EAT_4)(o(252, s), p, o, m)
+# define MSGPACK_PP_FOR_252_I(s, p, o, m) MSGPACK_PP_IF(p(253, s), m, MSGPACK_PP_TUPLE_EAT_2)(253, s) MSGPACK_PP_IF(p(253, s), MSGPACK_PP_FOR_253, MSGPACK_PP_TUPLE_EAT_4)(o(253, s), p, o, m)
+# define MSGPACK_PP_FOR_253_I(s, p, o, m) MSGPACK_PP_IF(p(254, s), m, MSGPACK_PP_TUPLE_EAT_2)(254, s) MSGPACK_PP_IF(p(254, s), MSGPACK_PP_FOR_254, MSGPACK_PP_TUPLE_EAT_4)(o(254, s), p, o, m)
+# define MSGPACK_PP_FOR_254_I(s, p, o, m) MSGPACK_PP_IF(p(255, s), m, MSGPACK_PP_TUPLE_EAT_2)(255, s) MSGPACK_PP_IF(p(255, s), MSGPACK_PP_FOR_255, MSGPACK_PP_TUPLE_EAT_4)(o(255, s), p, o, m)
+# define MSGPACK_PP_FOR_255_I(s, p, o, m) MSGPACK_PP_IF(p(256, s), m, MSGPACK_PP_TUPLE_EAT_2)(256, s) MSGPACK_PP_IF(p(256, s), MSGPACK_PP_FOR_256, MSGPACK_PP_TUPLE_EAT_4)(o(256, s), p, o, m)
+# define MSGPACK_PP_FOR_256_I(s, p, o, m) MSGPACK_PP_IF(p(257, s), m, MSGPACK_PP_TUPLE_EAT_2)(257, s) MSGPACK_PP_IF(p(257, s), MSGPACK_PP_FOR_257, MSGPACK_PP_TUPLE_EAT_4)(o(257, s), p, o, m)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/repetition/detail/for.hpp b/third_party/msgpack/include/msgpack/preprocessor/repetition/detail/for.hpp
new file mode 100644
index 0000000000..938681ca0c
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/repetition/detail/for.hpp
@@ -0,0 +1,536 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_REPETITION_DETAIL_FOR_HPP
+# define MSGPACK_PREPROCESSOR_REPETITION_DETAIL_FOR_HPP
+#
+# include <msgpack/preprocessor/control/expr_iif.hpp>
+# include <msgpack/preprocessor/control/iif.hpp>
+# include <msgpack/preprocessor/logical/bool.hpp>
+# include <msgpack/preprocessor/tuple/eat.hpp>
+#
+# define MSGPACK_PP_FOR_1(s, p, o, m) MSGPACK_PP_FOR_1_C(MSGPACK_PP_BOOL(p(2, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_2(s, p, o, m) MSGPACK_PP_FOR_2_C(MSGPACK_PP_BOOL(p(3, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_3(s, p, o, m) MSGPACK_PP_FOR_3_C(MSGPACK_PP_BOOL(p(4, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_4(s, p, o, m) MSGPACK_PP_FOR_4_C(MSGPACK_PP_BOOL(p(5, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_5(s, p, o, m) MSGPACK_PP_FOR_5_C(MSGPACK_PP_BOOL(p(6, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_6(s, p, o, m) MSGPACK_PP_FOR_6_C(MSGPACK_PP_BOOL(p(7, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_7(s, p, o, m) MSGPACK_PP_FOR_7_C(MSGPACK_PP_BOOL(p(8, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_8(s, p, o, m) MSGPACK_PP_FOR_8_C(MSGPACK_PP_BOOL(p(9, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_9(s, p, o, m) MSGPACK_PP_FOR_9_C(MSGPACK_PP_BOOL(p(10, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_10(s, p, o, m) MSGPACK_PP_FOR_10_C(MSGPACK_PP_BOOL(p(11, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_11(s, p, o, m) MSGPACK_PP_FOR_11_C(MSGPACK_PP_BOOL(p(12, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_12(s, p, o, m) MSGPACK_PP_FOR_12_C(MSGPACK_PP_BOOL(p(13, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_13(s, p, o, m) MSGPACK_PP_FOR_13_C(MSGPACK_PP_BOOL(p(14, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_14(s, p, o, m) MSGPACK_PP_FOR_14_C(MSGPACK_PP_BOOL(p(15, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_15(s, p, o, m) MSGPACK_PP_FOR_15_C(MSGPACK_PP_BOOL(p(16, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_16(s, p, o, m) MSGPACK_PP_FOR_16_C(MSGPACK_PP_BOOL(p(17, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_17(s, p, o, m) MSGPACK_PP_FOR_17_C(MSGPACK_PP_BOOL(p(18, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_18(s, p, o, m) MSGPACK_PP_FOR_18_C(MSGPACK_PP_BOOL(p(19, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_19(s, p, o, m) MSGPACK_PP_FOR_19_C(MSGPACK_PP_BOOL(p(20, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_20(s, p, o, m) MSGPACK_PP_FOR_20_C(MSGPACK_PP_BOOL(p(21, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_21(s, p, o, m) MSGPACK_PP_FOR_21_C(MSGPACK_PP_BOOL(p(22, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_22(s, p, o, m) MSGPACK_PP_FOR_22_C(MSGPACK_PP_BOOL(p(23, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_23(s, p, o, m) MSGPACK_PP_FOR_23_C(MSGPACK_PP_BOOL(p(24, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_24(s, p, o, m) MSGPACK_PP_FOR_24_C(MSGPACK_PP_BOOL(p(25, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_25(s, p, o, m) MSGPACK_PP_FOR_25_C(MSGPACK_PP_BOOL(p(26, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_26(s, p, o, m) MSGPACK_PP_FOR_26_C(MSGPACK_PP_BOOL(p(27, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_27(s, p, o, m) MSGPACK_PP_FOR_27_C(MSGPACK_PP_BOOL(p(28, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_28(s, p, o, m) MSGPACK_PP_FOR_28_C(MSGPACK_PP_BOOL(p(29, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_29(s, p, o, m) MSGPACK_PP_FOR_29_C(MSGPACK_PP_BOOL(p(30, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_30(s, p, o, m) MSGPACK_PP_FOR_30_C(MSGPACK_PP_BOOL(p(31, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_31(s, p, o, m) MSGPACK_PP_FOR_31_C(MSGPACK_PP_BOOL(p(32, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_32(s, p, o, m) MSGPACK_PP_FOR_32_C(MSGPACK_PP_BOOL(p(33, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_33(s, p, o, m) MSGPACK_PP_FOR_33_C(MSGPACK_PP_BOOL(p(34, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_34(s, p, o, m) MSGPACK_PP_FOR_34_C(MSGPACK_PP_BOOL(p(35, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_35(s, p, o, m) MSGPACK_PP_FOR_35_C(MSGPACK_PP_BOOL(p(36, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_36(s, p, o, m) MSGPACK_PP_FOR_36_C(MSGPACK_PP_BOOL(p(37, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_37(s, p, o, m) MSGPACK_PP_FOR_37_C(MSGPACK_PP_BOOL(p(38, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_38(s, p, o, m) MSGPACK_PP_FOR_38_C(MSGPACK_PP_BOOL(p(39, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_39(s, p, o, m) MSGPACK_PP_FOR_39_C(MSGPACK_PP_BOOL(p(40, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_40(s, p, o, m) MSGPACK_PP_FOR_40_C(MSGPACK_PP_BOOL(p(41, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_41(s, p, o, m) MSGPACK_PP_FOR_41_C(MSGPACK_PP_BOOL(p(42, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_42(s, p, o, m) MSGPACK_PP_FOR_42_C(MSGPACK_PP_BOOL(p(43, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_43(s, p, o, m) MSGPACK_PP_FOR_43_C(MSGPACK_PP_BOOL(p(44, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_44(s, p, o, m) MSGPACK_PP_FOR_44_C(MSGPACK_PP_BOOL(p(45, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_45(s, p, o, m) MSGPACK_PP_FOR_45_C(MSGPACK_PP_BOOL(p(46, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_46(s, p, o, m) MSGPACK_PP_FOR_46_C(MSGPACK_PP_BOOL(p(47, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_47(s, p, o, m) MSGPACK_PP_FOR_47_C(MSGPACK_PP_BOOL(p(48, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_48(s, p, o, m) MSGPACK_PP_FOR_48_C(MSGPACK_PP_BOOL(p(49, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_49(s, p, o, m) MSGPACK_PP_FOR_49_C(MSGPACK_PP_BOOL(p(50, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_50(s, p, o, m) MSGPACK_PP_FOR_50_C(MSGPACK_PP_BOOL(p(51, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_51(s, p, o, m) MSGPACK_PP_FOR_51_C(MSGPACK_PP_BOOL(p(52, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_52(s, p, o, m) MSGPACK_PP_FOR_52_C(MSGPACK_PP_BOOL(p(53, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_53(s, p, o, m) MSGPACK_PP_FOR_53_C(MSGPACK_PP_BOOL(p(54, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_54(s, p, o, m) MSGPACK_PP_FOR_54_C(MSGPACK_PP_BOOL(p(55, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_55(s, p, o, m) MSGPACK_PP_FOR_55_C(MSGPACK_PP_BOOL(p(56, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_56(s, p, o, m) MSGPACK_PP_FOR_56_C(MSGPACK_PP_BOOL(p(57, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_57(s, p, o, m) MSGPACK_PP_FOR_57_C(MSGPACK_PP_BOOL(p(58, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_58(s, p, o, m) MSGPACK_PP_FOR_58_C(MSGPACK_PP_BOOL(p(59, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_59(s, p, o, m) MSGPACK_PP_FOR_59_C(MSGPACK_PP_BOOL(p(60, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_60(s, p, o, m) MSGPACK_PP_FOR_60_C(MSGPACK_PP_BOOL(p(61, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_61(s, p, o, m) MSGPACK_PP_FOR_61_C(MSGPACK_PP_BOOL(p(62, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_62(s, p, o, m) MSGPACK_PP_FOR_62_C(MSGPACK_PP_BOOL(p(63, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_63(s, p, o, m) MSGPACK_PP_FOR_63_C(MSGPACK_PP_BOOL(p(64, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_64(s, p, o, m) MSGPACK_PP_FOR_64_C(MSGPACK_PP_BOOL(p(65, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_65(s, p, o, m) MSGPACK_PP_FOR_65_C(MSGPACK_PP_BOOL(p(66, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_66(s, p, o, m) MSGPACK_PP_FOR_66_C(MSGPACK_PP_BOOL(p(67, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_67(s, p, o, m) MSGPACK_PP_FOR_67_C(MSGPACK_PP_BOOL(p(68, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_68(s, p, o, m) MSGPACK_PP_FOR_68_C(MSGPACK_PP_BOOL(p(69, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_69(s, p, o, m) MSGPACK_PP_FOR_69_C(MSGPACK_PP_BOOL(p(70, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_70(s, p, o, m) MSGPACK_PP_FOR_70_C(MSGPACK_PP_BOOL(p(71, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_71(s, p, o, m) MSGPACK_PP_FOR_71_C(MSGPACK_PP_BOOL(p(72, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_72(s, p, o, m) MSGPACK_PP_FOR_72_C(MSGPACK_PP_BOOL(p(73, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_73(s, p, o, m) MSGPACK_PP_FOR_73_C(MSGPACK_PP_BOOL(p(74, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_74(s, p, o, m) MSGPACK_PP_FOR_74_C(MSGPACK_PP_BOOL(p(75, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_75(s, p, o, m) MSGPACK_PP_FOR_75_C(MSGPACK_PP_BOOL(p(76, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_76(s, p, o, m) MSGPACK_PP_FOR_76_C(MSGPACK_PP_BOOL(p(77, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_77(s, p, o, m) MSGPACK_PP_FOR_77_C(MSGPACK_PP_BOOL(p(78, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_78(s, p, o, m) MSGPACK_PP_FOR_78_C(MSGPACK_PP_BOOL(p(79, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_79(s, p, o, m) MSGPACK_PP_FOR_79_C(MSGPACK_PP_BOOL(p(80, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_80(s, p, o, m) MSGPACK_PP_FOR_80_C(MSGPACK_PP_BOOL(p(81, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_81(s, p, o, m) MSGPACK_PP_FOR_81_C(MSGPACK_PP_BOOL(p(82, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_82(s, p, o, m) MSGPACK_PP_FOR_82_C(MSGPACK_PP_BOOL(p(83, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_83(s, p, o, m) MSGPACK_PP_FOR_83_C(MSGPACK_PP_BOOL(p(84, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_84(s, p, o, m) MSGPACK_PP_FOR_84_C(MSGPACK_PP_BOOL(p(85, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_85(s, p, o, m) MSGPACK_PP_FOR_85_C(MSGPACK_PP_BOOL(p(86, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_86(s, p, o, m) MSGPACK_PP_FOR_86_C(MSGPACK_PP_BOOL(p(87, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_87(s, p, o, m) MSGPACK_PP_FOR_87_C(MSGPACK_PP_BOOL(p(88, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_88(s, p, o, m) MSGPACK_PP_FOR_88_C(MSGPACK_PP_BOOL(p(89, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_89(s, p, o, m) MSGPACK_PP_FOR_89_C(MSGPACK_PP_BOOL(p(90, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_90(s, p, o, m) MSGPACK_PP_FOR_90_C(MSGPACK_PP_BOOL(p(91, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_91(s, p, o, m) MSGPACK_PP_FOR_91_C(MSGPACK_PP_BOOL(p(92, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_92(s, p, o, m) MSGPACK_PP_FOR_92_C(MSGPACK_PP_BOOL(p(93, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_93(s, p, o, m) MSGPACK_PP_FOR_93_C(MSGPACK_PP_BOOL(p(94, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_94(s, p, o, m) MSGPACK_PP_FOR_94_C(MSGPACK_PP_BOOL(p(95, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_95(s, p, o, m) MSGPACK_PP_FOR_95_C(MSGPACK_PP_BOOL(p(96, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_96(s, p, o, m) MSGPACK_PP_FOR_96_C(MSGPACK_PP_BOOL(p(97, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_97(s, p, o, m) MSGPACK_PP_FOR_97_C(MSGPACK_PP_BOOL(p(98, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_98(s, p, o, m) MSGPACK_PP_FOR_98_C(MSGPACK_PP_BOOL(p(99, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_99(s, p, o, m) MSGPACK_PP_FOR_99_C(MSGPACK_PP_BOOL(p(100, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_100(s, p, o, m) MSGPACK_PP_FOR_100_C(MSGPACK_PP_BOOL(p(101, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_101(s, p, o, m) MSGPACK_PP_FOR_101_C(MSGPACK_PP_BOOL(p(102, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_102(s, p, o, m) MSGPACK_PP_FOR_102_C(MSGPACK_PP_BOOL(p(103, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_103(s, p, o, m) MSGPACK_PP_FOR_103_C(MSGPACK_PP_BOOL(p(104, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_104(s, p, o, m) MSGPACK_PP_FOR_104_C(MSGPACK_PP_BOOL(p(105, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_105(s, p, o, m) MSGPACK_PP_FOR_105_C(MSGPACK_PP_BOOL(p(106, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_106(s, p, o, m) MSGPACK_PP_FOR_106_C(MSGPACK_PP_BOOL(p(107, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_107(s, p, o, m) MSGPACK_PP_FOR_107_C(MSGPACK_PP_BOOL(p(108, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_108(s, p, o, m) MSGPACK_PP_FOR_108_C(MSGPACK_PP_BOOL(p(109, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_109(s, p, o, m) MSGPACK_PP_FOR_109_C(MSGPACK_PP_BOOL(p(110, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_110(s, p, o, m) MSGPACK_PP_FOR_110_C(MSGPACK_PP_BOOL(p(111, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_111(s, p, o, m) MSGPACK_PP_FOR_111_C(MSGPACK_PP_BOOL(p(112, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_112(s, p, o, m) MSGPACK_PP_FOR_112_C(MSGPACK_PP_BOOL(p(113, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_113(s, p, o, m) MSGPACK_PP_FOR_113_C(MSGPACK_PP_BOOL(p(114, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_114(s, p, o, m) MSGPACK_PP_FOR_114_C(MSGPACK_PP_BOOL(p(115, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_115(s, p, o, m) MSGPACK_PP_FOR_115_C(MSGPACK_PP_BOOL(p(116, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_116(s, p, o, m) MSGPACK_PP_FOR_116_C(MSGPACK_PP_BOOL(p(117, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_117(s, p, o, m) MSGPACK_PP_FOR_117_C(MSGPACK_PP_BOOL(p(118, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_118(s, p, o, m) MSGPACK_PP_FOR_118_C(MSGPACK_PP_BOOL(p(119, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_119(s, p, o, m) MSGPACK_PP_FOR_119_C(MSGPACK_PP_BOOL(p(120, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_120(s, p, o, m) MSGPACK_PP_FOR_120_C(MSGPACK_PP_BOOL(p(121, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_121(s, p, o, m) MSGPACK_PP_FOR_121_C(MSGPACK_PP_BOOL(p(122, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_122(s, p, o, m) MSGPACK_PP_FOR_122_C(MSGPACK_PP_BOOL(p(123, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_123(s, p, o, m) MSGPACK_PP_FOR_123_C(MSGPACK_PP_BOOL(p(124, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_124(s, p, o, m) MSGPACK_PP_FOR_124_C(MSGPACK_PP_BOOL(p(125, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_125(s, p, o, m) MSGPACK_PP_FOR_125_C(MSGPACK_PP_BOOL(p(126, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_126(s, p, o, m) MSGPACK_PP_FOR_126_C(MSGPACK_PP_BOOL(p(127, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_127(s, p, o, m) MSGPACK_PP_FOR_127_C(MSGPACK_PP_BOOL(p(128, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_128(s, p, o, m) MSGPACK_PP_FOR_128_C(MSGPACK_PP_BOOL(p(129, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_129(s, p, o, m) MSGPACK_PP_FOR_129_C(MSGPACK_PP_BOOL(p(130, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_130(s, p, o, m) MSGPACK_PP_FOR_130_C(MSGPACK_PP_BOOL(p(131, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_131(s, p, o, m) MSGPACK_PP_FOR_131_C(MSGPACK_PP_BOOL(p(132, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_132(s, p, o, m) MSGPACK_PP_FOR_132_C(MSGPACK_PP_BOOL(p(133, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_133(s, p, o, m) MSGPACK_PP_FOR_133_C(MSGPACK_PP_BOOL(p(134, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_134(s, p, o, m) MSGPACK_PP_FOR_134_C(MSGPACK_PP_BOOL(p(135, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_135(s, p, o, m) MSGPACK_PP_FOR_135_C(MSGPACK_PP_BOOL(p(136, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_136(s, p, o, m) MSGPACK_PP_FOR_136_C(MSGPACK_PP_BOOL(p(137, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_137(s, p, o, m) MSGPACK_PP_FOR_137_C(MSGPACK_PP_BOOL(p(138, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_138(s, p, o, m) MSGPACK_PP_FOR_138_C(MSGPACK_PP_BOOL(p(139, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_139(s, p, o, m) MSGPACK_PP_FOR_139_C(MSGPACK_PP_BOOL(p(140, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_140(s, p, o, m) MSGPACK_PP_FOR_140_C(MSGPACK_PP_BOOL(p(141, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_141(s, p, o, m) MSGPACK_PP_FOR_141_C(MSGPACK_PP_BOOL(p(142, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_142(s, p, o, m) MSGPACK_PP_FOR_142_C(MSGPACK_PP_BOOL(p(143, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_143(s, p, o, m) MSGPACK_PP_FOR_143_C(MSGPACK_PP_BOOL(p(144, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_144(s, p, o, m) MSGPACK_PP_FOR_144_C(MSGPACK_PP_BOOL(p(145, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_145(s, p, o, m) MSGPACK_PP_FOR_145_C(MSGPACK_PP_BOOL(p(146, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_146(s, p, o, m) MSGPACK_PP_FOR_146_C(MSGPACK_PP_BOOL(p(147, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_147(s, p, o, m) MSGPACK_PP_FOR_147_C(MSGPACK_PP_BOOL(p(148, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_148(s, p, o, m) MSGPACK_PP_FOR_148_C(MSGPACK_PP_BOOL(p(149, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_149(s, p, o, m) MSGPACK_PP_FOR_149_C(MSGPACK_PP_BOOL(p(150, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_150(s, p, o, m) MSGPACK_PP_FOR_150_C(MSGPACK_PP_BOOL(p(151, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_151(s, p, o, m) MSGPACK_PP_FOR_151_C(MSGPACK_PP_BOOL(p(152, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_152(s, p, o, m) MSGPACK_PP_FOR_152_C(MSGPACK_PP_BOOL(p(153, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_153(s, p, o, m) MSGPACK_PP_FOR_153_C(MSGPACK_PP_BOOL(p(154, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_154(s, p, o, m) MSGPACK_PP_FOR_154_C(MSGPACK_PP_BOOL(p(155, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_155(s, p, o, m) MSGPACK_PP_FOR_155_C(MSGPACK_PP_BOOL(p(156, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_156(s, p, o, m) MSGPACK_PP_FOR_156_C(MSGPACK_PP_BOOL(p(157, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_157(s, p, o, m) MSGPACK_PP_FOR_157_C(MSGPACK_PP_BOOL(p(158, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_158(s, p, o, m) MSGPACK_PP_FOR_158_C(MSGPACK_PP_BOOL(p(159, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_159(s, p, o, m) MSGPACK_PP_FOR_159_C(MSGPACK_PP_BOOL(p(160, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_160(s, p, o, m) MSGPACK_PP_FOR_160_C(MSGPACK_PP_BOOL(p(161, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_161(s, p, o, m) MSGPACK_PP_FOR_161_C(MSGPACK_PP_BOOL(p(162, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_162(s, p, o, m) MSGPACK_PP_FOR_162_C(MSGPACK_PP_BOOL(p(163, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_163(s, p, o, m) MSGPACK_PP_FOR_163_C(MSGPACK_PP_BOOL(p(164, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_164(s, p, o, m) MSGPACK_PP_FOR_164_C(MSGPACK_PP_BOOL(p(165, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_165(s, p, o, m) MSGPACK_PP_FOR_165_C(MSGPACK_PP_BOOL(p(166, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_166(s, p, o, m) MSGPACK_PP_FOR_166_C(MSGPACK_PP_BOOL(p(167, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_167(s, p, o, m) MSGPACK_PP_FOR_167_C(MSGPACK_PP_BOOL(p(168, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_168(s, p, o, m) MSGPACK_PP_FOR_168_C(MSGPACK_PP_BOOL(p(169, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_169(s, p, o, m) MSGPACK_PP_FOR_169_C(MSGPACK_PP_BOOL(p(170, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_170(s, p, o, m) MSGPACK_PP_FOR_170_C(MSGPACK_PP_BOOL(p(171, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_171(s, p, o, m) MSGPACK_PP_FOR_171_C(MSGPACK_PP_BOOL(p(172, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_172(s, p, o, m) MSGPACK_PP_FOR_172_C(MSGPACK_PP_BOOL(p(173, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_173(s, p, o, m) MSGPACK_PP_FOR_173_C(MSGPACK_PP_BOOL(p(174, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_174(s, p, o, m) MSGPACK_PP_FOR_174_C(MSGPACK_PP_BOOL(p(175, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_175(s, p, o, m) MSGPACK_PP_FOR_175_C(MSGPACK_PP_BOOL(p(176, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_176(s, p, o, m) MSGPACK_PP_FOR_176_C(MSGPACK_PP_BOOL(p(177, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_177(s, p, o, m) MSGPACK_PP_FOR_177_C(MSGPACK_PP_BOOL(p(178, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_178(s, p, o, m) MSGPACK_PP_FOR_178_C(MSGPACK_PP_BOOL(p(179, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_179(s, p, o, m) MSGPACK_PP_FOR_179_C(MSGPACK_PP_BOOL(p(180, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_180(s, p, o, m) MSGPACK_PP_FOR_180_C(MSGPACK_PP_BOOL(p(181, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_181(s, p, o, m) MSGPACK_PP_FOR_181_C(MSGPACK_PP_BOOL(p(182, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_182(s, p, o, m) MSGPACK_PP_FOR_182_C(MSGPACK_PP_BOOL(p(183, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_183(s, p, o, m) MSGPACK_PP_FOR_183_C(MSGPACK_PP_BOOL(p(184, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_184(s, p, o, m) MSGPACK_PP_FOR_184_C(MSGPACK_PP_BOOL(p(185, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_185(s, p, o, m) MSGPACK_PP_FOR_185_C(MSGPACK_PP_BOOL(p(186, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_186(s, p, o, m) MSGPACK_PP_FOR_186_C(MSGPACK_PP_BOOL(p(187, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_187(s, p, o, m) MSGPACK_PP_FOR_187_C(MSGPACK_PP_BOOL(p(188, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_188(s, p, o, m) MSGPACK_PP_FOR_188_C(MSGPACK_PP_BOOL(p(189, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_189(s, p, o, m) MSGPACK_PP_FOR_189_C(MSGPACK_PP_BOOL(p(190, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_190(s, p, o, m) MSGPACK_PP_FOR_190_C(MSGPACK_PP_BOOL(p(191, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_191(s, p, o, m) MSGPACK_PP_FOR_191_C(MSGPACK_PP_BOOL(p(192, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_192(s, p, o, m) MSGPACK_PP_FOR_192_C(MSGPACK_PP_BOOL(p(193, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_193(s, p, o, m) MSGPACK_PP_FOR_193_C(MSGPACK_PP_BOOL(p(194, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_194(s, p, o, m) MSGPACK_PP_FOR_194_C(MSGPACK_PP_BOOL(p(195, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_195(s, p, o, m) MSGPACK_PP_FOR_195_C(MSGPACK_PP_BOOL(p(196, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_196(s, p, o, m) MSGPACK_PP_FOR_196_C(MSGPACK_PP_BOOL(p(197, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_197(s, p, o, m) MSGPACK_PP_FOR_197_C(MSGPACK_PP_BOOL(p(198, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_198(s, p, o, m) MSGPACK_PP_FOR_198_C(MSGPACK_PP_BOOL(p(199, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_199(s, p, o, m) MSGPACK_PP_FOR_199_C(MSGPACK_PP_BOOL(p(200, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_200(s, p, o, m) MSGPACK_PP_FOR_200_C(MSGPACK_PP_BOOL(p(201, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_201(s, p, o, m) MSGPACK_PP_FOR_201_C(MSGPACK_PP_BOOL(p(202, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_202(s, p, o, m) MSGPACK_PP_FOR_202_C(MSGPACK_PP_BOOL(p(203, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_203(s, p, o, m) MSGPACK_PP_FOR_203_C(MSGPACK_PP_BOOL(p(204, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_204(s, p, o, m) MSGPACK_PP_FOR_204_C(MSGPACK_PP_BOOL(p(205, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_205(s, p, o, m) MSGPACK_PP_FOR_205_C(MSGPACK_PP_BOOL(p(206, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_206(s, p, o, m) MSGPACK_PP_FOR_206_C(MSGPACK_PP_BOOL(p(207, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_207(s, p, o, m) MSGPACK_PP_FOR_207_C(MSGPACK_PP_BOOL(p(208, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_208(s, p, o, m) MSGPACK_PP_FOR_208_C(MSGPACK_PP_BOOL(p(209, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_209(s, p, o, m) MSGPACK_PP_FOR_209_C(MSGPACK_PP_BOOL(p(210, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_210(s, p, o, m) MSGPACK_PP_FOR_210_C(MSGPACK_PP_BOOL(p(211, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_211(s, p, o, m) MSGPACK_PP_FOR_211_C(MSGPACK_PP_BOOL(p(212, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_212(s, p, o, m) MSGPACK_PP_FOR_212_C(MSGPACK_PP_BOOL(p(213, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_213(s, p, o, m) MSGPACK_PP_FOR_213_C(MSGPACK_PP_BOOL(p(214, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_214(s, p, o, m) MSGPACK_PP_FOR_214_C(MSGPACK_PP_BOOL(p(215, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_215(s, p, o, m) MSGPACK_PP_FOR_215_C(MSGPACK_PP_BOOL(p(216, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_216(s, p, o, m) MSGPACK_PP_FOR_216_C(MSGPACK_PP_BOOL(p(217, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_217(s, p, o, m) MSGPACK_PP_FOR_217_C(MSGPACK_PP_BOOL(p(218, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_218(s, p, o, m) MSGPACK_PP_FOR_218_C(MSGPACK_PP_BOOL(p(219, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_219(s, p, o, m) MSGPACK_PP_FOR_219_C(MSGPACK_PP_BOOL(p(220, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_220(s, p, o, m) MSGPACK_PP_FOR_220_C(MSGPACK_PP_BOOL(p(221, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_221(s, p, o, m) MSGPACK_PP_FOR_221_C(MSGPACK_PP_BOOL(p(222, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_222(s, p, o, m) MSGPACK_PP_FOR_222_C(MSGPACK_PP_BOOL(p(223, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_223(s, p, o, m) MSGPACK_PP_FOR_223_C(MSGPACK_PP_BOOL(p(224, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_224(s, p, o, m) MSGPACK_PP_FOR_224_C(MSGPACK_PP_BOOL(p(225, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_225(s, p, o, m) MSGPACK_PP_FOR_225_C(MSGPACK_PP_BOOL(p(226, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_226(s, p, o, m) MSGPACK_PP_FOR_226_C(MSGPACK_PP_BOOL(p(227, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_227(s, p, o, m) MSGPACK_PP_FOR_227_C(MSGPACK_PP_BOOL(p(228, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_228(s, p, o, m) MSGPACK_PP_FOR_228_C(MSGPACK_PP_BOOL(p(229, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_229(s, p, o, m) MSGPACK_PP_FOR_229_C(MSGPACK_PP_BOOL(p(230, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_230(s, p, o, m) MSGPACK_PP_FOR_230_C(MSGPACK_PP_BOOL(p(231, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_231(s, p, o, m) MSGPACK_PP_FOR_231_C(MSGPACK_PP_BOOL(p(232, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_232(s, p, o, m) MSGPACK_PP_FOR_232_C(MSGPACK_PP_BOOL(p(233, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_233(s, p, o, m) MSGPACK_PP_FOR_233_C(MSGPACK_PP_BOOL(p(234, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_234(s, p, o, m) MSGPACK_PP_FOR_234_C(MSGPACK_PP_BOOL(p(235, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_235(s, p, o, m) MSGPACK_PP_FOR_235_C(MSGPACK_PP_BOOL(p(236, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_236(s, p, o, m) MSGPACK_PP_FOR_236_C(MSGPACK_PP_BOOL(p(237, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_237(s, p, o, m) MSGPACK_PP_FOR_237_C(MSGPACK_PP_BOOL(p(238, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_238(s, p, o, m) MSGPACK_PP_FOR_238_C(MSGPACK_PP_BOOL(p(239, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_239(s, p, o, m) MSGPACK_PP_FOR_239_C(MSGPACK_PP_BOOL(p(240, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_240(s, p, o, m) MSGPACK_PP_FOR_240_C(MSGPACK_PP_BOOL(p(241, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_241(s, p, o, m) MSGPACK_PP_FOR_241_C(MSGPACK_PP_BOOL(p(242, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_242(s, p, o, m) MSGPACK_PP_FOR_242_C(MSGPACK_PP_BOOL(p(243, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_243(s, p, o, m) MSGPACK_PP_FOR_243_C(MSGPACK_PP_BOOL(p(244, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_244(s, p, o, m) MSGPACK_PP_FOR_244_C(MSGPACK_PP_BOOL(p(245, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_245(s, p, o, m) MSGPACK_PP_FOR_245_C(MSGPACK_PP_BOOL(p(246, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_246(s, p, o, m) MSGPACK_PP_FOR_246_C(MSGPACK_PP_BOOL(p(247, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_247(s, p, o, m) MSGPACK_PP_FOR_247_C(MSGPACK_PP_BOOL(p(248, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_248(s, p, o, m) MSGPACK_PP_FOR_248_C(MSGPACK_PP_BOOL(p(249, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_249(s, p, o, m) MSGPACK_PP_FOR_249_C(MSGPACK_PP_BOOL(p(250, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_250(s, p, o, m) MSGPACK_PP_FOR_250_C(MSGPACK_PP_BOOL(p(251, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_251(s, p, o, m) MSGPACK_PP_FOR_251_C(MSGPACK_PP_BOOL(p(252, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_252(s, p, o, m) MSGPACK_PP_FOR_252_C(MSGPACK_PP_BOOL(p(253, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_253(s, p, o, m) MSGPACK_PP_FOR_253_C(MSGPACK_PP_BOOL(p(254, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_254(s, p, o, m) MSGPACK_PP_FOR_254_C(MSGPACK_PP_BOOL(p(255, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_255(s, p, o, m) MSGPACK_PP_FOR_255_C(MSGPACK_PP_BOOL(p(256, s)), s, p, o, m)
+# define MSGPACK_PP_FOR_256(s, p, o, m) MSGPACK_PP_FOR_256_C(MSGPACK_PP_BOOL(p(257, s)), s, p, o, m)
+#
+# define MSGPACK_PP_FOR_1_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(2, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_2, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(2, s), p, o, m)
+# define MSGPACK_PP_FOR_2_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(3, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_3, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(3, s), p, o, m)
+# define MSGPACK_PP_FOR_3_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(4, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_4, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(4, s), p, o, m)
+# define MSGPACK_PP_FOR_4_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(5, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_5, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(5, s), p, o, m)
+# define MSGPACK_PP_FOR_5_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(6, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_6, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(6, s), p, o, m)
+# define MSGPACK_PP_FOR_6_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(7, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_7, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(7, s), p, o, m)
+# define MSGPACK_PP_FOR_7_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(8, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_8, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(8, s), p, o, m)
+# define MSGPACK_PP_FOR_8_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(9, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_9, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(9, s), p, o, m)
+# define MSGPACK_PP_FOR_9_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(10, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_10, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(10, s), p, o, m)
+# define MSGPACK_PP_FOR_10_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(11, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_11, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(11, s), p, o, m)
+# define MSGPACK_PP_FOR_11_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(12, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_12, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(12, s), p, o, m)
+# define MSGPACK_PP_FOR_12_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(13, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_13, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(13, s), p, o, m)
+# define MSGPACK_PP_FOR_13_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(14, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_14, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(14, s), p, o, m)
+# define MSGPACK_PP_FOR_14_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(15, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_15, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(15, s), p, o, m)
+# define MSGPACK_PP_FOR_15_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(16, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_16, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(16, s), p, o, m)
+# define MSGPACK_PP_FOR_16_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(17, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_17, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(17, s), p, o, m)
+# define MSGPACK_PP_FOR_17_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(18, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_18, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(18, s), p, o, m)
+# define MSGPACK_PP_FOR_18_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(19, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_19, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(19, s), p, o, m)
+# define MSGPACK_PP_FOR_19_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(20, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_20, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(20, s), p, o, m)
+# define MSGPACK_PP_FOR_20_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(21, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_21, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(21, s), p, o, m)
+# define MSGPACK_PP_FOR_21_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(22, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_22, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(22, s), p, o, m)
+# define MSGPACK_PP_FOR_22_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(23, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_23, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(23, s), p, o, m)
+# define MSGPACK_PP_FOR_23_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(24, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_24, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(24, s), p, o, m)
+# define MSGPACK_PP_FOR_24_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(25, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_25, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(25, s), p, o, m)
+# define MSGPACK_PP_FOR_25_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(26, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_26, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(26, s), p, o, m)
+# define MSGPACK_PP_FOR_26_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(27, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_27, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(27, s), p, o, m)
+# define MSGPACK_PP_FOR_27_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(28, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_28, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(28, s), p, o, m)
+# define MSGPACK_PP_FOR_28_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(29, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_29, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(29, s), p, o, m)
+# define MSGPACK_PP_FOR_29_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(30, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_30, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(30, s), p, o, m)
+# define MSGPACK_PP_FOR_30_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(31, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_31, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(31, s), p, o, m)
+# define MSGPACK_PP_FOR_31_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(32, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_32, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(32, s), p, o, m)
+# define MSGPACK_PP_FOR_32_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(33, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_33, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(33, s), p, o, m)
+# define MSGPACK_PP_FOR_33_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(34, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_34, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(34, s), p, o, m)
+# define MSGPACK_PP_FOR_34_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(35, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_35, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(35, s), p, o, m)
+# define MSGPACK_PP_FOR_35_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(36, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_36, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(36, s), p, o, m)
+# define MSGPACK_PP_FOR_36_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(37, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_37, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(37, s), p, o, m)
+# define MSGPACK_PP_FOR_37_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(38, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_38, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(38, s), p, o, m)
+# define MSGPACK_PP_FOR_38_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(39, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_39, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(39, s), p, o, m)
+# define MSGPACK_PP_FOR_39_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(40, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_40, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(40, s), p, o, m)
+# define MSGPACK_PP_FOR_40_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(41, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_41, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(41, s), p, o, m)
+# define MSGPACK_PP_FOR_41_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(42, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_42, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(42, s), p, o, m)
+# define MSGPACK_PP_FOR_42_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(43, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_43, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(43, s), p, o, m)
+# define MSGPACK_PP_FOR_43_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(44, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_44, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(44, s), p, o, m)
+# define MSGPACK_PP_FOR_44_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(45, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_45, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(45, s), p, o, m)
+# define MSGPACK_PP_FOR_45_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(46, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_46, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(46, s), p, o, m)
+# define MSGPACK_PP_FOR_46_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(47, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_47, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(47, s), p, o, m)
+# define MSGPACK_PP_FOR_47_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(48, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_48, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(48, s), p, o, m)
+# define MSGPACK_PP_FOR_48_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(49, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_49, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(49, s), p, o, m)
+# define MSGPACK_PP_FOR_49_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(50, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_50, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(50, s), p, o, m)
+# define MSGPACK_PP_FOR_50_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(51, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_51, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(51, s), p, o, m)
+# define MSGPACK_PP_FOR_51_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(52, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_52, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(52, s), p, o, m)
+# define MSGPACK_PP_FOR_52_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(53, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_53, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(53, s), p, o, m)
+# define MSGPACK_PP_FOR_53_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(54, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_54, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(54, s), p, o, m)
+# define MSGPACK_PP_FOR_54_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(55, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_55, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(55, s), p, o, m)
+# define MSGPACK_PP_FOR_55_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(56, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_56, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(56, s), p, o, m)
+# define MSGPACK_PP_FOR_56_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(57, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_57, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(57, s), p, o, m)
+# define MSGPACK_PP_FOR_57_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(58, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_58, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(58, s), p, o, m)
+# define MSGPACK_PP_FOR_58_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(59, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_59, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(59, s), p, o, m)
+# define MSGPACK_PP_FOR_59_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(60, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_60, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(60, s), p, o, m)
+# define MSGPACK_PP_FOR_60_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(61, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_61, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(61, s), p, o, m)
+# define MSGPACK_PP_FOR_61_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(62, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_62, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(62, s), p, o, m)
+# define MSGPACK_PP_FOR_62_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(63, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_63, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(63, s), p, o, m)
+# define MSGPACK_PP_FOR_63_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(64, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_64, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(64, s), p, o, m)
+# define MSGPACK_PP_FOR_64_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(65, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_65, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(65, s), p, o, m)
+# define MSGPACK_PP_FOR_65_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(66, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_66, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(66, s), p, o, m)
+# define MSGPACK_PP_FOR_66_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(67, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_67, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(67, s), p, o, m)
+# define MSGPACK_PP_FOR_67_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(68, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_68, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(68, s), p, o, m)
+# define MSGPACK_PP_FOR_68_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(69, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_69, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(69, s), p, o, m)
+# define MSGPACK_PP_FOR_69_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(70, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_70, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(70, s), p, o, m)
+# define MSGPACK_PP_FOR_70_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(71, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_71, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(71, s), p, o, m)
+# define MSGPACK_PP_FOR_71_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(72, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_72, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(72, s), p, o, m)
+# define MSGPACK_PP_FOR_72_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(73, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_73, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(73, s), p, o, m)
+# define MSGPACK_PP_FOR_73_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(74, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_74, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(74, s), p, o, m)
+# define MSGPACK_PP_FOR_74_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(75, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_75, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(75, s), p, o, m)
+# define MSGPACK_PP_FOR_75_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(76, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_76, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(76, s), p, o, m)
+# define MSGPACK_PP_FOR_76_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(77, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_77, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(77, s), p, o, m)
+# define MSGPACK_PP_FOR_77_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(78, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_78, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(78, s), p, o, m)
+# define MSGPACK_PP_FOR_78_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(79, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_79, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(79, s), p, o, m)
+# define MSGPACK_PP_FOR_79_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(80, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_80, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(80, s), p, o, m)
+# define MSGPACK_PP_FOR_80_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(81, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_81, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(81, s), p, o, m)
+# define MSGPACK_PP_FOR_81_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(82, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_82, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(82, s), p, o, m)
+# define MSGPACK_PP_FOR_82_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(83, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_83, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(83, s), p, o, m)
+# define MSGPACK_PP_FOR_83_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(84, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_84, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(84, s), p, o, m)
+# define MSGPACK_PP_FOR_84_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(85, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_85, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(85, s), p, o, m)
+# define MSGPACK_PP_FOR_85_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(86, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_86, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(86, s), p, o, m)
+# define MSGPACK_PP_FOR_86_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(87, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_87, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(87, s), p, o, m)
+# define MSGPACK_PP_FOR_87_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(88, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_88, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(88, s), p, o, m)
+# define MSGPACK_PP_FOR_88_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(89, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_89, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(89, s), p, o, m)
+# define MSGPACK_PP_FOR_89_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(90, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_90, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(90, s), p, o, m)
+# define MSGPACK_PP_FOR_90_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(91, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_91, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(91, s), p, o, m)
+# define MSGPACK_PP_FOR_91_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(92, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_92, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(92, s), p, o, m)
+# define MSGPACK_PP_FOR_92_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(93, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_93, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(93, s), p, o, m)
+# define MSGPACK_PP_FOR_93_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(94, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_94, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(94, s), p, o, m)
+# define MSGPACK_PP_FOR_94_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(95, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_95, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(95, s), p, o, m)
+# define MSGPACK_PP_FOR_95_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(96, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_96, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(96, s), p, o, m)
+# define MSGPACK_PP_FOR_96_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(97, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_97, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(97, s), p, o, m)
+# define MSGPACK_PP_FOR_97_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(98, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_98, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(98, s), p, o, m)
+# define MSGPACK_PP_FOR_98_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(99, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_99, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(99, s), p, o, m)
+# define MSGPACK_PP_FOR_99_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(100, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_100, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(100, s), p, o, m)
+# define MSGPACK_PP_FOR_100_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(101, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_101, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(101, s), p, o, m)
+# define MSGPACK_PP_FOR_101_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(102, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_102, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(102, s), p, o, m)
+# define MSGPACK_PP_FOR_102_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(103, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_103, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(103, s), p, o, m)
+# define MSGPACK_PP_FOR_103_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(104, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_104, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(104, s), p, o, m)
+# define MSGPACK_PP_FOR_104_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(105, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_105, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(105, s), p, o, m)
+# define MSGPACK_PP_FOR_105_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(106, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_106, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(106, s), p, o, m)
+# define MSGPACK_PP_FOR_106_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(107, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_107, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(107, s), p, o, m)
+# define MSGPACK_PP_FOR_107_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(108, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_108, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(108, s), p, o, m)
+# define MSGPACK_PP_FOR_108_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(109, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_109, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(109, s), p, o, m)
+# define MSGPACK_PP_FOR_109_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(110, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_110, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(110, s), p, o, m)
+# define MSGPACK_PP_FOR_110_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(111, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_111, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(111, s), p, o, m)
+# define MSGPACK_PP_FOR_111_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(112, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_112, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(112, s), p, o, m)
+# define MSGPACK_PP_FOR_112_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(113, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_113, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(113, s), p, o, m)
+# define MSGPACK_PP_FOR_113_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(114, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_114, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(114, s), p, o, m)
+# define MSGPACK_PP_FOR_114_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(115, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_115, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(115, s), p, o, m)
+# define MSGPACK_PP_FOR_115_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(116, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_116, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(116, s), p, o, m)
+# define MSGPACK_PP_FOR_116_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(117, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_117, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(117, s), p, o, m)
+# define MSGPACK_PP_FOR_117_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(118, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_118, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(118, s), p, o, m)
+# define MSGPACK_PP_FOR_118_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(119, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_119, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(119, s), p, o, m)
+# define MSGPACK_PP_FOR_119_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(120, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_120, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(120, s), p, o, m)
+# define MSGPACK_PP_FOR_120_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(121, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_121, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(121, s), p, o, m)
+# define MSGPACK_PP_FOR_121_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(122, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_122, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(122, s), p, o, m)
+# define MSGPACK_PP_FOR_122_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(123, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_123, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(123, s), p, o, m)
+# define MSGPACK_PP_FOR_123_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(124, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_124, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(124, s), p, o, m)
+# define MSGPACK_PP_FOR_124_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(125, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_125, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(125, s), p, o, m)
+# define MSGPACK_PP_FOR_125_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(126, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_126, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(126, s), p, o, m)
+# define MSGPACK_PP_FOR_126_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(127, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_127, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(127, s), p, o, m)
+# define MSGPACK_PP_FOR_127_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(128, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_128, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(128, s), p, o, m)
+# define MSGPACK_PP_FOR_128_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(129, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_129, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(129, s), p, o, m)
+# define MSGPACK_PP_FOR_129_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(130, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_130, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(130, s), p, o, m)
+# define MSGPACK_PP_FOR_130_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(131, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_131, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(131, s), p, o, m)
+# define MSGPACK_PP_FOR_131_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(132, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_132, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(132, s), p, o, m)
+# define MSGPACK_PP_FOR_132_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(133, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_133, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(133, s), p, o, m)
+# define MSGPACK_PP_FOR_133_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(134, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_134, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(134, s), p, o, m)
+# define MSGPACK_PP_FOR_134_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(135, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_135, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(135, s), p, o, m)
+# define MSGPACK_PP_FOR_135_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(136, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_136, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(136, s), p, o, m)
+# define MSGPACK_PP_FOR_136_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(137, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_137, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(137, s), p, o, m)
+# define MSGPACK_PP_FOR_137_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(138, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_138, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(138, s), p, o, m)
+# define MSGPACK_PP_FOR_138_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(139, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_139, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(139, s), p, o, m)
+# define MSGPACK_PP_FOR_139_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(140, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_140, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(140, s), p, o, m)
+# define MSGPACK_PP_FOR_140_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(141, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_141, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(141, s), p, o, m)
+# define MSGPACK_PP_FOR_141_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(142, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_142, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(142, s), p, o, m)
+# define MSGPACK_PP_FOR_142_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(143, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_143, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(143, s), p, o, m)
+# define MSGPACK_PP_FOR_143_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(144, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_144, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(144, s), p, o, m)
+# define MSGPACK_PP_FOR_144_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(145, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_145, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(145, s), p, o, m)
+# define MSGPACK_PP_FOR_145_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(146, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_146, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(146, s), p, o, m)
+# define MSGPACK_PP_FOR_146_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(147, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_147, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(147, s), p, o, m)
+# define MSGPACK_PP_FOR_147_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(148, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_148, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(148, s), p, o, m)
+# define MSGPACK_PP_FOR_148_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(149, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_149, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(149, s), p, o, m)
+# define MSGPACK_PP_FOR_149_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(150, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_150, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(150, s), p, o, m)
+# define MSGPACK_PP_FOR_150_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(151, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_151, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(151, s), p, o, m)
+# define MSGPACK_PP_FOR_151_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(152, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_152, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(152, s), p, o, m)
+# define MSGPACK_PP_FOR_152_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(153, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_153, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(153, s), p, o, m)
+# define MSGPACK_PP_FOR_153_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(154, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_154, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(154, s), p, o, m)
+# define MSGPACK_PP_FOR_154_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(155, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_155, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(155, s), p, o, m)
+# define MSGPACK_PP_FOR_155_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(156, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_156, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(156, s), p, o, m)
+# define MSGPACK_PP_FOR_156_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(157, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_157, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(157, s), p, o, m)
+# define MSGPACK_PP_FOR_157_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(158, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_158, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(158, s), p, o, m)
+# define MSGPACK_PP_FOR_158_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(159, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_159, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(159, s), p, o, m)
+# define MSGPACK_PP_FOR_159_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(160, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_160, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(160, s), p, o, m)
+# define MSGPACK_PP_FOR_160_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(161, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_161, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(161, s), p, o, m)
+# define MSGPACK_PP_FOR_161_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(162, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_162, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(162, s), p, o, m)
+# define MSGPACK_PP_FOR_162_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(163, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_163, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(163, s), p, o, m)
+# define MSGPACK_PP_FOR_163_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(164, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_164, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(164, s), p, o, m)
+# define MSGPACK_PP_FOR_164_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(165, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_165, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(165, s), p, o, m)
+# define MSGPACK_PP_FOR_165_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(166, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_166, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(166, s), p, o, m)
+# define MSGPACK_PP_FOR_166_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(167, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_167, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(167, s), p, o, m)
+# define MSGPACK_PP_FOR_167_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(168, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_168, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(168, s), p, o, m)
+# define MSGPACK_PP_FOR_168_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(169, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_169, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(169, s), p, o, m)
+# define MSGPACK_PP_FOR_169_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(170, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_170, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(170, s), p, o, m)
+# define MSGPACK_PP_FOR_170_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(171, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_171, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(171, s), p, o, m)
+# define MSGPACK_PP_FOR_171_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(172, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_172, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(172, s), p, o, m)
+# define MSGPACK_PP_FOR_172_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(173, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_173, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(173, s), p, o, m)
+# define MSGPACK_PP_FOR_173_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(174, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_174, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(174, s), p, o, m)
+# define MSGPACK_PP_FOR_174_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(175, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_175, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(175, s), p, o, m)
+# define MSGPACK_PP_FOR_175_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(176, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_176, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(176, s), p, o, m)
+# define MSGPACK_PP_FOR_176_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(177, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_177, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(177, s), p, o, m)
+# define MSGPACK_PP_FOR_177_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(178, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_178, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(178, s), p, o, m)
+# define MSGPACK_PP_FOR_178_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(179, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_179, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(179, s), p, o, m)
+# define MSGPACK_PP_FOR_179_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(180, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_180, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(180, s), p, o, m)
+# define MSGPACK_PP_FOR_180_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(181, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_181, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(181, s), p, o, m)
+# define MSGPACK_PP_FOR_181_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(182, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_182, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(182, s), p, o, m)
+# define MSGPACK_PP_FOR_182_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(183, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_183, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(183, s), p, o, m)
+# define MSGPACK_PP_FOR_183_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(184, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_184, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(184, s), p, o, m)
+# define MSGPACK_PP_FOR_184_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(185, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_185, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(185, s), p, o, m)
+# define MSGPACK_PP_FOR_185_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(186, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_186, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(186, s), p, o, m)
+# define MSGPACK_PP_FOR_186_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(187, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_187, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(187, s), p, o, m)
+# define MSGPACK_PP_FOR_187_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(188, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_188, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(188, s), p, o, m)
+# define MSGPACK_PP_FOR_188_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(189, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_189, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(189, s), p, o, m)
+# define MSGPACK_PP_FOR_189_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(190, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_190, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(190, s), p, o, m)
+# define MSGPACK_PP_FOR_190_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(191, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_191, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(191, s), p, o, m)
+# define MSGPACK_PP_FOR_191_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(192, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_192, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(192, s), p, o, m)
+# define MSGPACK_PP_FOR_192_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(193, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_193, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(193, s), p, o, m)
+# define MSGPACK_PP_FOR_193_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(194, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_194, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(194, s), p, o, m)
+# define MSGPACK_PP_FOR_194_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(195, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_195, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(195, s), p, o, m)
+# define MSGPACK_PP_FOR_195_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(196, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_196, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(196, s), p, o, m)
+# define MSGPACK_PP_FOR_196_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(197, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_197, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(197, s), p, o, m)
+# define MSGPACK_PP_FOR_197_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(198, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_198, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(198, s), p, o, m)
+# define MSGPACK_PP_FOR_198_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(199, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_199, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(199, s), p, o, m)
+# define MSGPACK_PP_FOR_199_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(200, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_200, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(200, s), p, o, m)
+# define MSGPACK_PP_FOR_200_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(201, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_201, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(201, s), p, o, m)
+# define MSGPACK_PP_FOR_201_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(202, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_202, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(202, s), p, o, m)
+# define MSGPACK_PP_FOR_202_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(203, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_203, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(203, s), p, o, m)
+# define MSGPACK_PP_FOR_203_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(204, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_204, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(204, s), p, o, m)
+# define MSGPACK_PP_FOR_204_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(205, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_205, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(205, s), p, o, m)
+# define MSGPACK_PP_FOR_205_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(206, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_206, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(206, s), p, o, m)
+# define MSGPACK_PP_FOR_206_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(207, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_207, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(207, s), p, o, m)
+# define MSGPACK_PP_FOR_207_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(208, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_208, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(208, s), p, o, m)
+# define MSGPACK_PP_FOR_208_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(209, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_209, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(209, s), p, o, m)
+# define MSGPACK_PP_FOR_209_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(210, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_210, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(210, s), p, o, m)
+# define MSGPACK_PP_FOR_210_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(211, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_211, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(211, s), p, o, m)
+# define MSGPACK_PP_FOR_211_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(212, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_212, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(212, s), p, o, m)
+# define MSGPACK_PP_FOR_212_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(213, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_213, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(213, s), p, o, m)
+# define MSGPACK_PP_FOR_213_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(214, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_214, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(214, s), p, o, m)
+# define MSGPACK_PP_FOR_214_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(215, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_215, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(215, s), p, o, m)
+# define MSGPACK_PP_FOR_215_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(216, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_216, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(216, s), p, o, m)
+# define MSGPACK_PP_FOR_216_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(217, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_217, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(217, s), p, o, m)
+# define MSGPACK_PP_FOR_217_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(218, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_218, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(218, s), p, o, m)
+# define MSGPACK_PP_FOR_218_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(219, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_219, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(219, s), p, o, m)
+# define MSGPACK_PP_FOR_219_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(220, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_220, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(220, s), p, o, m)
+# define MSGPACK_PP_FOR_220_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(221, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_221, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(221, s), p, o, m)
+# define MSGPACK_PP_FOR_221_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(222, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_222, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(222, s), p, o, m)
+# define MSGPACK_PP_FOR_222_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(223, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_223, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(223, s), p, o, m)
+# define MSGPACK_PP_FOR_223_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(224, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_224, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(224, s), p, o, m)
+# define MSGPACK_PP_FOR_224_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(225, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_225, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(225, s), p, o, m)
+# define MSGPACK_PP_FOR_225_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(226, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_226, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(226, s), p, o, m)
+# define MSGPACK_PP_FOR_226_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(227, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_227, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(227, s), p, o, m)
+# define MSGPACK_PP_FOR_227_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(228, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_228, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(228, s), p, o, m)
+# define MSGPACK_PP_FOR_228_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(229, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_229, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(229, s), p, o, m)
+# define MSGPACK_PP_FOR_229_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(230, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_230, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(230, s), p, o, m)
+# define MSGPACK_PP_FOR_230_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(231, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_231, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(231, s), p, o, m)
+# define MSGPACK_PP_FOR_231_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(232, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_232, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(232, s), p, o, m)
+# define MSGPACK_PP_FOR_232_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(233, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_233, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(233, s), p, o, m)
+# define MSGPACK_PP_FOR_233_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(234, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_234, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(234, s), p, o, m)
+# define MSGPACK_PP_FOR_234_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(235, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_235, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(235, s), p, o, m)
+# define MSGPACK_PP_FOR_235_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(236, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_236, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(236, s), p, o, m)
+# define MSGPACK_PP_FOR_236_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(237, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_237, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(237, s), p, o, m)
+# define MSGPACK_PP_FOR_237_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(238, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_238, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(238, s), p, o, m)
+# define MSGPACK_PP_FOR_238_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(239, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_239, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(239, s), p, o, m)
+# define MSGPACK_PP_FOR_239_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(240, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_240, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(240, s), p, o, m)
+# define MSGPACK_PP_FOR_240_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(241, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_241, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(241, s), p, o, m)
+# define MSGPACK_PP_FOR_241_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(242, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_242, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(242, s), p, o, m)
+# define MSGPACK_PP_FOR_242_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(243, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_243, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(243, s), p, o, m)
+# define MSGPACK_PP_FOR_243_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(244, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_244, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(244, s), p, o, m)
+# define MSGPACK_PP_FOR_244_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(245, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_245, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(245, s), p, o, m)
+# define MSGPACK_PP_FOR_245_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(246, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_246, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(246, s), p, o, m)
+# define MSGPACK_PP_FOR_246_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(247, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_247, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(247, s), p, o, m)
+# define MSGPACK_PP_FOR_247_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(248, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_248, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(248, s), p, o, m)
+# define MSGPACK_PP_FOR_248_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(249, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_249, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(249, s), p, o, m)
+# define MSGPACK_PP_FOR_249_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(250, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_250, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(250, s), p, o, m)
+# define MSGPACK_PP_FOR_250_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(251, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_251, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(251, s), p, o, m)
+# define MSGPACK_PP_FOR_251_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(252, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_252, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(252, s), p, o, m)
+# define MSGPACK_PP_FOR_252_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(253, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_253, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(253, s), p, o, m)
+# define MSGPACK_PP_FOR_253_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(254, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_254, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(254, s), p, o, m)
+# define MSGPACK_PP_FOR_254_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(255, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_255, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(255, s), p, o, m)
+# define MSGPACK_PP_FOR_255_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(256, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_256, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(256, s), p, o, m)
+# define MSGPACK_PP_FOR_256_C(c, s, p, o, m) MSGPACK_PP_IIF(c, m, MSGPACK_PP_TUPLE_EAT_2)(257, s) MSGPACK_PP_IIF(c, MSGPACK_PP_FOR_257, MSGPACK_PP_TUPLE_EAT_4)(MSGPACK_PP_EXPR_IIF(c, o)(257, s), p, o, m)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/repetition/detail/msvc/for.hpp b/third_party/msgpack/include/msgpack/preprocessor/repetition/detail/msvc/for.hpp
new file mode 100644
index 0000000000..40ff4c0f55
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/repetition/detail/msvc/for.hpp
@@ -0,0 +1,277 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_REPETITION_DETAIL_MSVC_FOR_HPP
+# define MSGPACK_PREPROCESSOR_REPETITION_DETAIL_MSVC_FOR_HPP
+#
+# include <msgpack/preprocessor/control/if.hpp>
+# include <msgpack/preprocessor/tuple/eat.hpp>
+#
+# define MSGPACK_PP_FOR_1(s, p, o, m) MSGPACK_PP_IF(p(2, s), m, MSGPACK_PP_TUPLE_EAT_2)(2, s) MSGPACK_PP_IF(p(2, s), MSGPACK_PP_FOR_2, MSGPACK_PP_TUPLE_EAT_4)(o(2, s), p, o, m)
+# define MSGPACK_PP_FOR_2(s, p, o, m) MSGPACK_PP_IF(p(3, s), m, MSGPACK_PP_TUPLE_EAT_2)(3, s) MSGPACK_PP_IF(p(3, s), MSGPACK_PP_FOR_3, MSGPACK_PP_TUPLE_EAT_4)(o(3, s), p, o, m)
+# define MSGPACK_PP_FOR_3(s, p, o, m) MSGPACK_PP_IF(p(4, s), m, MSGPACK_PP_TUPLE_EAT_2)(4, s) MSGPACK_PP_IF(p(4, s), MSGPACK_PP_FOR_4, MSGPACK_PP_TUPLE_EAT_4)(o(4, s), p, o, m)
+# define MSGPACK_PP_FOR_4(s, p, o, m) MSGPACK_PP_IF(p(5, s), m, MSGPACK_PP_TUPLE_EAT_2)(5, s) MSGPACK_PP_IF(p(5, s), MSGPACK_PP_FOR_5, MSGPACK_PP_TUPLE_EAT_4)(o(5, s), p, o, m)
+# define MSGPACK_PP_FOR_5(s, p, o, m) MSGPACK_PP_IF(p(6, s), m, MSGPACK_PP_TUPLE_EAT_2)(6, s) MSGPACK_PP_IF(p(6, s), MSGPACK_PP_FOR_6, MSGPACK_PP_TUPLE_EAT_4)(o(6, s), p, o, m)
+# define MSGPACK_PP_FOR_6(s, p, o, m) MSGPACK_PP_IF(p(7, s), m, MSGPACK_PP_TUPLE_EAT_2)(7, s) MSGPACK_PP_IF(p(7, s), MSGPACK_PP_FOR_7, MSGPACK_PP_TUPLE_EAT_4)(o(7, s), p, o, m)
+# define MSGPACK_PP_FOR_7(s, p, o, m) MSGPACK_PP_IF(p(8, s), m, MSGPACK_PP_TUPLE_EAT_2)(8, s) MSGPACK_PP_IF(p(8, s), MSGPACK_PP_FOR_8, MSGPACK_PP_TUPLE_EAT_4)(o(8, s), p, o, m)
+# define MSGPACK_PP_FOR_8(s, p, o, m) MSGPACK_PP_IF(p(9, s), m, MSGPACK_PP_TUPLE_EAT_2)(9, s) MSGPACK_PP_IF(p(9, s), MSGPACK_PP_FOR_9, MSGPACK_PP_TUPLE_EAT_4)(o(9, s), p, o, m)
+# define MSGPACK_PP_FOR_9(s, p, o, m) MSGPACK_PP_IF(p(10, s), m, MSGPACK_PP_TUPLE_EAT_2)(10, s) MSGPACK_PP_IF(p(10, s), MSGPACK_PP_FOR_10, MSGPACK_PP_TUPLE_EAT_4)(o(10, s), p, o, m)
+# define MSGPACK_PP_FOR_10(s, p, o, m) MSGPACK_PP_IF(p(11, s), m, MSGPACK_PP_TUPLE_EAT_2)(11, s) MSGPACK_PP_IF(p(11, s), MSGPACK_PP_FOR_11, MSGPACK_PP_TUPLE_EAT_4)(o(11, s), p, o, m)
+# define MSGPACK_PP_FOR_11(s, p, o, m) MSGPACK_PP_IF(p(12, s), m, MSGPACK_PP_TUPLE_EAT_2)(12, s) MSGPACK_PP_IF(p(12, s), MSGPACK_PP_FOR_12, MSGPACK_PP_TUPLE_EAT_4)(o(12, s), p, o, m)
+# define MSGPACK_PP_FOR_12(s, p, o, m) MSGPACK_PP_IF(p(13, s), m, MSGPACK_PP_TUPLE_EAT_2)(13, s) MSGPACK_PP_IF(p(13, s), MSGPACK_PP_FOR_13, MSGPACK_PP_TUPLE_EAT_4)(o(13, s), p, o, m)
+# define MSGPACK_PP_FOR_13(s, p, o, m) MSGPACK_PP_IF(p(14, s), m, MSGPACK_PP_TUPLE_EAT_2)(14, s) MSGPACK_PP_IF(p(14, s), MSGPACK_PP_FOR_14, MSGPACK_PP_TUPLE_EAT_4)(o(14, s), p, o, m)
+# define MSGPACK_PP_FOR_14(s, p, o, m) MSGPACK_PP_IF(p(15, s), m, MSGPACK_PP_TUPLE_EAT_2)(15, s) MSGPACK_PP_IF(p(15, s), MSGPACK_PP_FOR_15, MSGPACK_PP_TUPLE_EAT_4)(o(15, s), p, o, m)
+# define MSGPACK_PP_FOR_15(s, p, o, m) MSGPACK_PP_IF(p(16, s), m, MSGPACK_PP_TUPLE_EAT_2)(16, s) MSGPACK_PP_IF(p(16, s), MSGPACK_PP_FOR_16, MSGPACK_PP_TUPLE_EAT_4)(o(16, s), p, o, m)
+# define MSGPACK_PP_FOR_16(s, p, o, m) MSGPACK_PP_IF(p(17, s), m, MSGPACK_PP_TUPLE_EAT_2)(17, s) MSGPACK_PP_IF(p(17, s), MSGPACK_PP_FOR_17, MSGPACK_PP_TUPLE_EAT_4)(o(17, s), p, o, m)
+# define MSGPACK_PP_FOR_17(s, p, o, m) MSGPACK_PP_IF(p(18, s), m, MSGPACK_PP_TUPLE_EAT_2)(18, s) MSGPACK_PP_IF(p(18, s), MSGPACK_PP_FOR_18, MSGPACK_PP_TUPLE_EAT_4)(o(18, s), p, o, m)
+# define MSGPACK_PP_FOR_18(s, p, o, m) MSGPACK_PP_IF(p(19, s), m, MSGPACK_PP_TUPLE_EAT_2)(19, s) MSGPACK_PP_IF(p(19, s), MSGPACK_PP_FOR_19, MSGPACK_PP_TUPLE_EAT_4)(o(19, s), p, o, m)
+# define MSGPACK_PP_FOR_19(s, p, o, m) MSGPACK_PP_IF(p(20, s), m, MSGPACK_PP_TUPLE_EAT_2)(20, s) MSGPACK_PP_IF(p(20, s), MSGPACK_PP_FOR_20, MSGPACK_PP_TUPLE_EAT_4)(o(20, s), p, o, m)
+# define MSGPACK_PP_FOR_20(s, p, o, m) MSGPACK_PP_IF(p(21, s), m, MSGPACK_PP_TUPLE_EAT_2)(21, s) MSGPACK_PP_IF(p(21, s), MSGPACK_PP_FOR_21, MSGPACK_PP_TUPLE_EAT_4)(o(21, s), p, o, m)
+# define MSGPACK_PP_FOR_21(s, p, o, m) MSGPACK_PP_IF(p(22, s), m, MSGPACK_PP_TUPLE_EAT_2)(22, s) MSGPACK_PP_IF(p(22, s), MSGPACK_PP_FOR_22, MSGPACK_PP_TUPLE_EAT_4)(o(22, s), p, o, m)
+# define MSGPACK_PP_FOR_22(s, p, o, m) MSGPACK_PP_IF(p(23, s), m, MSGPACK_PP_TUPLE_EAT_2)(23, s) MSGPACK_PP_IF(p(23, s), MSGPACK_PP_FOR_23, MSGPACK_PP_TUPLE_EAT_4)(o(23, s), p, o, m)
+# define MSGPACK_PP_FOR_23(s, p, o, m) MSGPACK_PP_IF(p(24, s), m, MSGPACK_PP_TUPLE_EAT_2)(24, s) MSGPACK_PP_IF(p(24, s), MSGPACK_PP_FOR_24, MSGPACK_PP_TUPLE_EAT_4)(o(24, s), p, o, m)
+# define MSGPACK_PP_FOR_24(s, p, o, m) MSGPACK_PP_IF(p(25, s), m, MSGPACK_PP_TUPLE_EAT_2)(25, s) MSGPACK_PP_IF(p(25, s), MSGPACK_PP_FOR_25, MSGPACK_PP_TUPLE_EAT_4)(o(25, s), p, o, m)
+# define MSGPACK_PP_FOR_25(s, p, o, m) MSGPACK_PP_IF(p(26, s), m, MSGPACK_PP_TUPLE_EAT_2)(26, s) MSGPACK_PP_IF(p(26, s), MSGPACK_PP_FOR_26, MSGPACK_PP_TUPLE_EAT_4)(o(26, s), p, o, m)
+# define MSGPACK_PP_FOR_26(s, p, o, m) MSGPACK_PP_IF(p(27, s), m, MSGPACK_PP_TUPLE_EAT_2)(27, s) MSGPACK_PP_IF(p(27, s), MSGPACK_PP_FOR_27, MSGPACK_PP_TUPLE_EAT_4)(o(27, s), p, o, m)
+# define MSGPACK_PP_FOR_27(s, p, o, m) MSGPACK_PP_IF(p(28, s), m, MSGPACK_PP_TUPLE_EAT_2)(28, s) MSGPACK_PP_IF(p(28, s), MSGPACK_PP_FOR_28, MSGPACK_PP_TUPLE_EAT_4)(o(28, s), p, o, m)
+# define MSGPACK_PP_FOR_28(s, p, o, m) MSGPACK_PP_IF(p(29, s), m, MSGPACK_PP_TUPLE_EAT_2)(29, s) MSGPACK_PP_IF(p(29, s), MSGPACK_PP_FOR_29, MSGPACK_PP_TUPLE_EAT_4)(o(29, s), p, o, m)
+# define MSGPACK_PP_FOR_29(s, p, o, m) MSGPACK_PP_IF(p(30, s), m, MSGPACK_PP_TUPLE_EAT_2)(30, s) MSGPACK_PP_IF(p(30, s), MSGPACK_PP_FOR_30, MSGPACK_PP_TUPLE_EAT_4)(o(30, s), p, o, m)
+# define MSGPACK_PP_FOR_30(s, p, o, m) MSGPACK_PP_IF(p(31, s), m, MSGPACK_PP_TUPLE_EAT_2)(31, s) MSGPACK_PP_IF(p(31, s), MSGPACK_PP_FOR_31, MSGPACK_PP_TUPLE_EAT_4)(o(31, s), p, o, m)
+# define MSGPACK_PP_FOR_31(s, p, o, m) MSGPACK_PP_IF(p(32, s), m, MSGPACK_PP_TUPLE_EAT_2)(32, s) MSGPACK_PP_IF(p(32, s), MSGPACK_PP_FOR_32, MSGPACK_PP_TUPLE_EAT_4)(o(32, s), p, o, m)
+# define MSGPACK_PP_FOR_32(s, p, o, m) MSGPACK_PP_IF(p(33, s), m, MSGPACK_PP_TUPLE_EAT_2)(33, s) MSGPACK_PP_IF(p(33, s), MSGPACK_PP_FOR_33, MSGPACK_PP_TUPLE_EAT_4)(o(33, s), p, o, m)
+# define MSGPACK_PP_FOR_33(s, p, o, m) MSGPACK_PP_IF(p(34, s), m, MSGPACK_PP_TUPLE_EAT_2)(34, s) MSGPACK_PP_IF(p(34, s), MSGPACK_PP_FOR_34, MSGPACK_PP_TUPLE_EAT_4)(o(34, s), p, o, m)
+# define MSGPACK_PP_FOR_34(s, p, o, m) MSGPACK_PP_IF(p(35, s), m, MSGPACK_PP_TUPLE_EAT_2)(35, s) MSGPACK_PP_IF(p(35, s), MSGPACK_PP_FOR_35, MSGPACK_PP_TUPLE_EAT_4)(o(35, s), p, o, m)
+# define MSGPACK_PP_FOR_35(s, p, o, m) MSGPACK_PP_IF(p(36, s), m, MSGPACK_PP_TUPLE_EAT_2)(36, s) MSGPACK_PP_IF(p(36, s), MSGPACK_PP_FOR_36, MSGPACK_PP_TUPLE_EAT_4)(o(36, s), p, o, m)
+# define MSGPACK_PP_FOR_36(s, p, o, m) MSGPACK_PP_IF(p(37, s), m, MSGPACK_PP_TUPLE_EAT_2)(37, s) MSGPACK_PP_IF(p(37, s), MSGPACK_PP_FOR_37, MSGPACK_PP_TUPLE_EAT_4)(o(37, s), p, o, m)
+# define MSGPACK_PP_FOR_37(s, p, o, m) MSGPACK_PP_IF(p(38, s), m, MSGPACK_PP_TUPLE_EAT_2)(38, s) MSGPACK_PP_IF(p(38, s), MSGPACK_PP_FOR_38, MSGPACK_PP_TUPLE_EAT_4)(o(38, s), p, o, m)
+# define MSGPACK_PP_FOR_38(s, p, o, m) MSGPACK_PP_IF(p(39, s), m, MSGPACK_PP_TUPLE_EAT_2)(39, s) MSGPACK_PP_IF(p(39, s), MSGPACK_PP_FOR_39, MSGPACK_PP_TUPLE_EAT_4)(o(39, s), p, o, m)
+# define MSGPACK_PP_FOR_39(s, p, o, m) MSGPACK_PP_IF(p(40, s), m, MSGPACK_PP_TUPLE_EAT_2)(40, s) MSGPACK_PP_IF(p(40, s), MSGPACK_PP_FOR_40, MSGPACK_PP_TUPLE_EAT_4)(o(40, s), p, o, m)
+# define MSGPACK_PP_FOR_40(s, p, o, m) MSGPACK_PP_IF(p(41, s), m, MSGPACK_PP_TUPLE_EAT_2)(41, s) MSGPACK_PP_IF(p(41, s), MSGPACK_PP_FOR_41, MSGPACK_PP_TUPLE_EAT_4)(o(41, s), p, o, m)
+# define MSGPACK_PP_FOR_41(s, p, o, m) MSGPACK_PP_IF(p(42, s), m, MSGPACK_PP_TUPLE_EAT_2)(42, s) MSGPACK_PP_IF(p(42, s), MSGPACK_PP_FOR_42, MSGPACK_PP_TUPLE_EAT_4)(o(42, s), p, o, m)
+# define MSGPACK_PP_FOR_42(s, p, o, m) MSGPACK_PP_IF(p(43, s), m, MSGPACK_PP_TUPLE_EAT_2)(43, s) MSGPACK_PP_IF(p(43, s), MSGPACK_PP_FOR_43, MSGPACK_PP_TUPLE_EAT_4)(o(43, s), p, o, m)
+# define MSGPACK_PP_FOR_43(s, p, o, m) MSGPACK_PP_IF(p(44, s), m, MSGPACK_PP_TUPLE_EAT_2)(44, s) MSGPACK_PP_IF(p(44, s), MSGPACK_PP_FOR_44, MSGPACK_PP_TUPLE_EAT_4)(o(44, s), p, o, m)
+# define MSGPACK_PP_FOR_44(s, p, o, m) MSGPACK_PP_IF(p(45, s), m, MSGPACK_PP_TUPLE_EAT_2)(45, s) MSGPACK_PP_IF(p(45, s), MSGPACK_PP_FOR_45, MSGPACK_PP_TUPLE_EAT_4)(o(45, s), p, o, m)
+# define MSGPACK_PP_FOR_45(s, p, o, m) MSGPACK_PP_IF(p(46, s), m, MSGPACK_PP_TUPLE_EAT_2)(46, s) MSGPACK_PP_IF(p(46, s), MSGPACK_PP_FOR_46, MSGPACK_PP_TUPLE_EAT_4)(o(46, s), p, o, m)
+# define MSGPACK_PP_FOR_46(s, p, o, m) MSGPACK_PP_IF(p(47, s), m, MSGPACK_PP_TUPLE_EAT_2)(47, s) MSGPACK_PP_IF(p(47, s), MSGPACK_PP_FOR_47, MSGPACK_PP_TUPLE_EAT_4)(o(47, s), p, o, m)
+# define MSGPACK_PP_FOR_47(s, p, o, m) MSGPACK_PP_IF(p(48, s), m, MSGPACK_PP_TUPLE_EAT_2)(48, s) MSGPACK_PP_IF(p(48, s), MSGPACK_PP_FOR_48, MSGPACK_PP_TUPLE_EAT_4)(o(48, s), p, o, m)
+# define MSGPACK_PP_FOR_48(s, p, o, m) MSGPACK_PP_IF(p(49, s), m, MSGPACK_PP_TUPLE_EAT_2)(49, s) MSGPACK_PP_IF(p(49, s), MSGPACK_PP_FOR_49, MSGPACK_PP_TUPLE_EAT_4)(o(49, s), p, o, m)
+# define MSGPACK_PP_FOR_49(s, p, o, m) MSGPACK_PP_IF(p(50, s), m, MSGPACK_PP_TUPLE_EAT_2)(50, s) MSGPACK_PP_IF(p(50, s), MSGPACK_PP_FOR_50, MSGPACK_PP_TUPLE_EAT_4)(o(50, s), p, o, m)
+# define MSGPACK_PP_FOR_50(s, p, o, m) MSGPACK_PP_IF(p(51, s), m, MSGPACK_PP_TUPLE_EAT_2)(51, s) MSGPACK_PP_IF(p(51, s), MSGPACK_PP_FOR_51, MSGPACK_PP_TUPLE_EAT_4)(o(51, s), p, o, m)
+# define MSGPACK_PP_FOR_51(s, p, o, m) MSGPACK_PP_IF(p(52, s), m, MSGPACK_PP_TUPLE_EAT_2)(52, s) MSGPACK_PP_IF(p(52, s), MSGPACK_PP_FOR_52, MSGPACK_PP_TUPLE_EAT_4)(o(52, s), p, o, m)
+# define MSGPACK_PP_FOR_52(s, p, o, m) MSGPACK_PP_IF(p(53, s), m, MSGPACK_PP_TUPLE_EAT_2)(53, s) MSGPACK_PP_IF(p(53, s), MSGPACK_PP_FOR_53, MSGPACK_PP_TUPLE_EAT_4)(o(53, s), p, o, m)
+# define MSGPACK_PP_FOR_53(s, p, o, m) MSGPACK_PP_IF(p(54, s), m, MSGPACK_PP_TUPLE_EAT_2)(54, s) MSGPACK_PP_IF(p(54, s), MSGPACK_PP_FOR_54, MSGPACK_PP_TUPLE_EAT_4)(o(54, s), p, o, m)
+# define MSGPACK_PP_FOR_54(s, p, o, m) MSGPACK_PP_IF(p(55, s), m, MSGPACK_PP_TUPLE_EAT_2)(55, s) MSGPACK_PP_IF(p(55, s), MSGPACK_PP_FOR_55, MSGPACK_PP_TUPLE_EAT_4)(o(55, s), p, o, m)
+# define MSGPACK_PP_FOR_55(s, p, o, m) MSGPACK_PP_IF(p(56, s), m, MSGPACK_PP_TUPLE_EAT_2)(56, s) MSGPACK_PP_IF(p(56, s), MSGPACK_PP_FOR_56, MSGPACK_PP_TUPLE_EAT_4)(o(56, s), p, o, m)
+# define MSGPACK_PP_FOR_56(s, p, o, m) MSGPACK_PP_IF(p(57, s), m, MSGPACK_PP_TUPLE_EAT_2)(57, s) MSGPACK_PP_IF(p(57, s), MSGPACK_PP_FOR_57, MSGPACK_PP_TUPLE_EAT_4)(o(57, s), p, o, m)
+# define MSGPACK_PP_FOR_57(s, p, o, m) MSGPACK_PP_IF(p(58, s), m, MSGPACK_PP_TUPLE_EAT_2)(58, s) MSGPACK_PP_IF(p(58, s), MSGPACK_PP_FOR_58, MSGPACK_PP_TUPLE_EAT_4)(o(58, s), p, o, m)
+# define MSGPACK_PP_FOR_58(s, p, o, m) MSGPACK_PP_IF(p(59, s), m, MSGPACK_PP_TUPLE_EAT_2)(59, s) MSGPACK_PP_IF(p(59, s), MSGPACK_PP_FOR_59, MSGPACK_PP_TUPLE_EAT_4)(o(59, s), p, o, m)
+# define MSGPACK_PP_FOR_59(s, p, o, m) MSGPACK_PP_IF(p(60, s), m, MSGPACK_PP_TUPLE_EAT_2)(60, s) MSGPACK_PP_IF(p(60, s), MSGPACK_PP_FOR_60, MSGPACK_PP_TUPLE_EAT_4)(o(60, s), p, o, m)
+# define MSGPACK_PP_FOR_60(s, p, o, m) MSGPACK_PP_IF(p(61, s), m, MSGPACK_PP_TUPLE_EAT_2)(61, s) MSGPACK_PP_IF(p(61, s), MSGPACK_PP_FOR_61, MSGPACK_PP_TUPLE_EAT_4)(o(61, s), p, o, m)
+# define MSGPACK_PP_FOR_61(s, p, o, m) MSGPACK_PP_IF(p(62, s), m, MSGPACK_PP_TUPLE_EAT_2)(62, s) MSGPACK_PP_IF(p(62, s), MSGPACK_PP_FOR_62, MSGPACK_PP_TUPLE_EAT_4)(o(62, s), p, o, m)
+# define MSGPACK_PP_FOR_62(s, p, o, m) MSGPACK_PP_IF(p(63, s), m, MSGPACK_PP_TUPLE_EAT_2)(63, s) MSGPACK_PP_IF(p(63, s), MSGPACK_PP_FOR_63, MSGPACK_PP_TUPLE_EAT_4)(o(63, s), p, o, m)
+# define MSGPACK_PP_FOR_63(s, p, o, m) MSGPACK_PP_IF(p(64, s), m, MSGPACK_PP_TUPLE_EAT_2)(64, s) MSGPACK_PP_IF(p(64, s), MSGPACK_PP_FOR_64, MSGPACK_PP_TUPLE_EAT_4)(o(64, s), p, o, m)
+# define MSGPACK_PP_FOR_64(s, p, o, m) MSGPACK_PP_IF(p(65, s), m, MSGPACK_PP_TUPLE_EAT_2)(65, s) MSGPACK_PP_IF(p(65, s), MSGPACK_PP_FOR_65, MSGPACK_PP_TUPLE_EAT_4)(o(65, s), p, o, m)
+# define MSGPACK_PP_FOR_65(s, p, o, m) MSGPACK_PP_IF(p(66, s), m, MSGPACK_PP_TUPLE_EAT_2)(66, s) MSGPACK_PP_IF(p(66, s), MSGPACK_PP_FOR_66, MSGPACK_PP_TUPLE_EAT_4)(o(66, s), p, o, m)
+# define MSGPACK_PP_FOR_66(s, p, o, m) MSGPACK_PP_IF(p(67, s), m, MSGPACK_PP_TUPLE_EAT_2)(67, s) MSGPACK_PP_IF(p(67, s), MSGPACK_PP_FOR_67, MSGPACK_PP_TUPLE_EAT_4)(o(67, s), p, o, m)
+# define MSGPACK_PP_FOR_67(s, p, o, m) MSGPACK_PP_IF(p(68, s), m, MSGPACK_PP_TUPLE_EAT_2)(68, s) MSGPACK_PP_IF(p(68, s), MSGPACK_PP_FOR_68, MSGPACK_PP_TUPLE_EAT_4)(o(68, s), p, o, m)
+# define MSGPACK_PP_FOR_68(s, p, o, m) MSGPACK_PP_IF(p(69, s), m, MSGPACK_PP_TUPLE_EAT_2)(69, s) MSGPACK_PP_IF(p(69, s), MSGPACK_PP_FOR_69, MSGPACK_PP_TUPLE_EAT_4)(o(69, s), p, o, m)
+# define MSGPACK_PP_FOR_69(s, p, o, m) MSGPACK_PP_IF(p(70, s), m, MSGPACK_PP_TUPLE_EAT_2)(70, s) MSGPACK_PP_IF(p(70, s), MSGPACK_PP_FOR_70, MSGPACK_PP_TUPLE_EAT_4)(o(70, s), p, o, m)
+# define MSGPACK_PP_FOR_70(s, p, o, m) MSGPACK_PP_IF(p(71, s), m, MSGPACK_PP_TUPLE_EAT_2)(71, s) MSGPACK_PP_IF(p(71, s), MSGPACK_PP_FOR_71, MSGPACK_PP_TUPLE_EAT_4)(o(71, s), p, o, m)
+# define MSGPACK_PP_FOR_71(s, p, o, m) MSGPACK_PP_IF(p(72, s), m, MSGPACK_PP_TUPLE_EAT_2)(72, s) MSGPACK_PP_IF(p(72, s), MSGPACK_PP_FOR_72, MSGPACK_PP_TUPLE_EAT_4)(o(72, s), p, o, m)
+# define MSGPACK_PP_FOR_72(s, p, o, m) MSGPACK_PP_IF(p(73, s), m, MSGPACK_PP_TUPLE_EAT_2)(73, s) MSGPACK_PP_IF(p(73, s), MSGPACK_PP_FOR_73, MSGPACK_PP_TUPLE_EAT_4)(o(73, s), p, o, m)
+# define MSGPACK_PP_FOR_73(s, p, o, m) MSGPACK_PP_IF(p(74, s), m, MSGPACK_PP_TUPLE_EAT_2)(74, s) MSGPACK_PP_IF(p(74, s), MSGPACK_PP_FOR_74, MSGPACK_PP_TUPLE_EAT_4)(o(74, s), p, o, m)
+# define MSGPACK_PP_FOR_74(s, p, o, m) MSGPACK_PP_IF(p(75, s), m, MSGPACK_PP_TUPLE_EAT_2)(75, s) MSGPACK_PP_IF(p(75, s), MSGPACK_PP_FOR_75, MSGPACK_PP_TUPLE_EAT_4)(o(75, s), p, o, m)
+# define MSGPACK_PP_FOR_75(s, p, o, m) MSGPACK_PP_IF(p(76, s), m, MSGPACK_PP_TUPLE_EAT_2)(76, s) MSGPACK_PP_IF(p(76, s), MSGPACK_PP_FOR_76, MSGPACK_PP_TUPLE_EAT_4)(o(76, s), p, o, m)
+# define MSGPACK_PP_FOR_76(s, p, o, m) MSGPACK_PP_IF(p(77, s), m, MSGPACK_PP_TUPLE_EAT_2)(77, s) MSGPACK_PP_IF(p(77, s), MSGPACK_PP_FOR_77, MSGPACK_PP_TUPLE_EAT_4)(o(77, s), p, o, m)
+# define MSGPACK_PP_FOR_77(s, p, o, m) MSGPACK_PP_IF(p(78, s), m, MSGPACK_PP_TUPLE_EAT_2)(78, s) MSGPACK_PP_IF(p(78, s), MSGPACK_PP_FOR_78, MSGPACK_PP_TUPLE_EAT_4)(o(78, s), p, o, m)
+# define MSGPACK_PP_FOR_78(s, p, o, m) MSGPACK_PP_IF(p(79, s), m, MSGPACK_PP_TUPLE_EAT_2)(79, s) MSGPACK_PP_IF(p(79, s), MSGPACK_PP_FOR_79, MSGPACK_PP_TUPLE_EAT_4)(o(79, s), p, o, m)
+# define MSGPACK_PP_FOR_79(s, p, o, m) MSGPACK_PP_IF(p(80, s), m, MSGPACK_PP_TUPLE_EAT_2)(80, s) MSGPACK_PP_IF(p(80, s), MSGPACK_PP_FOR_80, MSGPACK_PP_TUPLE_EAT_4)(o(80, s), p, o, m)
+# define MSGPACK_PP_FOR_80(s, p, o, m) MSGPACK_PP_IF(p(81, s), m, MSGPACK_PP_TUPLE_EAT_2)(81, s) MSGPACK_PP_IF(p(81, s), MSGPACK_PP_FOR_81, MSGPACK_PP_TUPLE_EAT_4)(o(81, s), p, o, m)
+# define MSGPACK_PP_FOR_81(s, p, o, m) MSGPACK_PP_IF(p(82, s), m, MSGPACK_PP_TUPLE_EAT_2)(82, s) MSGPACK_PP_IF(p(82, s), MSGPACK_PP_FOR_82, MSGPACK_PP_TUPLE_EAT_4)(o(82, s), p, o, m)
+# define MSGPACK_PP_FOR_82(s, p, o, m) MSGPACK_PP_IF(p(83, s), m, MSGPACK_PP_TUPLE_EAT_2)(83, s) MSGPACK_PP_IF(p(83, s), MSGPACK_PP_FOR_83, MSGPACK_PP_TUPLE_EAT_4)(o(83, s), p, o, m)
+# define MSGPACK_PP_FOR_83(s, p, o, m) MSGPACK_PP_IF(p(84, s), m, MSGPACK_PP_TUPLE_EAT_2)(84, s) MSGPACK_PP_IF(p(84, s), MSGPACK_PP_FOR_84, MSGPACK_PP_TUPLE_EAT_4)(o(84, s), p, o, m)
+# define MSGPACK_PP_FOR_84(s, p, o, m) MSGPACK_PP_IF(p(85, s), m, MSGPACK_PP_TUPLE_EAT_2)(85, s) MSGPACK_PP_IF(p(85, s), MSGPACK_PP_FOR_85, MSGPACK_PP_TUPLE_EAT_4)(o(85, s), p, o, m)
+# define MSGPACK_PP_FOR_85(s, p, o, m) MSGPACK_PP_IF(p(86, s), m, MSGPACK_PP_TUPLE_EAT_2)(86, s) MSGPACK_PP_IF(p(86, s), MSGPACK_PP_FOR_86, MSGPACK_PP_TUPLE_EAT_4)(o(86, s), p, o, m)
+# define MSGPACK_PP_FOR_86(s, p, o, m) MSGPACK_PP_IF(p(87, s), m, MSGPACK_PP_TUPLE_EAT_2)(87, s) MSGPACK_PP_IF(p(87, s), MSGPACK_PP_FOR_87, MSGPACK_PP_TUPLE_EAT_4)(o(87, s), p, o, m)
+# define MSGPACK_PP_FOR_87(s, p, o, m) MSGPACK_PP_IF(p(88, s), m, MSGPACK_PP_TUPLE_EAT_2)(88, s) MSGPACK_PP_IF(p(88, s), MSGPACK_PP_FOR_88, MSGPACK_PP_TUPLE_EAT_4)(o(88, s), p, o, m)
+# define MSGPACK_PP_FOR_88(s, p, o, m) MSGPACK_PP_IF(p(89, s), m, MSGPACK_PP_TUPLE_EAT_2)(89, s) MSGPACK_PP_IF(p(89, s), MSGPACK_PP_FOR_89, MSGPACK_PP_TUPLE_EAT_4)(o(89, s), p, o, m)
+# define MSGPACK_PP_FOR_89(s, p, o, m) MSGPACK_PP_IF(p(90, s), m, MSGPACK_PP_TUPLE_EAT_2)(90, s) MSGPACK_PP_IF(p(90, s), MSGPACK_PP_FOR_90, MSGPACK_PP_TUPLE_EAT_4)(o(90, s), p, o, m)
+# define MSGPACK_PP_FOR_90(s, p, o, m) MSGPACK_PP_IF(p(91, s), m, MSGPACK_PP_TUPLE_EAT_2)(91, s) MSGPACK_PP_IF(p(91, s), MSGPACK_PP_FOR_91, MSGPACK_PP_TUPLE_EAT_4)(o(91, s), p, o, m)
+# define MSGPACK_PP_FOR_91(s, p, o, m) MSGPACK_PP_IF(p(92, s), m, MSGPACK_PP_TUPLE_EAT_2)(92, s) MSGPACK_PP_IF(p(92, s), MSGPACK_PP_FOR_92, MSGPACK_PP_TUPLE_EAT_4)(o(92, s), p, o, m)
+# define MSGPACK_PP_FOR_92(s, p, o, m) MSGPACK_PP_IF(p(93, s), m, MSGPACK_PP_TUPLE_EAT_2)(93, s) MSGPACK_PP_IF(p(93, s), MSGPACK_PP_FOR_93, MSGPACK_PP_TUPLE_EAT_4)(o(93, s), p, o, m)
+# define MSGPACK_PP_FOR_93(s, p, o, m) MSGPACK_PP_IF(p(94, s), m, MSGPACK_PP_TUPLE_EAT_2)(94, s) MSGPACK_PP_IF(p(94, s), MSGPACK_PP_FOR_94, MSGPACK_PP_TUPLE_EAT_4)(o(94, s), p, o, m)
+# define MSGPACK_PP_FOR_94(s, p, o, m) MSGPACK_PP_IF(p(95, s), m, MSGPACK_PP_TUPLE_EAT_2)(95, s) MSGPACK_PP_IF(p(95, s), MSGPACK_PP_FOR_95, MSGPACK_PP_TUPLE_EAT_4)(o(95, s), p, o, m)
+# define MSGPACK_PP_FOR_95(s, p, o, m) MSGPACK_PP_IF(p(96, s), m, MSGPACK_PP_TUPLE_EAT_2)(96, s) MSGPACK_PP_IF(p(96, s), MSGPACK_PP_FOR_96, MSGPACK_PP_TUPLE_EAT_4)(o(96, s), p, o, m)
+# define MSGPACK_PP_FOR_96(s, p, o, m) MSGPACK_PP_IF(p(97, s), m, MSGPACK_PP_TUPLE_EAT_2)(97, s) MSGPACK_PP_IF(p(97, s), MSGPACK_PP_FOR_97, MSGPACK_PP_TUPLE_EAT_4)(o(97, s), p, o, m)
+# define MSGPACK_PP_FOR_97(s, p, o, m) MSGPACK_PP_IF(p(98, s), m, MSGPACK_PP_TUPLE_EAT_2)(98, s) MSGPACK_PP_IF(p(98, s), MSGPACK_PP_FOR_98, MSGPACK_PP_TUPLE_EAT_4)(o(98, s), p, o, m)
+# define MSGPACK_PP_FOR_98(s, p, o, m) MSGPACK_PP_IF(p(99, s), m, MSGPACK_PP_TUPLE_EAT_2)(99, s) MSGPACK_PP_IF(p(99, s), MSGPACK_PP_FOR_99, MSGPACK_PP_TUPLE_EAT_4)(o(99, s), p, o, m)
+# define MSGPACK_PP_FOR_99(s, p, o, m) MSGPACK_PP_IF(p(100, s), m, MSGPACK_PP_TUPLE_EAT_2)(100, s) MSGPACK_PP_IF(p(100, s), MSGPACK_PP_FOR_100, MSGPACK_PP_TUPLE_EAT_4)(o(100, s), p, o, m)
+# define MSGPACK_PP_FOR_100(s, p, o, m) MSGPACK_PP_IF(p(101, s), m, MSGPACK_PP_TUPLE_EAT_2)(101, s) MSGPACK_PP_IF(p(101, s), MSGPACK_PP_FOR_101, MSGPACK_PP_TUPLE_EAT_4)(o(101, s), p, o, m)
+# define MSGPACK_PP_FOR_101(s, p, o, m) MSGPACK_PP_IF(p(102, s), m, MSGPACK_PP_TUPLE_EAT_2)(102, s) MSGPACK_PP_IF(p(102, s), MSGPACK_PP_FOR_102, MSGPACK_PP_TUPLE_EAT_4)(o(102, s), p, o, m)
+# define MSGPACK_PP_FOR_102(s, p, o, m) MSGPACK_PP_IF(p(103, s), m, MSGPACK_PP_TUPLE_EAT_2)(103, s) MSGPACK_PP_IF(p(103, s), MSGPACK_PP_FOR_103, MSGPACK_PP_TUPLE_EAT_4)(o(103, s), p, o, m)
+# define MSGPACK_PP_FOR_103(s, p, o, m) MSGPACK_PP_IF(p(104, s), m, MSGPACK_PP_TUPLE_EAT_2)(104, s) MSGPACK_PP_IF(p(104, s), MSGPACK_PP_FOR_104, MSGPACK_PP_TUPLE_EAT_4)(o(104, s), p, o, m)
+# define MSGPACK_PP_FOR_104(s, p, o, m) MSGPACK_PP_IF(p(105, s), m, MSGPACK_PP_TUPLE_EAT_2)(105, s) MSGPACK_PP_IF(p(105, s), MSGPACK_PP_FOR_105, MSGPACK_PP_TUPLE_EAT_4)(o(105, s), p, o, m)
+# define MSGPACK_PP_FOR_105(s, p, o, m) MSGPACK_PP_IF(p(106, s), m, MSGPACK_PP_TUPLE_EAT_2)(106, s) MSGPACK_PP_IF(p(106, s), MSGPACK_PP_FOR_106, MSGPACK_PP_TUPLE_EAT_4)(o(106, s), p, o, m)
+# define MSGPACK_PP_FOR_106(s, p, o, m) MSGPACK_PP_IF(p(107, s), m, MSGPACK_PP_TUPLE_EAT_2)(107, s) MSGPACK_PP_IF(p(107, s), MSGPACK_PP_FOR_107, MSGPACK_PP_TUPLE_EAT_4)(o(107, s), p, o, m)
+# define MSGPACK_PP_FOR_107(s, p, o, m) MSGPACK_PP_IF(p(108, s), m, MSGPACK_PP_TUPLE_EAT_2)(108, s) MSGPACK_PP_IF(p(108, s), MSGPACK_PP_FOR_108, MSGPACK_PP_TUPLE_EAT_4)(o(108, s), p, o, m)
+# define MSGPACK_PP_FOR_108(s, p, o, m) MSGPACK_PP_IF(p(109, s), m, MSGPACK_PP_TUPLE_EAT_2)(109, s) MSGPACK_PP_IF(p(109, s), MSGPACK_PP_FOR_109, MSGPACK_PP_TUPLE_EAT_4)(o(109, s), p, o, m)
+# define MSGPACK_PP_FOR_109(s, p, o, m) MSGPACK_PP_IF(p(110, s), m, MSGPACK_PP_TUPLE_EAT_2)(110, s) MSGPACK_PP_IF(p(110, s), MSGPACK_PP_FOR_110, MSGPACK_PP_TUPLE_EAT_4)(o(110, s), p, o, m)
+# define MSGPACK_PP_FOR_110(s, p, o, m) MSGPACK_PP_IF(p(111, s), m, MSGPACK_PP_TUPLE_EAT_2)(111, s) MSGPACK_PP_IF(p(111, s), MSGPACK_PP_FOR_111, MSGPACK_PP_TUPLE_EAT_4)(o(111, s), p, o, m)
+# define MSGPACK_PP_FOR_111(s, p, o, m) MSGPACK_PP_IF(p(112, s), m, MSGPACK_PP_TUPLE_EAT_2)(112, s) MSGPACK_PP_IF(p(112, s), MSGPACK_PP_FOR_112, MSGPACK_PP_TUPLE_EAT_4)(o(112, s), p, o, m)
+# define MSGPACK_PP_FOR_112(s, p, o, m) MSGPACK_PP_IF(p(113, s), m, MSGPACK_PP_TUPLE_EAT_2)(113, s) MSGPACK_PP_IF(p(113, s), MSGPACK_PP_FOR_113, MSGPACK_PP_TUPLE_EAT_4)(o(113, s), p, o, m)
+# define MSGPACK_PP_FOR_113(s, p, o, m) MSGPACK_PP_IF(p(114, s), m, MSGPACK_PP_TUPLE_EAT_2)(114, s) MSGPACK_PP_IF(p(114, s), MSGPACK_PP_FOR_114, MSGPACK_PP_TUPLE_EAT_4)(o(114, s), p, o, m)
+# define MSGPACK_PP_FOR_114(s, p, o, m) MSGPACK_PP_IF(p(115, s), m, MSGPACK_PP_TUPLE_EAT_2)(115, s) MSGPACK_PP_IF(p(115, s), MSGPACK_PP_FOR_115, MSGPACK_PP_TUPLE_EAT_4)(o(115, s), p, o, m)
+# define MSGPACK_PP_FOR_115(s, p, o, m) MSGPACK_PP_IF(p(116, s), m, MSGPACK_PP_TUPLE_EAT_2)(116, s) MSGPACK_PP_IF(p(116, s), MSGPACK_PP_FOR_116, MSGPACK_PP_TUPLE_EAT_4)(o(116, s), p, o, m)
+# define MSGPACK_PP_FOR_116(s, p, o, m) MSGPACK_PP_IF(p(117, s), m, MSGPACK_PP_TUPLE_EAT_2)(117, s) MSGPACK_PP_IF(p(117, s), MSGPACK_PP_FOR_117, MSGPACK_PP_TUPLE_EAT_4)(o(117, s), p, o, m)
+# define MSGPACK_PP_FOR_117(s, p, o, m) MSGPACK_PP_IF(p(118, s), m, MSGPACK_PP_TUPLE_EAT_2)(118, s) MSGPACK_PP_IF(p(118, s), MSGPACK_PP_FOR_118, MSGPACK_PP_TUPLE_EAT_4)(o(118, s), p, o, m)
+# define MSGPACK_PP_FOR_118(s, p, o, m) MSGPACK_PP_IF(p(119, s), m, MSGPACK_PP_TUPLE_EAT_2)(119, s) MSGPACK_PP_IF(p(119, s), MSGPACK_PP_FOR_119, MSGPACK_PP_TUPLE_EAT_4)(o(119, s), p, o, m)
+# define MSGPACK_PP_FOR_119(s, p, o, m) MSGPACK_PP_IF(p(120, s), m, MSGPACK_PP_TUPLE_EAT_2)(120, s) MSGPACK_PP_IF(p(120, s), MSGPACK_PP_FOR_120, MSGPACK_PP_TUPLE_EAT_4)(o(120, s), p, o, m)
+# define MSGPACK_PP_FOR_120(s, p, o, m) MSGPACK_PP_IF(p(121, s), m, MSGPACK_PP_TUPLE_EAT_2)(121, s) MSGPACK_PP_IF(p(121, s), MSGPACK_PP_FOR_121, MSGPACK_PP_TUPLE_EAT_4)(o(121, s), p, o, m)
+# define MSGPACK_PP_FOR_121(s, p, o, m) MSGPACK_PP_IF(p(122, s), m, MSGPACK_PP_TUPLE_EAT_2)(122, s) MSGPACK_PP_IF(p(122, s), MSGPACK_PP_FOR_122, MSGPACK_PP_TUPLE_EAT_4)(o(122, s), p, o, m)
+# define MSGPACK_PP_FOR_122(s, p, o, m) MSGPACK_PP_IF(p(123, s), m, MSGPACK_PP_TUPLE_EAT_2)(123, s) MSGPACK_PP_IF(p(123, s), MSGPACK_PP_FOR_123, MSGPACK_PP_TUPLE_EAT_4)(o(123, s), p, o, m)
+# define MSGPACK_PP_FOR_123(s, p, o, m) MSGPACK_PP_IF(p(124, s), m, MSGPACK_PP_TUPLE_EAT_2)(124, s) MSGPACK_PP_IF(p(124, s), MSGPACK_PP_FOR_124, MSGPACK_PP_TUPLE_EAT_4)(o(124, s), p, o, m)
+# define MSGPACK_PP_FOR_124(s, p, o, m) MSGPACK_PP_IF(p(125, s), m, MSGPACK_PP_TUPLE_EAT_2)(125, s) MSGPACK_PP_IF(p(125, s), MSGPACK_PP_FOR_125, MSGPACK_PP_TUPLE_EAT_4)(o(125, s), p, o, m)
+# define MSGPACK_PP_FOR_125(s, p, o, m) MSGPACK_PP_IF(p(126, s), m, MSGPACK_PP_TUPLE_EAT_2)(126, s) MSGPACK_PP_IF(p(126, s), MSGPACK_PP_FOR_126, MSGPACK_PP_TUPLE_EAT_4)(o(126, s), p, o, m)
+# define MSGPACK_PP_FOR_126(s, p, o, m) MSGPACK_PP_IF(p(127, s), m, MSGPACK_PP_TUPLE_EAT_2)(127, s) MSGPACK_PP_IF(p(127, s), MSGPACK_PP_FOR_127, MSGPACK_PP_TUPLE_EAT_4)(o(127, s), p, o, m)
+# define MSGPACK_PP_FOR_127(s, p, o, m) MSGPACK_PP_IF(p(128, s), m, MSGPACK_PP_TUPLE_EAT_2)(128, s) MSGPACK_PP_IF(p(128, s), MSGPACK_PP_FOR_128, MSGPACK_PP_TUPLE_EAT_4)(o(128, s), p, o, m)
+# define MSGPACK_PP_FOR_128(s, p, o, m) MSGPACK_PP_IF(p(129, s), m, MSGPACK_PP_TUPLE_EAT_2)(129, s) MSGPACK_PP_IF(p(129, s), MSGPACK_PP_FOR_129, MSGPACK_PP_TUPLE_EAT_4)(o(129, s), p, o, m)
+# define MSGPACK_PP_FOR_129(s, p, o, m) MSGPACK_PP_IF(p(130, s), m, MSGPACK_PP_TUPLE_EAT_2)(130, s) MSGPACK_PP_IF(p(130, s), MSGPACK_PP_FOR_130, MSGPACK_PP_TUPLE_EAT_4)(o(130, s), p, o, m)
+# define MSGPACK_PP_FOR_130(s, p, o, m) MSGPACK_PP_IF(p(131, s), m, MSGPACK_PP_TUPLE_EAT_2)(131, s) MSGPACK_PP_IF(p(131, s), MSGPACK_PP_FOR_131, MSGPACK_PP_TUPLE_EAT_4)(o(131, s), p, o, m)
+# define MSGPACK_PP_FOR_131(s, p, o, m) MSGPACK_PP_IF(p(132, s), m, MSGPACK_PP_TUPLE_EAT_2)(132, s) MSGPACK_PP_IF(p(132, s), MSGPACK_PP_FOR_132, MSGPACK_PP_TUPLE_EAT_4)(o(132, s), p, o, m)
+# define MSGPACK_PP_FOR_132(s, p, o, m) MSGPACK_PP_IF(p(133, s), m, MSGPACK_PP_TUPLE_EAT_2)(133, s) MSGPACK_PP_IF(p(133, s), MSGPACK_PP_FOR_133, MSGPACK_PP_TUPLE_EAT_4)(o(133, s), p, o, m)
+# define MSGPACK_PP_FOR_133(s, p, o, m) MSGPACK_PP_IF(p(134, s), m, MSGPACK_PP_TUPLE_EAT_2)(134, s) MSGPACK_PP_IF(p(134, s), MSGPACK_PP_FOR_134, MSGPACK_PP_TUPLE_EAT_4)(o(134, s), p, o, m)
+# define MSGPACK_PP_FOR_134(s, p, o, m) MSGPACK_PP_IF(p(135, s), m, MSGPACK_PP_TUPLE_EAT_2)(135, s) MSGPACK_PP_IF(p(135, s), MSGPACK_PP_FOR_135, MSGPACK_PP_TUPLE_EAT_4)(o(135, s), p, o, m)
+# define MSGPACK_PP_FOR_135(s, p, o, m) MSGPACK_PP_IF(p(136, s), m, MSGPACK_PP_TUPLE_EAT_2)(136, s) MSGPACK_PP_IF(p(136, s), MSGPACK_PP_FOR_136, MSGPACK_PP_TUPLE_EAT_4)(o(136, s), p, o, m)
+# define MSGPACK_PP_FOR_136(s, p, o, m) MSGPACK_PP_IF(p(137, s), m, MSGPACK_PP_TUPLE_EAT_2)(137, s) MSGPACK_PP_IF(p(137, s), MSGPACK_PP_FOR_137, MSGPACK_PP_TUPLE_EAT_4)(o(137, s), p, o, m)
+# define MSGPACK_PP_FOR_137(s, p, o, m) MSGPACK_PP_IF(p(138, s), m, MSGPACK_PP_TUPLE_EAT_2)(138, s) MSGPACK_PP_IF(p(138, s), MSGPACK_PP_FOR_138, MSGPACK_PP_TUPLE_EAT_4)(o(138, s), p, o, m)
+# define MSGPACK_PP_FOR_138(s, p, o, m) MSGPACK_PP_IF(p(139, s), m, MSGPACK_PP_TUPLE_EAT_2)(139, s) MSGPACK_PP_IF(p(139, s), MSGPACK_PP_FOR_139, MSGPACK_PP_TUPLE_EAT_4)(o(139, s), p, o, m)
+# define MSGPACK_PP_FOR_139(s, p, o, m) MSGPACK_PP_IF(p(140, s), m, MSGPACK_PP_TUPLE_EAT_2)(140, s) MSGPACK_PP_IF(p(140, s), MSGPACK_PP_FOR_140, MSGPACK_PP_TUPLE_EAT_4)(o(140, s), p, o, m)
+# define MSGPACK_PP_FOR_140(s, p, o, m) MSGPACK_PP_IF(p(141, s), m, MSGPACK_PP_TUPLE_EAT_2)(141, s) MSGPACK_PP_IF(p(141, s), MSGPACK_PP_FOR_141, MSGPACK_PP_TUPLE_EAT_4)(o(141, s), p, o, m)
+# define MSGPACK_PP_FOR_141(s, p, o, m) MSGPACK_PP_IF(p(142, s), m, MSGPACK_PP_TUPLE_EAT_2)(142, s) MSGPACK_PP_IF(p(142, s), MSGPACK_PP_FOR_142, MSGPACK_PP_TUPLE_EAT_4)(o(142, s), p, o, m)
+# define MSGPACK_PP_FOR_142(s, p, o, m) MSGPACK_PP_IF(p(143, s), m, MSGPACK_PP_TUPLE_EAT_2)(143, s) MSGPACK_PP_IF(p(143, s), MSGPACK_PP_FOR_143, MSGPACK_PP_TUPLE_EAT_4)(o(143, s), p, o, m)
+# define MSGPACK_PP_FOR_143(s, p, o, m) MSGPACK_PP_IF(p(144, s), m, MSGPACK_PP_TUPLE_EAT_2)(144, s) MSGPACK_PP_IF(p(144, s), MSGPACK_PP_FOR_144, MSGPACK_PP_TUPLE_EAT_4)(o(144, s), p, o, m)
+# define MSGPACK_PP_FOR_144(s, p, o, m) MSGPACK_PP_IF(p(145, s), m, MSGPACK_PP_TUPLE_EAT_2)(145, s) MSGPACK_PP_IF(p(145, s), MSGPACK_PP_FOR_145, MSGPACK_PP_TUPLE_EAT_4)(o(145, s), p, o, m)
+# define MSGPACK_PP_FOR_145(s, p, o, m) MSGPACK_PP_IF(p(146, s), m, MSGPACK_PP_TUPLE_EAT_2)(146, s) MSGPACK_PP_IF(p(146, s), MSGPACK_PP_FOR_146, MSGPACK_PP_TUPLE_EAT_4)(o(146, s), p, o, m)
+# define MSGPACK_PP_FOR_146(s, p, o, m) MSGPACK_PP_IF(p(147, s), m, MSGPACK_PP_TUPLE_EAT_2)(147, s) MSGPACK_PP_IF(p(147, s), MSGPACK_PP_FOR_147, MSGPACK_PP_TUPLE_EAT_4)(o(147, s), p, o, m)
+# define MSGPACK_PP_FOR_147(s, p, o, m) MSGPACK_PP_IF(p(148, s), m, MSGPACK_PP_TUPLE_EAT_2)(148, s) MSGPACK_PP_IF(p(148, s), MSGPACK_PP_FOR_148, MSGPACK_PP_TUPLE_EAT_4)(o(148, s), p, o, m)
+# define MSGPACK_PP_FOR_148(s, p, o, m) MSGPACK_PP_IF(p(149, s), m, MSGPACK_PP_TUPLE_EAT_2)(149, s) MSGPACK_PP_IF(p(149, s), MSGPACK_PP_FOR_149, MSGPACK_PP_TUPLE_EAT_4)(o(149, s), p, o, m)
+# define MSGPACK_PP_FOR_149(s, p, o, m) MSGPACK_PP_IF(p(150, s), m, MSGPACK_PP_TUPLE_EAT_2)(150, s) MSGPACK_PP_IF(p(150, s), MSGPACK_PP_FOR_150, MSGPACK_PP_TUPLE_EAT_4)(o(150, s), p, o, m)
+# define MSGPACK_PP_FOR_150(s, p, o, m) MSGPACK_PP_IF(p(151, s), m, MSGPACK_PP_TUPLE_EAT_2)(151, s) MSGPACK_PP_IF(p(151, s), MSGPACK_PP_FOR_151, MSGPACK_PP_TUPLE_EAT_4)(o(151, s), p, o, m)
+# define MSGPACK_PP_FOR_151(s, p, o, m) MSGPACK_PP_IF(p(152, s), m, MSGPACK_PP_TUPLE_EAT_2)(152, s) MSGPACK_PP_IF(p(152, s), MSGPACK_PP_FOR_152, MSGPACK_PP_TUPLE_EAT_4)(o(152, s), p, o, m)
+# define MSGPACK_PP_FOR_152(s, p, o, m) MSGPACK_PP_IF(p(153, s), m, MSGPACK_PP_TUPLE_EAT_2)(153, s) MSGPACK_PP_IF(p(153, s), MSGPACK_PP_FOR_153, MSGPACK_PP_TUPLE_EAT_4)(o(153, s), p, o, m)
+# define MSGPACK_PP_FOR_153(s, p, o, m) MSGPACK_PP_IF(p(154, s), m, MSGPACK_PP_TUPLE_EAT_2)(154, s) MSGPACK_PP_IF(p(154, s), MSGPACK_PP_FOR_154, MSGPACK_PP_TUPLE_EAT_4)(o(154, s), p, o, m)
+# define MSGPACK_PP_FOR_154(s, p, o, m) MSGPACK_PP_IF(p(155, s), m, MSGPACK_PP_TUPLE_EAT_2)(155, s) MSGPACK_PP_IF(p(155, s), MSGPACK_PP_FOR_155, MSGPACK_PP_TUPLE_EAT_4)(o(155, s), p, o, m)
+# define MSGPACK_PP_FOR_155(s, p, o, m) MSGPACK_PP_IF(p(156, s), m, MSGPACK_PP_TUPLE_EAT_2)(156, s) MSGPACK_PP_IF(p(156, s), MSGPACK_PP_FOR_156, MSGPACK_PP_TUPLE_EAT_4)(o(156, s), p, o, m)
+# define MSGPACK_PP_FOR_156(s, p, o, m) MSGPACK_PP_IF(p(157, s), m, MSGPACK_PP_TUPLE_EAT_2)(157, s) MSGPACK_PP_IF(p(157, s), MSGPACK_PP_FOR_157, MSGPACK_PP_TUPLE_EAT_4)(o(157, s), p, o, m)
+# define MSGPACK_PP_FOR_157(s, p, o, m) MSGPACK_PP_IF(p(158, s), m, MSGPACK_PP_TUPLE_EAT_2)(158, s) MSGPACK_PP_IF(p(158, s), MSGPACK_PP_FOR_158, MSGPACK_PP_TUPLE_EAT_4)(o(158, s), p, o, m)
+# define MSGPACK_PP_FOR_158(s, p, o, m) MSGPACK_PP_IF(p(159, s), m, MSGPACK_PP_TUPLE_EAT_2)(159, s) MSGPACK_PP_IF(p(159, s), MSGPACK_PP_FOR_159, MSGPACK_PP_TUPLE_EAT_4)(o(159, s), p, o, m)
+# define MSGPACK_PP_FOR_159(s, p, o, m) MSGPACK_PP_IF(p(160, s), m, MSGPACK_PP_TUPLE_EAT_2)(160, s) MSGPACK_PP_IF(p(160, s), MSGPACK_PP_FOR_160, MSGPACK_PP_TUPLE_EAT_4)(o(160, s), p, o, m)
+# define MSGPACK_PP_FOR_160(s, p, o, m) MSGPACK_PP_IF(p(161, s), m, MSGPACK_PP_TUPLE_EAT_2)(161, s) MSGPACK_PP_IF(p(161, s), MSGPACK_PP_FOR_161, MSGPACK_PP_TUPLE_EAT_4)(o(161, s), p, o, m)
+# define MSGPACK_PP_FOR_161(s, p, o, m) MSGPACK_PP_IF(p(162, s), m, MSGPACK_PP_TUPLE_EAT_2)(162, s) MSGPACK_PP_IF(p(162, s), MSGPACK_PP_FOR_162, MSGPACK_PP_TUPLE_EAT_4)(o(162, s), p, o, m)
+# define MSGPACK_PP_FOR_162(s, p, o, m) MSGPACK_PP_IF(p(163, s), m, MSGPACK_PP_TUPLE_EAT_2)(163, s) MSGPACK_PP_IF(p(163, s), MSGPACK_PP_FOR_163, MSGPACK_PP_TUPLE_EAT_4)(o(163, s), p, o, m)
+# define MSGPACK_PP_FOR_163(s, p, o, m) MSGPACK_PP_IF(p(164, s), m, MSGPACK_PP_TUPLE_EAT_2)(164, s) MSGPACK_PP_IF(p(164, s), MSGPACK_PP_FOR_164, MSGPACK_PP_TUPLE_EAT_4)(o(164, s), p, o, m)
+# define MSGPACK_PP_FOR_164(s, p, o, m) MSGPACK_PP_IF(p(165, s), m, MSGPACK_PP_TUPLE_EAT_2)(165, s) MSGPACK_PP_IF(p(165, s), MSGPACK_PP_FOR_165, MSGPACK_PP_TUPLE_EAT_4)(o(165, s), p, o, m)
+# define MSGPACK_PP_FOR_165(s, p, o, m) MSGPACK_PP_IF(p(166, s), m, MSGPACK_PP_TUPLE_EAT_2)(166, s) MSGPACK_PP_IF(p(166, s), MSGPACK_PP_FOR_166, MSGPACK_PP_TUPLE_EAT_4)(o(166, s), p, o, m)
+# define MSGPACK_PP_FOR_166(s, p, o, m) MSGPACK_PP_IF(p(167, s), m, MSGPACK_PP_TUPLE_EAT_2)(167, s) MSGPACK_PP_IF(p(167, s), MSGPACK_PP_FOR_167, MSGPACK_PP_TUPLE_EAT_4)(o(167, s), p, o, m)
+# define MSGPACK_PP_FOR_167(s, p, o, m) MSGPACK_PP_IF(p(168, s), m, MSGPACK_PP_TUPLE_EAT_2)(168, s) MSGPACK_PP_IF(p(168, s), MSGPACK_PP_FOR_168, MSGPACK_PP_TUPLE_EAT_4)(o(168, s), p, o, m)
+# define MSGPACK_PP_FOR_168(s, p, o, m) MSGPACK_PP_IF(p(169, s), m, MSGPACK_PP_TUPLE_EAT_2)(169, s) MSGPACK_PP_IF(p(169, s), MSGPACK_PP_FOR_169, MSGPACK_PP_TUPLE_EAT_4)(o(169, s), p, o, m)
+# define MSGPACK_PP_FOR_169(s, p, o, m) MSGPACK_PP_IF(p(170, s), m, MSGPACK_PP_TUPLE_EAT_2)(170, s) MSGPACK_PP_IF(p(170, s), MSGPACK_PP_FOR_170, MSGPACK_PP_TUPLE_EAT_4)(o(170, s), p, o, m)
+# define MSGPACK_PP_FOR_170(s, p, o, m) MSGPACK_PP_IF(p(171, s), m, MSGPACK_PP_TUPLE_EAT_2)(171, s) MSGPACK_PP_IF(p(171, s), MSGPACK_PP_FOR_171, MSGPACK_PP_TUPLE_EAT_4)(o(171, s), p, o, m)
+# define MSGPACK_PP_FOR_171(s, p, o, m) MSGPACK_PP_IF(p(172, s), m, MSGPACK_PP_TUPLE_EAT_2)(172, s) MSGPACK_PP_IF(p(172, s), MSGPACK_PP_FOR_172, MSGPACK_PP_TUPLE_EAT_4)(o(172, s), p, o, m)
+# define MSGPACK_PP_FOR_172(s, p, o, m) MSGPACK_PP_IF(p(173, s), m, MSGPACK_PP_TUPLE_EAT_2)(173, s) MSGPACK_PP_IF(p(173, s), MSGPACK_PP_FOR_173, MSGPACK_PP_TUPLE_EAT_4)(o(173, s), p, o, m)
+# define MSGPACK_PP_FOR_173(s, p, o, m) MSGPACK_PP_IF(p(174, s), m, MSGPACK_PP_TUPLE_EAT_2)(174, s) MSGPACK_PP_IF(p(174, s), MSGPACK_PP_FOR_174, MSGPACK_PP_TUPLE_EAT_4)(o(174, s), p, o, m)
+# define MSGPACK_PP_FOR_174(s, p, o, m) MSGPACK_PP_IF(p(175, s), m, MSGPACK_PP_TUPLE_EAT_2)(175, s) MSGPACK_PP_IF(p(175, s), MSGPACK_PP_FOR_175, MSGPACK_PP_TUPLE_EAT_4)(o(175, s), p, o, m)
+# define MSGPACK_PP_FOR_175(s, p, o, m) MSGPACK_PP_IF(p(176, s), m, MSGPACK_PP_TUPLE_EAT_2)(176, s) MSGPACK_PP_IF(p(176, s), MSGPACK_PP_FOR_176, MSGPACK_PP_TUPLE_EAT_4)(o(176, s), p, o, m)
+# define MSGPACK_PP_FOR_176(s, p, o, m) MSGPACK_PP_IF(p(177, s), m, MSGPACK_PP_TUPLE_EAT_2)(177, s) MSGPACK_PP_IF(p(177, s), MSGPACK_PP_FOR_177, MSGPACK_PP_TUPLE_EAT_4)(o(177, s), p, o, m)
+# define MSGPACK_PP_FOR_177(s, p, o, m) MSGPACK_PP_IF(p(178, s), m, MSGPACK_PP_TUPLE_EAT_2)(178, s) MSGPACK_PP_IF(p(178, s), MSGPACK_PP_FOR_178, MSGPACK_PP_TUPLE_EAT_4)(o(178, s), p, o, m)
+# define MSGPACK_PP_FOR_178(s, p, o, m) MSGPACK_PP_IF(p(179, s), m, MSGPACK_PP_TUPLE_EAT_2)(179, s) MSGPACK_PP_IF(p(179, s), MSGPACK_PP_FOR_179, MSGPACK_PP_TUPLE_EAT_4)(o(179, s), p, o, m)
+# define MSGPACK_PP_FOR_179(s, p, o, m) MSGPACK_PP_IF(p(180, s), m, MSGPACK_PP_TUPLE_EAT_2)(180, s) MSGPACK_PP_IF(p(180, s), MSGPACK_PP_FOR_180, MSGPACK_PP_TUPLE_EAT_4)(o(180, s), p, o, m)
+# define MSGPACK_PP_FOR_180(s, p, o, m) MSGPACK_PP_IF(p(181, s), m, MSGPACK_PP_TUPLE_EAT_2)(181, s) MSGPACK_PP_IF(p(181, s), MSGPACK_PP_FOR_181, MSGPACK_PP_TUPLE_EAT_4)(o(181, s), p, o, m)
+# define MSGPACK_PP_FOR_181(s, p, o, m) MSGPACK_PP_IF(p(182, s), m, MSGPACK_PP_TUPLE_EAT_2)(182, s) MSGPACK_PP_IF(p(182, s), MSGPACK_PP_FOR_182, MSGPACK_PP_TUPLE_EAT_4)(o(182, s), p, o, m)
+# define MSGPACK_PP_FOR_182(s, p, o, m) MSGPACK_PP_IF(p(183, s), m, MSGPACK_PP_TUPLE_EAT_2)(183, s) MSGPACK_PP_IF(p(183, s), MSGPACK_PP_FOR_183, MSGPACK_PP_TUPLE_EAT_4)(o(183, s), p, o, m)
+# define MSGPACK_PP_FOR_183(s, p, o, m) MSGPACK_PP_IF(p(184, s), m, MSGPACK_PP_TUPLE_EAT_2)(184, s) MSGPACK_PP_IF(p(184, s), MSGPACK_PP_FOR_184, MSGPACK_PP_TUPLE_EAT_4)(o(184, s), p, o, m)
+# define MSGPACK_PP_FOR_184(s, p, o, m) MSGPACK_PP_IF(p(185, s), m, MSGPACK_PP_TUPLE_EAT_2)(185, s) MSGPACK_PP_IF(p(185, s), MSGPACK_PP_FOR_185, MSGPACK_PP_TUPLE_EAT_4)(o(185, s), p, o, m)
+# define MSGPACK_PP_FOR_185(s, p, o, m) MSGPACK_PP_IF(p(186, s), m, MSGPACK_PP_TUPLE_EAT_2)(186, s) MSGPACK_PP_IF(p(186, s), MSGPACK_PP_FOR_186, MSGPACK_PP_TUPLE_EAT_4)(o(186, s), p, o, m)
+# define MSGPACK_PP_FOR_186(s, p, o, m) MSGPACK_PP_IF(p(187, s), m, MSGPACK_PP_TUPLE_EAT_2)(187, s) MSGPACK_PP_IF(p(187, s), MSGPACK_PP_FOR_187, MSGPACK_PP_TUPLE_EAT_4)(o(187, s), p, o, m)
+# define MSGPACK_PP_FOR_187(s, p, o, m) MSGPACK_PP_IF(p(188, s), m, MSGPACK_PP_TUPLE_EAT_2)(188, s) MSGPACK_PP_IF(p(188, s), MSGPACK_PP_FOR_188, MSGPACK_PP_TUPLE_EAT_4)(o(188, s), p, o, m)
+# define MSGPACK_PP_FOR_188(s, p, o, m) MSGPACK_PP_IF(p(189, s), m, MSGPACK_PP_TUPLE_EAT_2)(189, s) MSGPACK_PP_IF(p(189, s), MSGPACK_PP_FOR_189, MSGPACK_PP_TUPLE_EAT_4)(o(189, s), p, o, m)
+# define MSGPACK_PP_FOR_189(s, p, o, m) MSGPACK_PP_IF(p(190, s), m, MSGPACK_PP_TUPLE_EAT_2)(190, s) MSGPACK_PP_IF(p(190, s), MSGPACK_PP_FOR_190, MSGPACK_PP_TUPLE_EAT_4)(o(190, s), p, o, m)
+# define MSGPACK_PP_FOR_190(s, p, o, m) MSGPACK_PP_IF(p(191, s), m, MSGPACK_PP_TUPLE_EAT_2)(191, s) MSGPACK_PP_IF(p(191, s), MSGPACK_PP_FOR_191, MSGPACK_PP_TUPLE_EAT_4)(o(191, s), p, o, m)
+# define MSGPACK_PP_FOR_191(s, p, o, m) MSGPACK_PP_IF(p(192, s), m, MSGPACK_PP_TUPLE_EAT_2)(192, s) MSGPACK_PP_IF(p(192, s), MSGPACK_PP_FOR_192, MSGPACK_PP_TUPLE_EAT_4)(o(192, s), p, o, m)
+# define MSGPACK_PP_FOR_192(s, p, o, m) MSGPACK_PP_IF(p(193, s), m, MSGPACK_PP_TUPLE_EAT_2)(193, s) MSGPACK_PP_IF(p(193, s), MSGPACK_PP_FOR_193, MSGPACK_PP_TUPLE_EAT_4)(o(193, s), p, o, m)
+# define MSGPACK_PP_FOR_193(s, p, o, m) MSGPACK_PP_IF(p(194, s), m, MSGPACK_PP_TUPLE_EAT_2)(194, s) MSGPACK_PP_IF(p(194, s), MSGPACK_PP_FOR_194, MSGPACK_PP_TUPLE_EAT_4)(o(194, s), p, o, m)
+# define MSGPACK_PP_FOR_194(s, p, o, m) MSGPACK_PP_IF(p(195, s), m, MSGPACK_PP_TUPLE_EAT_2)(195, s) MSGPACK_PP_IF(p(195, s), MSGPACK_PP_FOR_195, MSGPACK_PP_TUPLE_EAT_4)(o(195, s), p, o, m)
+# define MSGPACK_PP_FOR_195(s, p, o, m) MSGPACK_PP_IF(p(196, s), m, MSGPACK_PP_TUPLE_EAT_2)(196, s) MSGPACK_PP_IF(p(196, s), MSGPACK_PP_FOR_196, MSGPACK_PP_TUPLE_EAT_4)(o(196, s), p, o, m)
+# define MSGPACK_PP_FOR_196(s, p, o, m) MSGPACK_PP_IF(p(197, s), m, MSGPACK_PP_TUPLE_EAT_2)(197, s) MSGPACK_PP_IF(p(197, s), MSGPACK_PP_FOR_197, MSGPACK_PP_TUPLE_EAT_4)(o(197, s), p, o, m)
+# define MSGPACK_PP_FOR_197(s, p, o, m) MSGPACK_PP_IF(p(198, s), m, MSGPACK_PP_TUPLE_EAT_2)(198, s) MSGPACK_PP_IF(p(198, s), MSGPACK_PP_FOR_198, MSGPACK_PP_TUPLE_EAT_4)(o(198, s), p, o, m)
+# define MSGPACK_PP_FOR_198(s, p, o, m) MSGPACK_PP_IF(p(199, s), m, MSGPACK_PP_TUPLE_EAT_2)(199, s) MSGPACK_PP_IF(p(199, s), MSGPACK_PP_FOR_199, MSGPACK_PP_TUPLE_EAT_4)(o(199, s), p, o, m)
+# define MSGPACK_PP_FOR_199(s, p, o, m) MSGPACK_PP_IF(p(200, s), m, MSGPACK_PP_TUPLE_EAT_2)(200, s) MSGPACK_PP_IF(p(200, s), MSGPACK_PP_FOR_200, MSGPACK_PP_TUPLE_EAT_4)(o(200, s), p, o, m)
+# define MSGPACK_PP_FOR_200(s, p, o, m) MSGPACK_PP_IF(p(201, s), m, MSGPACK_PP_TUPLE_EAT_2)(201, s) MSGPACK_PP_IF(p(201, s), MSGPACK_PP_FOR_201, MSGPACK_PP_TUPLE_EAT_4)(o(201, s), p, o, m)
+# define MSGPACK_PP_FOR_201(s, p, o, m) MSGPACK_PP_IF(p(202, s), m, MSGPACK_PP_TUPLE_EAT_2)(202, s) MSGPACK_PP_IF(p(202, s), MSGPACK_PP_FOR_202, MSGPACK_PP_TUPLE_EAT_4)(o(202, s), p, o, m)
+# define MSGPACK_PP_FOR_202(s, p, o, m) MSGPACK_PP_IF(p(203, s), m, MSGPACK_PP_TUPLE_EAT_2)(203, s) MSGPACK_PP_IF(p(203, s), MSGPACK_PP_FOR_203, MSGPACK_PP_TUPLE_EAT_4)(o(203, s), p, o, m)
+# define MSGPACK_PP_FOR_203(s, p, o, m) MSGPACK_PP_IF(p(204, s), m, MSGPACK_PP_TUPLE_EAT_2)(204, s) MSGPACK_PP_IF(p(204, s), MSGPACK_PP_FOR_204, MSGPACK_PP_TUPLE_EAT_4)(o(204, s), p, o, m)
+# define MSGPACK_PP_FOR_204(s, p, o, m) MSGPACK_PP_IF(p(205, s), m, MSGPACK_PP_TUPLE_EAT_2)(205, s) MSGPACK_PP_IF(p(205, s), MSGPACK_PP_FOR_205, MSGPACK_PP_TUPLE_EAT_4)(o(205, s), p, o, m)
+# define MSGPACK_PP_FOR_205(s, p, o, m) MSGPACK_PP_IF(p(206, s), m, MSGPACK_PP_TUPLE_EAT_2)(206, s) MSGPACK_PP_IF(p(206, s), MSGPACK_PP_FOR_206, MSGPACK_PP_TUPLE_EAT_4)(o(206, s), p, o, m)
+# define MSGPACK_PP_FOR_206(s, p, o, m) MSGPACK_PP_IF(p(207, s), m, MSGPACK_PP_TUPLE_EAT_2)(207, s) MSGPACK_PP_IF(p(207, s), MSGPACK_PP_FOR_207, MSGPACK_PP_TUPLE_EAT_4)(o(207, s), p, o, m)
+# define MSGPACK_PP_FOR_207(s, p, o, m) MSGPACK_PP_IF(p(208, s), m, MSGPACK_PP_TUPLE_EAT_2)(208, s) MSGPACK_PP_IF(p(208, s), MSGPACK_PP_FOR_208, MSGPACK_PP_TUPLE_EAT_4)(o(208, s), p, o, m)
+# define MSGPACK_PP_FOR_208(s, p, o, m) MSGPACK_PP_IF(p(209, s), m, MSGPACK_PP_TUPLE_EAT_2)(209, s) MSGPACK_PP_IF(p(209, s), MSGPACK_PP_FOR_209, MSGPACK_PP_TUPLE_EAT_4)(o(209, s), p, o, m)
+# define MSGPACK_PP_FOR_209(s, p, o, m) MSGPACK_PP_IF(p(210, s), m, MSGPACK_PP_TUPLE_EAT_2)(210, s) MSGPACK_PP_IF(p(210, s), MSGPACK_PP_FOR_210, MSGPACK_PP_TUPLE_EAT_4)(o(210, s), p, o, m)
+# define MSGPACK_PP_FOR_210(s, p, o, m) MSGPACK_PP_IF(p(211, s), m, MSGPACK_PP_TUPLE_EAT_2)(211, s) MSGPACK_PP_IF(p(211, s), MSGPACK_PP_FOR_211, MSGPACK_PP_TUPLE_EAT_4)(o(211, s), p, o, m)
+# define MSGPACK_PP_FOR_211(s, p, o, m) MSGPACK_PP_IF(p(212, s), m, MSGPACK_PP_TUPLE_EAT_2)(212, s) MSGPACK_PP_IF(p(212, s), MSGPACK_PP_FOR_212, MSGPACK_PP_TUPLE_EAT_4)(o(212, s), p, o, m)
+# define MSGPACK_PP_FOR_212(s, p, o, m) MSGPACK_PP_IF(p(213, s), m, MSGPACK_PP_TUPLE_EAT_2)(213, s) MSGPACK_PP_IF(p(213, s), MSGPACK_PP_FOR_213, MSGPACK_PP_TUPLE_EAT_4)(o(213, s), p, o, m)
+# define MSGPACK_PP_FOR_213(s, p, o, m) MSGPACK_PP_IF(p(214, s), m, MSGPACK_PP_TUPLE_EAT_2)(214, s) MSGPACK_PP_IF(p(214, s), MSGPACK_PP_FOR_214, MSGPACK_PP_TUPLE_EAT_4)(o(214, s), p, o, m)
+# define MSGPACK_PP_FOR_214(s, p, o, m) MSGPACK_PP_IF(p(215, s), m, MSGPACK_PP_TUPLE_EAT_2)(215, s) MSGPACK_PP_IF(p(215, s), MSGPACK_PP_FOR_215, MSGPACK_PP_TUPLE_EAT_4)(o(215, s), p, o, m)
+# define MSGPACK_PP_FOR_215(s, p, o, m) MSGPACK_PP_IF(p(216, s), m, MSGPACK_PP_TUPLE_EAT_2)(216, s) MSGPACK_PP_IF(p(216, s), MSGPACK_PP_FOR_216, MSGPACK_PP_TUPLE_EAT_4)(o(216, s), p, o, m)
+# define MSGPACK_PP_FOR_216(s, p, o, m) MSGPACK_PP_IF(p(217, s), m, MSGPACK_PP_TUPLE_EAT_2)(217, s) MSGPACK_PP_IF(p(217, s), MSGPACK_PP_FOR_217, MSGPACK_PP_TUPLE_EAT_4)(o(217, s), p, o, m)
+# define MSGPACK_PP_FOR_217(s, p, o, m) MSGPACK_PP_IF(p(218, s), m, MSGPACK_PP_TUPLE_EAT_2)(218, s) MSGPACK_PP_IF(p(218, s), MSGPACK_PP_FOR_218, MSGPACK_PP_TUPLE_EAT_4)(o(218, s), p, o, m)
+# define MSGPACK_PP_FOR_218(s, p, o, m) MSGPACK_PP_IF(p(219, s), m, MSGPACK_PP_TUPLE_EAT_2)(219, s) MSGPACK_PP_IF(p(219, s), MSGPACK_PP_FOR_219, MSGPACK_PP_TUPLE_EAT_4)(o(219, s), p, o, m)
+# define MSGPACK_PP_FOR_219(s, p, o, m) MSGPACK_PP_IF(p(220, s), m, MSGPACK_PP_TUPLE_EAT_2)(220, s) MSGPACK_PP_IF(p(220, s), MSGPACK_PP_FOR_220, MSGPACK_PP_TUPLE_EAT_4)(o(220, s), p, o, m)
+# define MSGPACK_PP_FOR_220(s, p, o, m) MSGPACK_PP_IF(p(221, s), m, MSGPACK_PP_TUPLE_EAT_2)(221, s) MSGPACK_PP_IF(p(221, s), MSGPACK_PP_FOR_221, MSGPACK_PP_TUPLE_EAT_4)(o(221, s), p, o, m)
+# define MSGPACK_PP_FOR_221(s, p, o, m) MSGPACK_PP_IF(p(222, s), m, MSGPACK_PP_TUPLE_EAT_2)(222, s) MSGPACK_PP_IF(p(222, s), MSGPACK_PP_FOR_222, MSGPACK_PP_TUPLE_EAT_4)(o(222, s), p, o, m)
+# define MSGPACK_PP_FOR_222(s, p, o, m) MSGPACK_PP_IF(p(223, s), m, MSGPACK_PP_TUPLE_EAT_2)(223, s) MSGPACK_PP_IF(p(223, s), MSGPACK_PP_FOR_223, MSGPACK_PP_TUPLE_EAT_4)(o(223, s), p, o, m)
+# define MSGPACK_PP_FOR_223(s, p, o, m) MSGPACK_PP_IF(p(224, s), m, MSGPACK_PP_TUPLE_EAT_2)(224, s) MSGPACK_PP_IF(p(224, s), MSGPACK_PP_FOR_224, MSGPACK_PP_TUPLE_EAT_4)(o(224, s), p, o, m)
+# define MSGPACK_PP_FOR_224(s, p, o, m) MSGPACK_PP_IF(p(225, s), m, MSGPACK_PP_TUPLE_EAT_2)(225, s) MSGPACK_PP_IF(p(225, s), MSGPACK_PP_FOR_225, MSGPACK_PP_TUPLE_EAT_4)(o(225, s), p, o, m)
+# define MSGPACK_PP_FOR_225(s, p, o, m) MSGPACK_PP_IF(p(226, s), m, MSGPACK_PP_TUPLE_EAT_2)(226, s) MSGPACK_PP_IF(p(226, s), MSGPACK_PP_FOR_226, MSGPACK_PP_TUPLE_EAT_4)(o(226, s), p, o, m)
+# define MSGPACK_PP_FOR_226(s, p, o, m) MSGPACK_PP_IF(p(227, s), m, MSGPACK_PP_TUPLE_EAT_2)(227, s) MSGPACK_PP_IF(p(227, s), MSGPACK_PP_FOR_227, MSGPACK_PP_TUPLE_EAT_4)(o(227, s), p, o, m)
+# define MSGPACK_PP_FOR_227(s, p, o, m) MSGPACK_PP_IF(p(228, s), m, MSGPACK_PP_TUPLE_EAT_2)(228, s) MSGPACK_PP_IF(p(228, s), MSGPACK_PP_FOR_228, MSGPACK_PP_TUPLE_EAT_4)(o(228, s), p, o, m)
+# define MSGPACK_PP_FOR_228(s, p, o, m) MSGPACK_PP_IF(p(229, s), m, MSGPACK_PP_TUPLE_EAT_2)(229, s) MSGPACK_PP_IF(p(229, s), MSGPACK_PP_FOR_229, MSGPACK_PP_TUPLE_EAT_4)(o(229, s), p, o, m)
+# define MSGPACK_PP_FOR_229(s, p, o, m) MSGPACK_PP_IF(p(230, s), m, MSGPACK_PP_TUPLE_EAT_2)(230, s) MSGPACK_PP_IF(p(230, s), MSGPACK_PP_FOR_230, MSGPACK_PP_TUPLE_EAT_4)(o(230, s), p, o, m)
+# define MSGPACK_PP_FOR_230(s, p, o, m) MSGPACK_PP_IF(p(231, s), m, MSGPACK_PP_TUPLE_EAT_2)(231, s) MSGPACK_PP_IF(p(231, s), MSGPACK_PP_FOR_231, MSGPACK_PP_TUPLE_EAT_4)(o(231, s), p, o, m)
+# define MSGPACK_PP_FOR_231(s, p, o, m) MSGPACK_PP_IF(p(232, s), m, MSGPACK_PP_TUPLE_EAT_2)(232, s) MSGPACK_PP_IF(p(232, s), MSGPACK_PP_FOR_232, MSGPACK_PP_TUPLE_EAT_4)(o(232, s), p, o, m)
+# define MSGPACK_PP_FOR_232(s, p, o, m) MSGPACK_PP_IF(p(233, s), m, MSGPACK_PP_TUPLE_EAT_2)(233, s) MSGPACK_PP_IF(p(233, s), MSGPACK_PP_FOR_233, MSGPACK_PP_TUPLE_EAT_4)(o(233, s), p, o, m)
+# define MSGPACK_PP_FOR_233(s, p, o, m) MSGPACK_PP_IF(p(234, s), m, MSGPACK_PP_TUPLE_EAT_2)(234, s) MSGPACK_PP_IF(p(234, s), MSGPACK_PP_FOR_234, MSGPACK_PP_TUPLE_EAT_4)(o(234, s), p, o, m)
+# define MSGPACK_PP_FOR_234(s, p, o, m) MSGPACK_PP_IF(p(235, s), m, MSGPACK_PP_TUPLE_EAT_2)(235, s) MSGPACK_PP_IF(p(235, s), MSGPACK_PP_FOR_235, MSGPACK_PP_TUPLE_EAT_4)(o(235, s), p, o, m)
+# define MSGPACK_PP_FOR_235(s, p, o, m) MSGPACK_PP_IF(p(236, s), m, MSGPACK_PP_TUPLE_EAT_2)(236, s) MSGPACK_PP_IF(p(236, s), MSGPACK_PP_FOR_236, MSGPACK_PP_TUPLE_EAT_4)(o(236, s), p, o, m)
+# define MSGPACK_PP_FOR_236(s, p, o, m) MSGPACK_PP_IF(p(237, s), m, MSGPACK_PP_TUPLE_EAT_2)(237, s) MSGPACK_PP_IF(p(237, s), MSGPACK_PP_FOR_237, MSGPACK_PP_TUPLE_EAT_4)(o(237, s), p, o, m)
+# define MSGPACK_PP_FOR_237(s, p, o, m) MSGPACK_PP_IF(p(238, s), m, MSGPACK_PP_TUPLE_EAT_2)(238, s) MSGPACK_PP_IF(p(238, s), MSGPACK_PP_FOR_238, MSGPACK_PP_TUPLE_EAT_4)(o(238, s), p, o, m)
+# define MSGPACK_PP_FOR_238(s, p, o, m) MSGPACK_PP_IF(p(239, s), m, MSGPACK_PP_TUPLE_EAT_2)(239, s) MSGPACK_PP_IF(p(239, s), MSGPACK_PP_FOR_239, MSGPACK_PP_TUPLE_EAT_4)(o(239, s), p, o, m)
+# define MSGPACK_PP_FOR_239(s, p, o, m) MSGPACK_PP_IF(p(240, s), m, MSGPACK_PP_TUPLE_EAT_2)(240, s) MSGPACK_PP_IF(p(240, s), MSGPACK_PP_FOR_240, MSGPACK_PP_TUPLE_EAT_4)(o(240, s), p, o, m)
+# define MSGPACK_PP_FOR_240(s, p, o, m) MSGPACK_PP_IF(p(241, s), m, MSGPACK_PP_TUPLE_EAT_2)(241, s) MSGPACK_PP_IF(p(241, s), MSGPACK_PP_FOR_241, MSGPACK_PP_TUPLE_EAT_4)(o(241, s), p, o, m)
+# define MSGPACK_PP_FOR_241(s, p, o, m) MSGPACK_PP_IF(p(242, s), m, MSGPACK_PP_TUPLE_EAT_2)(242, s) MSGPACK_PP_IF(p(242, s), MSGPACK_PP_FOR_242, MSGPACK_PP_TUPLE_EAT_4)(o(242, s), p, o, m)
+# define MSGPACK_PP_FOR_242(s, p, o, m) MSGPACK_PP_IF(p(243, s), m, MSGPACK_PP_TUPLE_EAT_2)(243, s) MSGPACK_PP_IF(p(243, s), MSGPACK_PP_FOR_243, MSGPACK_PP_TUPLE_EAT_4)(o(243, s), p, o, m)
+# define MSGPACK_PP_FOR_243(s, p, o, m) MSGPACK_PP_IF(p(244, s), m, MSGPACK_PP_TUPLE_EAT_2)(244, s) MSGPACK_PP_IF(p(244, s), MSGPACK_PP_FOR_244, MSGPACK_PP_TUPLE_EAT_4)(o(244, s), p, o, m)
+# define MSGPACK_PP_FOR_244(s, p, o, m) MSGPACK_PP_IF(p(245, s), m, MSGPACK_PP_TUPLE_EAT_2)(245, s) MSGPACK_PP_IF(p(245, s), MSGPACK_PP_FOR_245, MSGPACK_PP_TUPLE_EAT_4)(o(245, s), p, o, m)
+# define MSGPACK_PP_FOR_245(s, p, o, m) MSGPACK_PP_IF(p(246, s), m, MSGPACK_PP_TUPLE_EAT_2)(246, s) MSGPACK_PP_IF(p(246, s), MSGPACK_PP_FOR_246, MSGPACK_PP_TUPLE_EAT_4)(o(246, s), p, o, m)
+# define MSGPACK_PP_FOR_246(s, p, o, m) MSGPACK_PP_IF(p(247, s), m, MSGPACK_PP_TUPLE_EAT_2)(247, s) MSGPACK_PP_IF(p(247, s), MSGPACK_PP_FOR_247, MSGPACK_PP_TUPLE_EAT_4)(o(247, s), p, o, m)
+# define MSGPACK_PP_FOR_247(s, p, o, m) MSGPACK_PP_IF(p(248, s), m, MSGPACK_PP_TUPLE_EAT_2)(248, s) MSGPACK_PP_IF(p(248, s), MSGPACK_PP_FOR_248, MSGPACK_PP_TUPLE_EAT_4)(o(248, s), p, o, m)
+# define MSGPACK_PP_FOR_248(s, p, o, m) MSGPACK_PP_IF(p(249, s), m, MSGPACK_PP_TUPLE_EAT_2)(249, s) MSGPACK_PP_IF(p(249, s), MSGPACK_PP_FOR_249, MSGPACK_PP_TUPLE_EAT_4)(o(249, s), p, o, m)
+# define MSGPACK_PP_FOR_249(s, p, o, m) MSGPACK_PP_IF(p(250, s), m, MSGPACK_PP_TUPLE_EAT_2)(250, s) MSGPACK_PP_IF(p(250, s), MSGPACK_PP_FOR_250, MSGPACK_PP_TUPLE_EAT_4)(o(250, s), p, o, m)
+# define MSGPACK_PP_FOR_250(s, p, o, m) MSGPACK_PP_IF(p(251, s), m, MSGPACK_PP_TUPLE_EAT_2)(251, s) MSGPACK_PP_IF(p(251, s), MSGPACK_PP_FOR_251, MSGPACK_PP_TUPLE_EAT_4)(o(251, s), p, o, m)
+# define MSGPACK_PP_FOR_251(s, p, o, m) MSGPACK_PP_IF(p(252, s), m, MSGPACK_PP_TUPLE_EAT_2)(252, s) MSGPACK_PP_IF(p(252, s), MSGPACK_PP_FOR_252, MSGPACK_PP_TUPLE_EAT_4)(o(252, s), p, o, m)
+# define MSGPACK_PP_FOR_252(s, p, o, m) MSGPACK_PP_IF(p(253, s), m, MSGPACK_PP_TUPLE_EAT_2)(253, s) MSGPACK_PP_IF(p(253, s), MSGPACK_PP_FOR_253, MSGPACK_PP_TUPLE_EAT_4)(o(253, s), p, o, m)
+# define MSGPACK_PP_FOR_253(s, p, o, m) MSGPACK_PP_IF(p(254, s), m, MSGPACK_PP_TUPLE_EAT_2)(254, s) MSGPACK_PP_IF(p(254, s), MSGPACK_PP_FOR_254, MSGPACK_PP_TUPLE_EAT_4)(o(254, s), p, o, m)
+# define MSGPACK_PP_FOR_254(s, p, o, m) MSGPACK_PP_IF(p(255, s), m, MSGPACK_PP_TUPLE_EAT_2)(255, s) MSGPACK_PP_IF(p(255, s), MSGPACK_PP_FOR_255, MSGPACK_PP_TUPLE_EAT_4)(o(255, s), p, o, m)
+# define MSGPACK_PP_FOR_255(s, p, o, m) MSGPACK_PP_IF(p(256, s), m, MSGPACK_PP_TUPLE_EAT_2)(256, s) MSGPACK_PP_IF(p(256, s), MSGPACK_PP_FOR_256, MSGPACK_PP_TUPLE_EAT_4)(o(256, s), p, o, m)
+# define MSGPACK_PP_FOR_256(s, p, o, m) MSGPACK_PP_IF(p(257, s), m, MSGPACK_PP_TUPLE_EAT_2)(257, s) MSGPACK_PP_IF(p(257, s), MSGPACK_PP_FOR_257, MSGPACK_PP_TUPLE_EAT_4)(o(257, s), p, o, m)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/repetition/enum.hpp b/third_party/msgpack/include/msgpack/preprocessor/repetition/enum.hpp
new file mode 100644
index 0000000000..56952debc4
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/repetition/enum.hpp
@@ -0,0 +1,66 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_REPETITION_ENUM_HPP
+# define MSGPACK_PREPROCESSOR_REPETITION_ENUM_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/debug/error.hpp>
+# include <msgpack/preprocessor/detail/auto_rec.hpp>
+# include <msgpack/preprocessor/punctuation/comma_if.hpp>
+# include <msgpack/preprocessor/repetition/repeat.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+# include <msgpack/preprocessor/tuple/rem.hpp>
+#
+# /* MSGPACK_PP_ENUM */
+#
+# if 0
+# define MSGPACK_PP_ENUM(count, macro, data)
+# endif
+#
+# define MSGPACK_PP_ENUM MSGPACK_PP_CAT(MSGPACK_PP_ENUM_, MSGPACK_PP_AUTO_REC(MSGPACK_PP_REPEAT_P, 4))
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_ENUM_1(c, m, d) MSGPACK_PP_REPEAT_1(c, MSGPACK_PP_ENUM_M_1, (m, d))
+# define MSGPACK_PP_ENUM_2(c, m, d) MSGPACK_PP_REPEAT_2(c, MSGPACK_PP_ENUM_M_2, (m, d))
+# define MSGPACK_PP_ENUM_3(c, m, d) MSGPACK_PP_REPEAT_3(c, MSGPACK_PP_ENUM_M_3, (m, d))
+# else
+# define MSGPACK_PP_ENUM_1(c, m, d) MSGPACK_PP_ENUM_1_I(c, m, d)
+# define MSGPACK_PP_ENUM_2(c, m, d) MSGPACK_PP_ENUM_2_I(c, m, d)
+# define MSGPACK_PP_ENUM_3(c, m, d) MSGPACK_PP_ENUM_3_I(c, m, d)
+# define MSGPACK_PP_ENUM_1_I(c, m, d) MSGPACK_PP_REPEAT_1(c, MSGPACK_PP_ENUM_M_1, (m, d))
+# define MSGPACK_PP_ENUM_2_I(c, m, d) MSGPACK_PP_REPEAT_2(c, MSGPACK_PP_ENUM_M_2, (m, d))
+# define MSGPACK_PP_ENUM_3_I(c, m, d) MSGPACK_PP_REPEAT_3(c, MSGPACK_PP_ENUM_M_3, (m, d))
+# endif
+#
+# define MSGPACK_PP_ENUM_4(c, m, d) MSGPACK_PP_ERROR(0x0003)
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_STRICT()
+# define MSGPACK_PP_ENUM_M_1(z, n, md) MSGPACK_PP_ENUM_M_1_IM(z, n, MSGPACK_PP_TUPLE_REM_2 md)
+# define MSGPACK_PP_ENUM_M_2(z, n, md) MSGPACK_PP_ENUM_M_2_IM(z, n, MSGPACK_PP_TUPLE_REM_2 md)
+# define MSGPACK_PP_ENUM_M_3(z, n, md) MSGPACK_PP_ENUM_M_3_IM(z, n, MSGPACK_PP_TUPLE_REM_2 md)
+# define MSGPACK_PP_ENUM_M_1_IM(z, n, im) MSGPACK_PP_ENUM_M_1_I(z, n, im)
+# define MSGPACK_PP_ENUM_M_2_IM(z, n, im) MSGPACK_PP_ENUM_M_2_I(z, n, im)
+# define MSGPACK_PP_ENUM_M_3_IM(z, n, im) MSGPACK_PP_ENUM_M_3_I(z, n, im)
+# else
+# define MSGPACK_PP_ENUM_M_1(z, n, md) MSGPACK_PP_ENUM_M_1_I(z, n, MSGPACK_PP_TUPLE_ELEM(2, 0, md), MSGPACK_PP_TUPLE_ELEM(2, 1, md))
+# define MSGPACK_PP_ENUM_M_2(z, n, md) MSGPACK_PP_ENUM_M_2_I(z, n, MSGPACK_PP_TUPLE_ELEM(2, 0, md), MSGPACK_PP_TUPLE_ELEM(2, 1, md))
+# define MSGPACK_PP_ENUM_M_3(z, n, md) MSGPACK_PP_ENUM_M_3_I(z, n, MSGPACK_PP_TUPLE_ELEM(2, 0, md), MSGPACK_PP_TUPLE_ELEM(2, 1, md))
+# endif
+#
+# define MSGPACK_PP_ENUM_M_1_I(z, n, m, d) MSGPACK_PP_COMMA_IF(n) m(z, n, d)
+# define MSGPACK_PP_ENUM_M_2_I(z, n, m, d) MSGPACK_PP_COMMA_IF(n) m(z, n, d)
+# define MSGPACK_PP_ENUM_M_3_I(z, n, m, d) MSGPACK_PP_COMMA_IF(n) m(z, n, d)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/repetition/enum_binary_params.hpp b/third_party/msgpack/include/msgpack/preprocessor/repetition/enum_binary_params.hpp
new file mode 100644
index 0000000000..4bfd8363e3
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/repetition/enum_binary_params.hpp
@@ -0,0 +1,54 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_REPETITION_ENUM_BINARY_PARAMS_HPP
+# define MSGPACK_PREPROCESSOR_REPETITION_ENUM_BINARY_PARAMS_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/punctuation/comma_if.hpp>
+# include <msgpack/preprocessor/repetition/repeat.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+# include <msgpack/preprocessor/tuple/rem.hpp>
+#
+# /* MSGPACK_PP_ENUM_BINARY_PARAMS */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_ENUM_BINARY_PARAMS(count, p1, p2) MSGPACK_PP_REPEAT(count, MSGPACK_PP_ENUM_BINARY_PARAMS_M, (p1, p2))
+# else
+# define MSGPACK_PP_ENUM_BINARY_PARAMS(count, p1, p2) MSGPACK_PP_ENUM_BINARY_PARAMS_I(count, p1, p2)
+# define MSGPACK_PP_ENUM_BINARY_PARAMS_I(count, p1, p2) MSGPACK_PP_REPEAT(count, MSGPACK_PP_ENUM_BINARY_PARAMS_M, (p1, p2))
+# endif
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_STRICT()
+# define MSGPACK_PP_ENUM_BINARY_PARAMS_M(z, n, pp) MSGPACK_PP_ENUM_BINARY_PARAMS_M_IM(z, n, MSGPACK_PP_TUPLE_REM_2 pp)
+# define MSGPACK_PP_ENUM_BINARY_PARAMS_M_IM(z, n, im) MSGPACK_PP_ENUM_BINARY_PARAMS_M_I(z, n, im)
+# else
+# define MSGPACK_PP_ENUM_BINARY_PARAMS_M(z, n, pp) MSGPACK_PP_ENUM_BINARY_PARAMS_M_I(z, n, MSGPACK_PP_TUPLE_ELEM(2, 0, pp), MSGPACK_PP_TUPLE_ELEM(2, 1, pp))
+# endif
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MSVC()
+# define MSGPACK_PP_ENUM_BINARY_PARAMS_M_I(z, n, p1, p2) MSGPACK_PP_ENUM_BINARY_PARAMS_M_II(z, n, p1, p2)
+# define MSGPACK_PP_ENUM_BINARY_PARAMS_M_II(z, n, p1, p2) MSGPACK_PP_COMMA_IF(n) p1 ## n p2 ## n
+# else
+# define MSGPACK_PP_ENUM_BINARY_PARAMS_M_I(z, n, p1, p2) MSGPACK_PP_COMMA_IF(n) MSGPACK_PP_CAT(p1, n) MSGPACK_PP_CAT(p2, n)
+# endif
+#
+# /* MSGPACK_PP_ENUM_BINARY_PARAMS_Z */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_ENUM_BINARY_PARAMS_Z(z, count, p1, p2) MSGPACK_PP_REPEAT_ ## z(count, MSGPACK_PP_ENUM_BINARY_PARAMS_M, (p1, p2))
+# else
+# define MSGPACK_PP_ENUM_BINARY_PARAMS_Z(z, count, p1, p2) MSGPACK_PP_ENUM_BINARY_PARAMS_Z_I(z, count, p1, p2)
+# define MSGPACK_PP_ENUM_BINARY_PARAMS_Z_I(z, count, p1, p2) MSGPACK_PP_REPEAT_ ## z(count, MSGPACK_PP_ENUM_BINARY_PARAMS_M, (p1, p2))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/repetition/enum_params.hpp b/third_party/msgpack/include/msgpack/preprocessor/repetition/enum_params.hpp
new file mode 100644
index 0000000000..5d03dd0495
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/repetition/enum_params.hpp
@@ -0,0 +1,41 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_REPETITION_ENUM_PARAMS_HPP
+# define MSGPACK_PREPROCESSOR_REPETITION_ENUM_PARAMS_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/punctuation/comma_if.hpp>
+# include <msgpack/preprocessor/repetition/repeat.hpp>
+#
+# /* MSGPACK_PP_ENUM_PARAMS */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_ENUM_PARAMS(count, param) MSGPACK_PP_REPEAT(count, MSGPACK_PP_ENUM_PARAMS_M, param)
+# else
+# define MSGPACK_PP_ENUM_PARAMS(count, param) MSGPACK_PP_ENUM_PARAMS_I(count, param)
+# define MSGPACK_PP_ENUM_PARAMS_I(count, param) MSGPACK_PP_REPEAT(count, MSGPACK_PP_ENUM_PARAMS_M, param)
+# endif
+#
+# define MSGPACK_PP_ENUM_PARAMS_M(z, n, param) MSGPACK_PP_COMMA_IF(n) param ## n
+#
+# /* MSGPACK_PP_ENUM_PARAMS_Z */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_ENUM_PARAMS_Z(z, count, param) MSGPACK_PP_REPEAT_ ## z(count, MSGPACK_PP_ENUM_PARAMS_M, param)
+# else
+# define MSGPACK_PP_ENUM_PARAMS_Z(z, count, param) MSGPACK_PP_ENUM_PARAMS_Z_I(z, count, param)
+# define MSGPACK_PP_ENUM_PARAMS_Z_I(z, count, param) MSGPACK_PP_REPEAT_ ## z(count, MSGPACK_PP_ENUM_PARAMS_M, param)
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/repetition/enum_params_with_a_default.hpp b/third_party/msgpack/include/msgpack/preprocessor/repetition/enum_params_with_a_default.hpp
new file mode 100644
index 0000000000..27e9ad9fe5
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/repetition/enum_params_with_a_default.hpp
@@ -0,0 +1,25 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_REPETITION_ENUM_PARAMS_WITH_A_DEFAULT_HPP
+# define MSGPACK_PREPROCESSOR_REPETITION_ENUM_PARAMS_WITH_A_DEFAULT_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/facilities/intercept.hpp>
+# include <msgpack/preprocessor/repetition/enum_binary_params.hpp>
+#
+# /* MSGPACK_PP_ENUM_PARAMS_WITH_A_DEFAULT */
+#
+# define MSGPACK_PP_ENUM_PARAMS_WITH_A_DEFAULT(count, param, def) MSGPACK_PP_ENUM_BINARY_PARAMS(count, param, = def MSGPACK_PP_INTERCEPT)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/repetition/enum_params_with_defaults.hpp b/third_party/msgpack/include/msgpack/preprocessor/repetition/enum_params_with_defaults.hpp
new file mode 100644
index 0000000000..19b21280f7
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/repetition/enum_params_with_defaults.hpp
@@ -0,0 +1,24 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_REPETITION_ENUM_PARAMS_WITH_DEFAULTS_HPP
+# define MSGPACK_PREPROCESSOR_REPETITION_ENUM_PARAMS_WITH_DEFAULTS_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/repetition/enum_binary_params.hpp>
+#
+# /* MSGPACK_PP_ENUM_PARAMS_WITH_DEFAULTS */
+#
+# define MSGPACK_PP_ENUM_PARAMS_WITH_DEFAULTS(count, param, def) MSGPACK_PP_ENUM_BINARY_PARAMS(count, param, = def)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/repetition/enum_shifted.hpp b/third_party/msgpack/include/msgpack/preprocessor/repetition/enum_shifted.hpp
new file mode 100644
index 0000000000..71d549ba4f
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/repetition/enum_shifted.hpp
@@ -0,0 +1,68 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_REPETITION_ENUM_SHIFTED_HPP
+# define MSGPACK_PREPROCESSOR_REPETITION_ENUM_SHIFTED_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/arithmetic/dec.hpp>
+# include <msgpack/preprocessor/arithmetic/inc.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/debug/error.hpp>
+# include <msgpack/preprocessor/detail/auto_rec.hpp>
+# include <msgpack/preprocessor/punctuation/comma_if.hpp>
+# include <msgpack/preprocessor/repetition/repeat.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+# include <msgpack/preprocessor/tuple/rem.hpp>
+#
+# /* MSGPACK_PP_ENUM_SHIFTED */
+#
+# if 0
+# define MSGPACK_PP_ENUM_SHIFTED(count, macro, data)
+# endif
+#
+# define MSGPACK_PP_ENUM_SHIFTED MSGPACK_PP_CAT(MSGPACK_PP_ENUM_SHIFTED_, MSGPACK_PP_AUTO_REC(MSGPACK_PP_REPEAT_P, 4))
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_ENUM_SHIFTED_1(c, m, d) MSGPACK_PP_REPEAT_1(MSGPACK_PP_DEC(c), MSGPACK_PP_ENUM_SHIFTED_M_1, (m, d))
+# define MSGPACK_PP_ENUM_SHIFTED_2(c, m, d) MSGPACK_PP_REPEAT_2(MSGPACK_PP_DEC(c), MSGPACK_PP_ENUM_SHIFTED_M_2, (m, d))
+# define MSGPACK_PP_ENUM_SHIFTED_3(c, m, d) MSGPACK_PP_REPEAT_3(MSGPACK_PP_DEC(c), MSGPACK_PP_ENUM_SHIFTED_M_3, (m, d))
+# else
+# define MSGPACK_PP_ENUM_SHIFTED_1(c, m, d) MSGPACK_PP_ENUM_SHIFTED_1_I(c, m, d)
+# define MSGPACK_PP_ENUM_SHIFTED_2(c, m, d) MSGPACK_PP_ENUM_SHIFTED_1_2(c, m, d)
+# define MSGPACK_PP_ENUM_SHIFTED_3(c, m, d) MSGPACK_PP_ENUM_SHIFTED_1_3(c, m, d)
+# define MSGPACK_PP_ENUM_SHIFTED_1_I(c, m, d) MSGPACK_PP_REPEAT_1(MSGPACK_PP_DEC(c), MSGPACK_PP_ENUM_SHIFTED_M_1, (m, d))
+# define MSGPACK_PP_ENUM_SHIFTED_2_I(c, m, d) MSGPACK_PP_REPEAT_2(MSGPACK_PP_DEC(c), MSGPACK_PP_ENUM_SHIFTED_M_2, (m, d))
+# define MSGPACK_PP_ENUM_SHIFTED_3_I(c, m, d) MSGPACK_PP_REPEAT_3(MSGPACK_PP_DEC(c), MSGPACK_PP_ENUM_SHIFTED_M_3, (m, d))
+# endif
+#
+# define MSGPACK_PP_ENUM_SHIFTED_4(c, m, d) MSGPACK_PP_ERROR(0x0003)
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_STRICT()
+# define MSGPACK_PP_ENUM_SHIFTED_M_1(z, n, md) MSGPACK_PP_ENUM_SHIFTED_M_1_IM(z, n, MSGPACK_PP_TUPLE_REM_2 md)
+# define MSGPACK_PP_ENUM_SHIFTED_M_2(z, n, md) MSGPACK_PP_ENUM_SHIFTED_M_2_IM(z, n, MSGPACK_PP_TUPLE_REM_2 md)
+# define MSGPACK_PP_ENUM_SHIFTED_M_3(z, n, md) MSGPACK_PP_ENUM_SHIFTED_M_3_IM(z, n, MSGPACK_PP_TUPLE_REM_2 md)
+# define MSGPACK_PP_ENUM_SHIFTED_M_1_IM(z, n, im) MSGPACK_PP_ENUM_SHIFTED_M_1_I(z, n, im)
+# define MSGPACK_PP_ENUM_SHIFTED_M_2_IM(z, n, im) MSGPACK_PP_ENUM_SHIFTED_M_2_I(z, n, im)
+# define MSGPACK_PP_ENUM_SHIFTED_M_3_IM(z, n, im) MSGPACK_PP_ENUM_SHIFTED_M_3_I(z, n, im)
+# else
+# define MSGPACK_PP_ENUM_SHIFTED_M_1(z, n, md) MSGPACK_PP_ENUM_SHIFTED_M_1_I(z, n, MSGPACK_PP_TUPLE_ELEM(2, 0, md), MSGPACK_PP_TUPLE_ELEM(2, 1, md))
+# define MSGPACK_PP_ENUM_SHIFTED_M_2(z, n, md) MSGPACK_PP_ENUM_SHIFTED_M_2_I(z, n, MSGPACK_PP_TUPLE_ELEM(2, 0, md), MSGPACK_PP_TUPLE_ELEM(2, 1, md))
+# define MSGPACK_PP_ENUM_SHIFTED_M_3(z, n, md) MSGPACK_PP_ENUM_SHIFTED_M_3_I(z, n, MSGPACK_PP_TUPLE_ELEM(2, 0, md), MSGPACK_PP_TUPLE_ELEM(2, 1, md))
+# endif
+#
+# define MSGPACK_PP_ENUM_SHIFTED_M_1_I(z, n, m, d) MSGPACK_PP_COMMA_IF(n) m(z, MSGPACK_PP_INC(n), d)
+# define MSGPACK_PP_ENUM_SHIFTED_M_2_I(z, n, m, d) MSGPACK_PP_COMMA_IF(n) m(z, MSGPACK_PP_INC(n), d)
+# define MSGPACK_PP_ENUM_SHIFTED_M_3_I(z, n, m, d) MSGPACK_PP_COMMA_IF(n) m(z, MSGPACK_PP_INC(n), d)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/repetition/enum_shifted_binary_params.hpp b/third_party/msgpack/include/msgpack/preprocessor/repetition/enum_shifted_binary_params.hpp
new file mode 100644
index 0000000000..fe8e270d05
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/repetition/enum_shifted_binary_params.hpp
@@ -0,0 +1,51 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2005. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_REPETITION_ENUM_SHIFTED_BINARY_PARAMS_HPP
+# define MSGPACK_PREPROCESSOR_REPETITION_ENUM_SHIFTED_BINARY_PARAMS_HPP
+#
+# include <msgpack/preprocessor/arithmetic/dec.hpp>
+# include <msgpack/preprocessor/arithmetic/inc.hpp>
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/punctuation/comma_if.hpp>
+# include <msgpack/preprocessor/repetition/repeat.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+# include <msgpack/preprocessor/tuple/rem.hpp>
+#
+# /* MSGPACK_PP_ENUM_SHIFTED_BINARY_PARAMS */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_ENUM_SHIFTED_BINARY_PARAMS(count, p1, p2) MSGPACK_PP_REPEAT(MSGPACK_PP_DEC(count), MSGPACK_PP_ENUM_SHIFTED_BINARY_PARAMS_M, (p1, p2))
+# else
+# define MSGPACK_PP_ENUM_SHIFTED_BINARY_PARAMS(count, p1, p2) MSGPACK_PP_ENUM_SHIFTED_BINARY_PARAMS_I(count, p1, p2)
+# define MSGPACK_PP_ENUM_SHIFTED_BINARY_PARAMS_I(count, p1, p2) MSGPACK_PP_REPEAT(MSGPACK_PP_DEC(count), MSGPACK_PP_ENUM_SHIFTED_BINARY_PARAMS_M, (p1, p2))
+# endif
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_STRICT()
+# define MSGPACK_PP_ENUM_SHIFTED_BINARY_PARAMS_M(z, n, pp) MSGPACK_PP_ENUM_SHIFTED_BINARY_PARAMS_M_IM(z, n, MSGPACK_PP_TUPLE_REM_2 pp)
+# define MSGPACK_PP_ENUM_SHIFTED_BINARY_PARAMS_M_IM(z, n, im) MSGPACK_PP_ENUM_SHIFTED_BINARY_PARAMS_M_I(z, n, im)
+# else
+# define MSGPACK_PP_ENUM_SHIFTED_BINARY_PARAMS_M(z, n, pp) MSGPACK_PP_ENUM_SHIFTED_BINARY_PARAMS_M_I(z, n, MSGPACK_PP_TUPLE_ELEM(2, 0, pp), MSGPACK_PP_TUPLE_ELEM(2, 1, pp))
+# endif
+#
+# define MSGPACK_PP_ENUM_SHIFTED_BINARY_PARAMS_M_I(z, n, p1, p2) MSGPACK_PP_COMMA_IF(n) MSGPACK_PP_CAT(p1, MSGPACK_PP_INC(n)) MSGPACK_PP_CAT(p2, MSGPACK_PP_INC(n))
+#
+# /* MSGPACK_PP_ENUM_SHIFTED_BINARY_PARAMS_Z */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_ENUM_SHIFTED_BINARY_PARAMS_Z(z, count, p1, p2) MSGPACK_PP_REPEAT_ ## z(MSGPACK_PP_DEC(count), MSGPACK_PP_ENUM_SHIFTED_BINARY_PARAMS_M, (p1, p2))
+# else
+# define MSGPACK_PP_ENUM_SHIFTED_BINARY_PARAMS_Z(z, count, p1, p2) MSGPACK_PP_ENUM_SHIFTED_BINARY_PARAMS_Z_I(z, count, p1, p2)
+# define MSGPACK_PP_ENUM_SHIFTED_BINARY_PARAMS_Z_I(z, count, p1, p2) MSGPACK_PP_REPEAT_ ## z(MSGPACK_PP_DEC(count), MSGPACK_PP_ENUM_SHIFTED_BINARY_PARAMS_M, (p1, p2))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/repetition/enum_shifted_params.hpp b/third_party/msgpack/include/msgpack/preprocessor/repetition/enum_shifted_params.hpp
new file mode 100644
index 0000000000..ea12790c5b
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/repetition/enum_shifted_params.hpp
@@ -0,0 +1,44 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_REPETITION_ENUM_SHIFTED_PARAMS_HPP
+# define MSGPACK_PREPROCESSOR_REPETITION_ENUM_SHIFTED_PARAMS_HPP
+#
+# include <msgpack/preprocessor/arithmetic/dec.hpp>
+# include <msgpack/preprocessor/arithmetic/inc.hpp>
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/punctuation/comma_if.hpp>
+# include <msgpack/preprocessor/repetition/repeat.hpp>
+#
+# /* MSGPACK_PP_ENUM_SHIFTED_PARAMS */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_ENUM_SHIFTED_PARAMS(count, param) MSGPACK_PP_REPEAT(MSGPACK_PP_DEC(count), MSGPACK_PP_ENUM_SHIFTED_PARAMS_M, param)
+# else
+# define MSGPACK_PP_ENUM_SHIFTED_PARAMS(count, param) MSGPACK_PP_ENUM_SHIFTED_PARAMS_I(count, param)
+# define MSGPACK_PP_ENUM_SHIFTED_PARAMS_I(count, param) MSGPACK_PP_REPEAT(MSGPACK_PP_DEC(count), MSGPACK_PP_ENUM_SHIFTED_PARAMS_M, param)
+# endif
+#
+# define MSGPACK_PP_ENUM_SHIFTED_PARAMS_M(z, n, param) MSGPACK_PP_COMMA_IF(n) MSGPACK_PP_CAT(param, MSGPACK_PP_INC(n))
+#
+# /* MSGPACK_PP_ENUM_SHIFTED_PARAMS_Z */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_ENUM_SHIFTED_PARAMS_Z(z, count, param) MSGPACK_PP_REPEAT_ ## z(MSGPACK_PP_DEC(count), MSGPACK_PP_ENUM_SHIFTED_PARAMS_M, param)
+# else
+# define MSGPACK_PP_ENUM_SHIFTED_PARAMS_Z(z, count, param) MSGPACK_PP_ENUM_SHIFTED_PARAMS_Z_I(z, count, param)
+# define MSGPACK_PP_ENUM_SHIFTED_PARAMS_Z_I(z, count, param) MSGPACK_PP_REPEAT_ ## z(MSGPACK_PP_DEC(count), MSGPACK_PP_ENUM_SHIFTED_PARAMS_M, param)
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/repetition/enum_trailing.hpp b/third_party/msgpack/include/msgpack/preprocessor/repetition/enum_trailing.hpp
new file mode 100644
index 0000000000..96360f84fd
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/repetition/enum_trailing.hpp
@@ -0,0 +1,63 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_REPETITION_ENUM_TRAILING_HPP
+# define MSGPACK_PREPROCESSOR_REPETITION_ENUM_TRAILING_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/debug/error.hpp>
+# include <msgpack/preprocessor/detail/auto_rec.hpp>
+# include <msgpack/preprocessor/repetition/repeat.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+# include <msgpack/preprocessor/tuple/rem.hpp>
+#
+# /* MSGPACK_PP_ENUM_TRAILING */
+#
+# if 0
+# define MSGPACK_PP_ENUM_TRAILING(count, macro, data)
+# endif
+#
+# define MSGPACK_PP_ENUM_TRAILING MSGPACK_PP_CAT(MSGPACK_PP_ENUM_TRAILING_, MSGPACK_PP_AUTO_REC(MSGPACK_PP_REPEAT_P, 4))
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_ENUM_TRAILING_1(c, m, d) MSGPACK_PP_REPEAT_1(c, MSGPACK_PP_ENUM_TRAILING_M_1, (m, d))
+# define MSGPACK_PP_ENUM_TRAILING_2(c, m, d) MSGPACK_PP_REPEAT_2(c, MSGPACK_PP_ENUM_TRAILING_M_2, (m, d))
+# define MSGPACK_PP_ENUM_TRAILING_3(c, m, d) MSGPACK_PP_REPEAT_3(c, MSGPACK_PP_ENUM_TRAILING_M_3, (m, d))
+# else
+# define MSGPACK_PP_ENUM_TRAILING_1(c, m, d) MSGPACK_PP_ENUM_TRAILING_1_I(c, m, d)
+# define MSGPACK_PP_ENUM_TRAILING_2(c, m, d) MSGPACK_PP_ENUM_TRAILING_2_I(c, m, d)
+# define MSGPACK_PP_ENUM_TRAILING_3(c, m, d) MSGPACK_PP_ENUM_TRAILING_3_I(c, m, d)
+# define MSGPACK_PP_ENUM_TRAILING_1_I(c, m, d) MSGPACK_PP_REPEAT_1(c, MSGPACK_PP_ENUM_TRAILING_M_1, (m, d))
+# define MSGPACK_PP_ENUM_TRAILING_2_I(c, m, d) MSGPACK_PP_REPEAT_2(c, MSGPACK_PP_ENUM_TRAILING_M_2, (m, d))
+# define MSGPACK_PP_ENUM_TRAILING_3_I(c, m, d) MSGPACK_PP_REPEAT_3(c, MSGPACK_PP_ENUM_TRAILING_M_3, (m, d))
+# endif
+#
+# define MSGPACK_PP_ENUM_TRAILING_4(c, m, d) MSGPACK_PP_ERROR(0x0003)
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_STRICT()
+# define MSGPACK_PP_ENUM_TRAILING_M_1(z, n, md) MSGPACK_PP_ENUM_TRAILING_M_1_IM(z, n, MSGPACK_PP_TUPLE_REM_2 md)
+# define MSGPACK_PP_ENUM_TRAILING_M_2(z, n, md) MSGPACK_PP_ENUM_TRAILING_M_2_IM(z, n, MSGPACK_PP_TUPLE_REM_2 md)
+# define MSGPACK_PP_ENUM_TRAILING_M_3(z, n, md) MSGPACK_PP_ENUM_TRAILING_M_3_IM(z, n, MSGPACK_PP_TUPLE_REM_2 md)
+# define MSGPACK_PP_ENUM_TRAILING_M_1_IM(z, n, im) MSGPACK_PP_ENUM_TRAILING_M_1_I(z, n, im)
+# define MSGPACK_PP_ENUM_TRAILING_M_2_IM(z, n, im) MSGPACK_PP_ENUM_TRAILING_M_2_I(z, n, im)
+# define MSGPACK_PP_ENUM_TRAILING_M_3_IM(z, n, im) MSGPACK_PP_ENUM_TRAILING_M_3_I(z, n, im)
+# else
+# define MSGPACK_PP_ENUM_TRAILING_M_1(z, n, md) MSGPACK_PP_ENUM_TRAILING_M_1_I(z, n, MSGPACK_PP_TUPLE_ELEM(2, 0, md), MSGPACK_PP_TUPLE_ELEM(2, 1, md))
+# define MSGPACK_PP_ENUM_TRAILING_M_2(z, n, md) MSGPACK_PP_ENUM_TRAILING_M_2_I(z, n, MSGPACK_PP_TUPLE_ELEM(2, 0, md), MSGPACK_PP_TUPLE_ELEM(2, 1, md))
+# define MSGPACK_PP_ENUM_TRAILING_M_3(z, n, md) MSGPACK_PP_ENUM_TRAILING_M_3_I(z, n, MSGPACK_PP_TUPLE_ELEM(2, 0, md), MSGPACK_PP_TUPLE_ELEM(2, 1, md))
+# endif
+#
+# define MSGPACK_PP_ENUM_TRAILING_M_1_I(z, n, m, d) , m(z, n, d)
+# define MSGPACK_PP_ENUM_TRAILING_M_2_I(z, n, m, d) , m(z, n, d)
+# define MSGPACK_PP_ENUM_TRAILING_M_3_I(z, n, m, d) , m(z, n, d)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/repetition/enum_trailing_binary_params.hpp b/third_party/msgpack/include/msgpack/preprocessor/repetition/enum_trailing_binary_params.hpp
new file mode 100644
index 0000000000..fb2cb5dcd1
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/repetition/enum_trailing_binary_params.hpp
@@ -0,0 +1,53 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_REPETITION_ENUM_TRAILING_BINARY_PARAMS_HPP
+# define MSGPACK_PREPROCESSOR_REPETITION_ENUM_TRAILING_BINARY_PARAMS_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/repetition/repeat.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+# include <msgpack/preprocessor/tuple/rem.hpp>
+#
+# /* MSGPACK_PP_ENUM_TRAILING_BINARY_PARAMS */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_ENUM_TRAILING_BINARY_PARAMS(count, p1, p2) MSGPACK_PP_REPEAT(count, MSGPACK_PP_ENUM_TRAILING_BINARY_PARAMS_M, (p1, p2))
+# else
+# define MSGPACK_PP_ENUM_TRAILING_BINARY_PARAMS(count, p1, p2) MSGPACK_PP_ENUM_TRAILING_BINARY_PARAMS_I(count, p1, p2)
+# define MSGPACK_PP_ENUM_TRAILING_BINARY_PARAMS_I(count, p1, p2) MSGPACK_PP_REPEAT(count, MSGPACK_PP_ENUM_TRAILING_BINARY_PARAMS_M, (p1, p2))
+# endif
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_STRICT()
+# define MSGPACK_PP_ENUM_TRAILING_BINARY_PARAMS_M(z, n, pp) MSGPACK_PP_ENUM_TRAILING_BINARY_PARAMS_M_IM(z, n, MSGPACK_PP_TUPLE_REM_2 pp)
+# define MSGPACK_PP_ENUM_TRAILING_BINARY_PARAMS_M_IM(z, n, im) MSGPACK_PP_ENUM_TRAILING_BINARY_PARAMS_M_I(z, n, im)
+# else
+# define MSGPACK_PP_ENUM_TRAILING_BINARY_PARAMS_M(z, n, pp) MSGPACK_PP_ENUM_TRAILING_BINARY_PARAMS_M_I(z, n, MSGPACK_PP_TUPLE_ELEM(2, 0, pp), MSGPACK_PP_TUPLE_ELEM(2, 1, pp))
+# endif
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MSVC()
+# define MSGPACK_PP_ENUM_TRAILING_BINARY_PARAMS_M_I(z, n, p1, p2) MSGPACK_PP_ENUM_TRAILING_BINARY_PARAMS_M_II(z, n, p1, p2)
+# define MSGPACK_PP_ENUM_TRAILING_BINARY_PARAMS_M_II(z, n, p1, p2) , p1 ## n p2 ## n
+# else
+# define MSGPACK_PP_ENUM_TRAILING_BINARY_PARAMS_M_I(z, n, p1, p2) , MSGPACK_PP_CAT(p1, n) MSGPACK_PP_CAT(p2, n)
+# endif
+#
+# /* MSGPACK_PP_ENUM_TRAILING_BINARY_PARAMS_Z */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_ENUM_TRAILING_BINARY_PARAMS_Z(z, count, p1, p2) MSGPACK_PP_REPEAT_ ## z(count, MSGPACK_PP_ENUM_TRAILING_BINARY_PARAMS_M, (p1, p2))
+# else
+# define MSGPACK_PP_ENUM_TRAILING_BINARY_PARAMS_Z(z, count, p1, p2) MSGPACK_PP_ENUM_TRAILING_BINARY_PARAMS_Z_I(z, count, p1, p2)
+# define MSGPACK_PP_ENUM_TRAILING_BINARY_PARAMS_Z_I(z, count, p1, p2) MSGPACK_PP_REPEAT_ ## z(count, MSGPACK_PP_ENUM_TRAILING_BINARY_PARAMS_M, (p1, p2))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/repetition/enum_trailing_params.hpp b/third_party/msgpack/include/msgpack/preprocessor/repetition/enum_trailing_params.hpp
new file mode 100644
index 0000000000..9f6d531598
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/repetition/enum_trailing_params.hpp
@@ -0,0 +1,38 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_REPETITION_ENUM_TRAILING_PARAMS_HPP
+# define MSGPACK_PREPROCESSOR_REPETITION_ENUM_TRAILING_PARAMS_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/repetition/repeat.hpp>
+#
+# /* MSGPACK_PP_ENUM_TRAILING_PARAMS */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_ENUM_TRAILING_PARAMS(count, param) MSGPACK_PP_REPEAT(count, MSGPACK_PP_ENUM_TRAILING_PARAMS_M, param)
+# else
+# define MSGPACK_PP_ENUM_TRAILING_PARAMS(count, param) MSGPACK_PP_ENUM_TRAILING_PARAMS_I(count, param)
+# define MSGPACK_PP_ENUM_TRAILING_PARAMS_I(count, param) MSGPACK_PP_REPEAT(count, MSGPACK_PP_ENUM_TRAILING_PARAMS_M, param)
+# endif
+#
+# define MSGPACK_PP_ENUM_TRAILING_PARAMS_M(z, n, param) , param ## n
+#
+# /* MSGPACK_PP_ENUM_TRAILING_PARAMS_Z */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_ENUM_TRAILING_PARAMS_Z(z, count, param) MSGPACK_PP_REPEAT_ ## z(count, MSGPACK_PP_ENUM_TRAILING_PARAMS_M, param)
+# else
+# define MSGPACK_PP_ENUM_TRAILING_PARAMS_Z(z, count, param) MSGPACK_PP_ENUM_TRAILING_PARAMS_Z_I(z, count, param)
+# define MSGPACK_PP_ENUM_TRAILING_PARAMS_Z_I(z, count, param) MSGPACK_PP_REPEAT_ ## z(count, MSGPACK_PP_ENUM_TRAILING_PARAMS_M, param)
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/repetition/for.hpp b/third_party/msgpack/include/msgpack/preprocessor/repetition/for.hpp
new file mode 100644
index 0000000000..543f2f80cd
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/repetition/for.hpp
@@ -0,0 +1,324 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_REPETITION_FOR_HPP
+# define MSGPACK_PREPROCESSOR_REPETITION_FOR_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/debug/error.hpp>
+# include <msgpack/preprocessor/facilities/empty.hpp>
+# include <msgpack/preprocessor/logical/bool.hpp>
+# include <msgpack/preprocessor/detail/auto_rec.hpp>
+#
+# /* MSGPACK_PP_FOR */
+#
+# if 0
+# define MSGPACK_PP_FOR(state, pred, op, macro)
+# endif
+#
+# define MSGPACK_PP_FOR MSGPACK_PP_CAT(MSGPACK_PP_FOR_, MSGPACK_PP_AUTO_REC(MSGPACK_PP_FOR_P, 256))
+#
+# define MSGPACK_PP_FOR_P(n) MSGPACK_PP_CAT(MSGPACK_PP_FOR_CHECK_, MSGPACK_PP_FOR_ ## n(1, MSGPACK_PP_FOR_SR_P, MSGPACK_PP_FOR_SR_O, MSGPACK_PP_FOR_SR_M))
+#
+# define MSGPACK_PP_FOR_SR_P(r, s) s
+# define MSGPACK_PP_FOR_SR_O(r, s) 0
+# define MSGPACK_PP_FOR_SR_M(r, s) MSGPACK_PP_NIL
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# include <msgpack/preprocessor/repetition/detail/edg/for.hpp>
+# elif MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MSVC()
+# include <msgpack/preprocessor/repetition/detail/msvc/for.hpp>
+# elif MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_DMC()
+# include <msgpack/preprocessor/repetition/detail/dmc/for.hpp>
+# else
+# include <msgpack/preprocessor/repetition/detail/for.hpp>
+# endif
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_DMC()
+# define MSGPACK_PP_FOR_257_PR(s, p) MSGPACK_PP_BOOL(p##(257, s))
+# else
+# define MSGPACK_PP_FOR_257_PR(s, p) MSGPACK_PP_BOOL(p(257, s))
+# endif
+
+# define MSGPACK_PP_FOR_257_ERROR() MSGPACK_PP_ERROR(0x0002)
+# define MSGPACK_PP_FOR_257(s, p, o, m) \
+ MSGPACK_PP_IIF \
+ ( \
+ MSGPACK_PP_FOR_257_PR(s,p), \
+ MSGPACK_PP_FOR_257_ERROR, \
+ MSGPACK_PP_EMPTY \
+ ) \
+ () \
+/**/
+// # define MSGPACK_PP_FOR_257(s, p, o, m) MSGPACK_PP_ERROR(0x0002)
+#
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_NIL 1
+#
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_1(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_2(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_3(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_4(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_5(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_6(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_7(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_8(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_9(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_10(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_11(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_12(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_13(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_14(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_15(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_16(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_17(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_18(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_19(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_20(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_21(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_22(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_23(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_24(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_25(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_26(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_27(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_28(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_29(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_30(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_31(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_32(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_33(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_34(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_35(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_36(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_37(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_38(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_39(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_40(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_41(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_42(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_43(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_44(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_45(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_46(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_47(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_48(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_49(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_50(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_51(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_52(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_53(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_54(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_55(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_56(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_57(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_58(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_59(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_60(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_61(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_62(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_63(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_64(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_65(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_66(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_67(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_68(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_69(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_70(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_71(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_72(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_73(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_74(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_75(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_76(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_77(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_78(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_79(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_80(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_81(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_82(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_83(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_84(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_85(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_86(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_87(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_88(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_89(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_90(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_91(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_92(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_93(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_94(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_95(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_96(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_97(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_98(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_99(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_100(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_101(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_102(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_103(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_104(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_105(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_106(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_107(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_108(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_109(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_110(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_111(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_112(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_113(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_114(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_115(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_116(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_117(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_118(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_119(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_120(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_121(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_122(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_123(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_124(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_125(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_126(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_127(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_128(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_129(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_130(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_131(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_132(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_133(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_134(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_135(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_136(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_137(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_138(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_139(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_140(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_141(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_142(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_143(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_144(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_145(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_146(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_147(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_148(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_149(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_150(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_151(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_152(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_153(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_154(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_155(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_156(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_157(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_158(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_159(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_160(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_161(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_162(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_163(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_164(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_165(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_166(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_167(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_168(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_169(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_170(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_171(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_172(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_173(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_174(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_175(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_176(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_177(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_178(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_179(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_180(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_181(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_182(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_183(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_184(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_185(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_186(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_187(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_188(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_189(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_190(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_191(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_192(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_193(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_194(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_195(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_196(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_197(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_198(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_199(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_200(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_201(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_202(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_203(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_204(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_205(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_206(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_207(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_208(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_209(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_210(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_211(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_212(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_213(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_214(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_215(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_216(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_217(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_218(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_219(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_220(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_221(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_222(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_223(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_224(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_225(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_226(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_227(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_228(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_229(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_230(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_231(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_232(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_233(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_234(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_235(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_236(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_237(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_238(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_239(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_240(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_241(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_242(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_243(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_244(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_245(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_246(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_247(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_248(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_249(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_250(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_251(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_252(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_253(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_254(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_255(s, p, o, m) 0
+# define MSGPACK_PP_FOR_CHECK_MSGPACK_PP_FOR_256(s, p, o, m) 0
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/repetition/repeat.hpp b/third_party/msgpack/include/msgpack/preprocessor/repetition/repeat.hpp
new file mode 100644
index 0000000000..d43810f717
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/repetition/repeat.hpp
@@ -0,0 +1,825 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_REPETITION_REPEAT_HPP
+# define MSGPACK_PREPROCESSOR_REPETITION_REPEAT_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/debug/error.hpp>
+# include <msgpack/preprocessor/detail/auto_rec.hpp>
+# include <msgpack/preprocessor/tuple/eat.hpp>
+#
+# /* MSGPACK_PP_REPEAT */
+#
+# if 0
+# define MSGPACK_PP_REPEAT(count, macro, data)
+# endif
+#
+# define MSGPACK_PP_REPEAT MSGPACK_PP_CAT(MSGPACK_PP_REPEAT_, MSGPACK_PP_AUTO_REC(MSGPACK_PP_REPEAT_P, 4))
+#
+# define MSGPACK_PP_REPEAT_P(n) MSGPACK_PP_CAT(MSGPACK_PP_REPEAT_CHECK_, MSGPACK_PP_REPEAT_ ## n(1, MSGPACK_PP_NIL MSGPACK_PP_TUPLE_EAT_3, MSGPACK_PP_NIL))
+#
+# define MSGPACK_PP_REPEAT_CHECK_MSGPACK_PP_NIL 1
+# define MSGPACK_PP_REPEAT_CHECK_MSGPACK_PP_REPEAT_1(c, m, d) 0
+# define MSGPACK_PP_REPEAT_CHECK_MSGPACK_PP_REPEAT_2(c, m, d) 0
+# define MSGPACK_PP_REPEAT_CHECK_MSGPACK_PP_REPEAT_3(c, m, d) 0
+#
+# define MSGPACK_PP_REPEAT_1(c, m, d) MSGPACK_PP_REPEAT_1_I(c, m, d)
+# define MSGPACK_PP_REPEAT_2(c, m, d) MSGPACK_PP_REPEAT_2_I(c, m, d)
+# define MSGPACK_PP_REPEAT_3(c, m, d) MSGPACK_PP_REPEAT_3_I(c, m, d)
+# define MSGPACK_PP_REPEAT_4(c, m, d) MSGPACK_PP_ERROR(0x0003)
+#
+# define MSGPACK_PP_REPEAT_1_I(c, m, d) MSGPACK_PP_REPEAT_1_ ## c(m, d)
+# define MSGPACK_PP_REPEAT_2_I(c, m, d) MSGPACK_PP_REPEAT_2_ ## c(m, d)
+# define MSGPACK_PP_REPEAT_3_I(c, m, d) MSGPACK_PP_REPEAT_3_ ## c(m, d)
+#
+# define MSGPACK_PP_REPEAT_1ST MSGPACK_PP_REPEAT_1
+# define MSGPACK_PP_REPEAT_2ND MSGPACK_PP_REPEAT_2
+# define MSGPACK_PP_REPEAT_3RD MSGPACK_PP_REPEAT_3
+#
+# define MSGPACK_PP_REPEAT_1_0(m, d)
+# define MSGPACK_PP_REPEAT_1_1(m, d) m(2, 0, d)
+# define MSGPACK_PP_REPEAT_1_2(m, d) MSGPACK_PP_REPEAT_1_1(m, d) m(2, 1, d)
+# define MSGPACK_PP_REPEAT_1_3(m, d) MSGPACK_PP_REPEAT_1_2(m, d) m(2, 2, d)
+# define MSGPACK_PP_REPEAT_1_4(m, d) MSGPACK_PP_REPEAT_1_3(m, d) m(2, 3, d)
+# define MSGPACK_PP_REPEAT_1_5(m, d) MSGPACK_PP_REPEAT_1_4(m, d) m(2, 4, d)
+# define MSGPACK_PP_REPEAT_1_6(m, d) MSGPACK_PP_REPEAT_1_5(m, d) m(2, 5, d)
+# define MSGPACK_PP_REPEAT_1_7(m, d) MSGPACK_PP_REPEAT_1_6(m, d) m(2, 6, d)
+# define MSGPACK_PP_REPEAT_1_8(m, d) MSGPACK_PP_REPEAT_1_7(m, d) m(2, 7, d)
+# define MSGPACK_PP_REPEAT_1_9(m, d) MSGPACK_PP_REPEAT_1_8(m, d) m(2, 8, d)
+# define MSGPACK_PP_REPEAT_1_10(m, d) MSGPACK_PP_REPEAT_1_9(m, d) m(2, 9, d)
+# define MSGPACK_PP_REPEAT_1_11(m, d) MSGPACK_PP_REPEAT_1_10(m, d) m(2, 10, d)
+# define MSGPACK_PP_REPEAT_1_12(m, d) MSGPACK_PP_REPEAT_1_11(m, d) m(2, 11, d)
+# define MSGPACK_PP_REPEAT_1_13(m, d) MSGPACK_PP_REPEAT_1_12(m, d) m(2, 12, d)
+# define MSGPACK_PP_REPEAT_1_14(m, d) MSGPACK_PP_REPEAT_1_13(m, d) m(2, 13, d)
+# define MSGPACK_PP_REPEAT_1_15(m, d) MSGPACK_PP_REPEAT_1_14(m, d) m(2, 14, d)
+# define MSGPACK_PP_REPEAT_1_16(m, d) MSGPACK_PP_REPEAT_1_15(m, d) m(2, 15, d)
+# define MSGPACK_PP_REPEAT_1_17(m, d) MSGPACK_PP_REPEAT_1_16(m, d) m(2, 16, d)
+# define MSGPACK_PP_REPEAT_1_18(m, d) MSGPACK_PP_REPEAT_1_17(m, d) m(2, 17, d)
+# define MSGPACK_PP_REPEAT_1_19(m, d) MSGPACK_PP_REPEAT_1_18(m, d) m(2, 18, d)
+# define MSGPACK_PP_REPEAT_1_20(m, d) MSGPACK_PP_REPEAT_1_19(m, d) m(2, 19, d)
+# define MSGPACK_PP_REPEAT_1_21(m, d) MSGPACK_PP_REPEAT_1_20(m, d) m(2, 20, d)
+# define MSGPACK_PP_REPEAT_1_22(m, d) MSGPACK_PP_REPEAT_1_21(m, d) m(2, 21, d)
+# define MSGPACK_PP_REPEAT_1_23(m, d) MSGPACK_PP_REPEAT_1_22(m, d) m(2, 22, d)
+# define MSGPACK_PP_REPEAT_1_24(m, d) MSGPACK_PP_REPEAT_1_23(m, d) m(2, 23, d)
+# define MSGPACK_PP_REPEAT_1_25(m, d) MSGPACK_PP_REPEAT_1_24(m, d) m(2, 24, d)
+# define MSGPACK_PP_REPEAT_1_26(m, d) MSGPACK_PP_REPEAT_1_25(m, d) m(2, 25, d)
+# define MSGPACK_PP_REPEAT_1_27(m, d) MSGPACK_PP_REPEAT_1_26(m, d) m(2, 26, d)
+# define MSGPACK_PP_REPEAT_1_28(m, d) MSGPACK_PP_REPEAT_1_27(m, d) m(2, 27, d)
+# define MSGPACK_PP_REPEAT_1_29(m, d) MSGPACK_PP_REPEAT_1_28(m, d) m(2, 28, d)
+# define MSGPACK_PP_REPEAT_1_30(m, d) MSGPACK_PP_REPEAT_1_29(m, d) m(2, 29, d)
+# define MSGPACK_PP_REPEAT_1_31(m, d) MSGPACK_PP_REPEAT_1_30(m, d) m(2, 30, d)
+# define MSGPACK_PP_REPEAT_1_32(m, d) MSGPACK_PP_REPEAT_1_31(m, d) m(2, 31, d)
+# define MSGPACK_PP_REPEAT_1_33(m, d) MSGPACK_PP_REPEAT_1_32(m, d) m(2, 32, d)
+# define MSGPACK_PP_REPEAT_1_34(m, d) MSGPACK_PP_REPEAT_1_33(m, d) m(2, 33, d)
+# define MSGPACK_PP_REPEAT_1_35(m, d) MSGPACK_PP_REPEAT_1_34(m, d) m(2, 34, d)
+# define MSGPACK_PP_REPEAT_1_36(m, d) MSGPACK_PP_REPEAT_1_35(m, d) m(2, 35, d)
+# define MSGPACK_PP_REPEAT_1_37(m, d) MSGPACK_PP_REPEAT_1_36(m, d) m(2, 36, d)
+# define MSGPACK_PP_REPEAT_1_38(m, d) MSGPACK_PP_REPEAT_1_37(m, d) m(2, 37, d)
+# define MSGPACK_PP_REPEAT_1_39(m, d) MSGPACK_PP_REPEAT_1_38(m, d) m(2, 38, d)
+# define MSGPACK_PP_REPEAT_1_40(m, d) MSGPACK_PP_REPEAT_1_39(m, d) m(2, 39, d)
+# define MSGPACK_PP_REPEAT_1_41(m, d) MSGPACK_PP_REPEAT_1_40(m, d) m(2, 40, d)
+# define MSGPACK_PP_REPEAT_1_42(m, d) MSGPACK_PP_REPEAT_1_41(m, d) m(2, 41, d)
+# define MSGPACK_PP_REPEAT_1_43(m, d) MSGPACK_PP_REPEAT_1_42(m, d) m(2, 42, d)
+# define MSGPACK_PP_REPEAT_1_44(m, d) MSGPACK_PP_REPEAT_1_43(m, d) m(2, 43, d)
+# define MSGPACK_PP_REPEAT_1_45(m, d) MSGPACK_PP_REPEAT_1_44(m, d) m(2, 44, d)
+# define MSGPACK_PP_REPEAT_1_46(m, d) MSGPACK_PP_REPEAT_1_45(m, d) m(2, 45, d)
+# define MSGPACK_PP_REPEAT_1_47(m, d) MSGPACK_PP_REPEAT_1_46(m, d) m(2, 46, d)
+# define MSGPACK_PP_REPEAT_1_48(m, d) MSGPACK_PP_REPEAT_1_47(m, d) m(2, 47, d)
+# define MSGPACK_PP_REPEAT_1_49(m, d) MSGPACK_PP_REPEAT_1_48(m, d) m(2, 48, d)
+# define MSGPACK_PP_REPEAT_1_50(m, d) MSGPACK_PP_REPEAT_1_49(m, d) m(2, 49, d)
+# define MSGPACK_PP_REPEAT_1_51(m, d) MSGPACK_PP_REPEAT_1_50(m, d) m(2, 50, d)
+# define MSGPACK_PP_REPEAT_1_52(m, d) MSGPACK_PP_REPEAT_1_51(m, d) m(2, 51, d)
+# define MSGPACK_PP_REPEAT_1_53(m, d) MSGPACK_PP_REPEAT_1_52(m, d) m(2, 52, d)
+# define MSGPACK_PP_REPEAT_1_54(m, d) MSGPACK_PP_REPEAT_1_53(m, d) m(2, 53, d)
+# define MSGPACK_PP_REPEAT_1_55(m, d) MSGPACK_PP_REPEAT_1_54(m, d) m(2, 54, d)
+# define MSGPACK_PP_REPEAT_1_56(m, d) MSGPACK_PP_REPEAT_1_55(m, d) m(2, 55, d)
+# define MSGPACK_PP_REPEAT_1_57(m, d) MSGPACK_PP_REPEAT_1_56(m, d) m(2, 56, d)
+# define MSGPACK_PP_REPEAT_1_58(m, d) MSGPACK_PP_REPEAT_1_57(m, d) m(2, 57, d)
+# define MSGPACK_PP_REPEAT_1_59(m, d) MSGPACK_PP_REPEAT_1_58(m, d) m(2, 58, d)
+# define MSGPACK_PP_REPEAT_1_60(m, d) MSGPACK_PP_REPEAT_1_59(m, d) m(2, 59, d)
+# define MSGPACK_PP_REPEAT_1_61(m, d) MSGPACK_PP_REPEAT_1_60(m, d) m(2, 60, d)
+# define MSGPACK_PP_REPEAT_1_62(m, d) MSGPACK_PP_REPEAT_1_61(m, d) m(2, 61, d)
+# define MSGPACK_PP_REPEAT_1_63(m, d) MSGPACK_PP_REPEAT_1_62(m, d) m(2, 62, d)
+# define MSGPACK_PP_REPEAT_1_64(m, d) MSGPACK_PP_REPEAT_1_63(m, d) m(2, 63, d)
+# define MSGPACK_PP_REPEAT_1_65(m, d) MSGPACK_PP_REPEAT_1_64(m, d) m(2, 64, d)
+# define MSGPACK_PP_REPEAT_1_66(m, d) MSGPACK_PP_REPEAT_1_65(m, d) m(2, 65, d)
+# define MSGPACK_PP_REPEAT_1_67(m, d) MSGPACK_PP_REPEAT_1_66(m, d) m(2, 66, d)
+# define MSGPACK_PP_REPEAT_1_68(m, d) MSGPACK_PP_REPEAT_1_67(m, d) m(2, 67, d)
+# define MSGPACK_PP_REPEAT_1_69(m, d) MSGPACK_PP_REPEAT_1_68(m, d) m(2, 68, d)
+# define MSGPACK_PP_REPEAT_1_70(m, d) MSGPACK_PP_REPEAT_1_69(m, d) m(2, 69, d)
+# define MSGPACK_PP_REPEAT_1_71(m, d) MSGPACK_PP_REPEAT_1_70(m, d) m(2, 70, d)
+# define MSGPACK_PP_REPEAT_1_72(m, d) MSGPACK_PP_REPEAT_1_71(m, d) m(2, 71, d)
+# define MSGPACK_PP_REPEAT_1_73(m, d) MSGPACK_PP_REPEAT_1_72(m, d) m(2, 72, d)
+# define MSGPACK_PP_REPEAT_1_74(m, d) MSGPACK_PP_REPEAT_1_73(m, d) m(2, 73, d)
+# define MSGPACK_PP_REPEAT_1_75(m, d) MSGPACK_PP_REPEAT_1_74(m, d) m(2, 74, d)
+# define MSGPACK_PP_REPEAT_1_76(m, d) MSGPACK_PP_REPEAT_1_75(m, d) m(2, 75, d)
+# define MSGPACK_PP_REPEAT_1_77(m, d) MSGPACK_PP_REPEAT_1_76(m, d) m(2, 76, d)
+# define MSGPACK_PP_REPEAT_1_78(m, d) MSGPACK_PP_REPEAT_1_77(m, d) m(2, 77, d)
+# define MSGPACK_PP_REPEAT_1_79(m, d) MSGPACK_PP_REPEAT_1_78(m, d) m(2, 78, d)
+# define MSGPACK_PP_REPEAT_1_80(m, d) MSGPACK_PP_REPEAT_1_79(m, d) m(2, 79, d)
+# define MSGPACK_PP_REPEAT_1_81(m, d) MSGPACK_PP_REPEAT_1_80(m, d) m(2, 80, d)
+# define MSGPACK_PP_REPEAT_1_82(m, d) MSGPACK_PP_REPEAT_1_81(m, d) m(2, 81, d)
+# define MSGPACK_PP_REPEAT_1_83(m, d) MSGPACK_PP_REPEAT_1_82(m, d) m(2, 82, d)
+# define MSGPACK_PP_REPEAT_1_84(m, d) MSGPACK_PP_REPEAT_1_83(m, d) m(2, 83, d)
+# define MSGPACK_PP_REPEAT_1_85(m, d) MSGPACK_PP_REPEAT_1_84(m, d) m(2, 84, d)
+# define MSGPACK_PP_REPEAT_1_86(m, d) MSGPACK_PP_REPEAT_1_85(m, d) m(2, 85, d)
+# define MSGPACK_PP_REPEAT_1_87(m, d) MSGPACK_PP_REPEAT_1_86(m, d) m(2, 86, d)
+# define MSGPACK_PP_REPEAT_1_88(m, d) MSGPACK_PP_REPEAT_1_87(m, d) m(2, 87, d)
+# define MSGPACK_PP_REPEAT_1_89(m, d) MSGPACK_PP_REPEAT_1_88(m, d) m(2, 88, d)
+# define MSGPACK_PP_REPEAT_1_90(m, d) MSGPACK_PP_REPEAT_1_89(m, d) m(2, 89, d)
+# define MSGPACK_PP_REPEAT_1_91(m, d) MSGPACK_PP_REPEAT_1_90(m, d) m(2, 90, d)
+# define MSGPACK_PP_REPEAT_1_92(m, d) MSGPACK_PP_REPEAT_1_91(m, d) m(2, 91, d)
+# define MSGPACK_PP_REPEAT_1_93(m, d) MSGPACK_PP_REPEAT_1_92(m, d) m(2, 92, d)
+# define MSGPACK_PP_REPEAT_1_94(m, d) MSGPACK_PP_REPEAT_1_93(m, d) m(2, 93, d)
+# define MSGPACK_PP_REPEAT_1_95(m, d) MSGPACK_PP_REPEAT_1_94(m, d) m(2, 94, d)
+# define MSGPACK_PP_REPEAT_1_96(m, d) MSGPACK_PP_REPEAT_1_95(m, d) m(2, 95, d)
+# define MSGPACK_PP_REPEAT_1_97(m, d) MSGPACK_PP_REPEAT_1_96(m, d) m(2, 96, d)
+# define MSGPACK_PP_REPEAT_1_98(m, d) MSGPACK_PP_REPEAT_1_97(m, d) m(2, 97, d)
+# define MSGPACK_PP_REPEAT_1_99(m, d) MSGPACK_PP_REPEAT_1_98(m, d) m(2, 98, d)
+# define MSGPACK_PP_REPEAT_1_100(m, d) MSGPACK_PP_REPEAT_1_99(m, d) m(2, 99, d)
+# define MSGPACK_PP_REPEAT_1_101(m, d) MSGPACK_PP_REPEAT_1_100(m, d) m(2, 100, d)
+# define MSGPACK_PP_REPEAT_1_102(m, d) MSGPACK_PP_REPEAT_1_101(m, d) m(2, 101, d)
+# define MSGPACK_PP_REPEAT_1_103(m, d) MSGPACK_PP_REPEAT_1_102(m, d) m(2, 102, d)
+# define MSGPACK_PP_REPEAT_1_104(m, d) MSGPACK_PP_REPEAT_1_103(m, d) m(2, 103, d)
+# define MSGPACK_PP_REPEAT_1_105(m, d) MSGPACK_PP_REPEAT_1_104(m, d) m(2, 104, d)
+# define MSGPACK_PP_REPEAT_1_106(m, d) MSGPACK_PP_REPEAT_1_105(m, d) m(2, 105, d)
+# define MSGPACK_PP_REPEAT_1_107(m, d) MSGPACK_PP_REPEAT_1_106(m, d) m(2, 106, d)
+# define MSGPACK_PP_REPEAT_1_108(m, d) MSGPACK_PP_REPEAT_1_107(m, d) m(2, 107, d)
+# define MSGPACK_PP_REPEAT_1_109(m, d) MSGPACK_PP_REPEAT_1_108(m, d) m(2, 108, d)
+# define MSGPACK_PP_REPEAT_1_110(m, d) MSGPACK_PP_REPEAT_1_109(m, d) m(2, 109, d)
+# define MSGPACK_PP_REPEAT_1_111(m, d) MSGPACK_PP_REPEAT_1_110(m, d) m(2, 110, d)
+# define MSGPACK_PP_REPEAT_1_112(m, d) MSGPACK_PP_REPEAT_1_111(m, d) m(2, 111, d)
+# define MSGPACK_PP_REPEAT_1_113(m, d) MSGPACK_PP_REPEAT_1_112(m, d) m(2, 112, d)
+# define MSGPACK_PP_REPEAT_1_114(m, d) MSGPACK_PP_REPEAT_1_113(m, d) m(2, 113, d)
+# define MSGPACK_PP_REPEAT_1_115(m, d) MSGPACK_PP_REPEAT_1_114(m, d) m(2, 114, d)
+# define MSGPACK_PP_REPEAT_1_116(m, d) MSGPACK_PP_REPEAT_1_115(m, d) m(2, 115, d)
+# define MSGPACK_PP_REPEAT_1_117(m, d) MSGPACK_PP_REPEAT_1_116(m, d) m(2, 116, d)
+# define MSGPACK_PP_REPEAT_1_118(m, d) MSGPACK_PP_REPEAT_1_117(m, d) m(2, 117, d)
+# define MSGPACK_PP_REPEAT_1_119(m, d) MSGPACK_PP_REPEAT_1_118(m, d) m(2, 118, d)
+# define MSGPACK_PP_REPEAT_1_120(m, d) MSGPACK_PP_REPEAT_1_119(m, d) m(2, 119, d)
+# define MSGPACK_PP_REPEAT_1_121(m, d) MSGPACK_PP_REPEAT_1_120(m, d) m(2, 120, d)
+# define MSGPACK_PP_REPEAT_1_122(m, d) MSGPACK_PP_REPEAT_1_121(m, d) m(2, 121, d)
+# define MSGPACK_PP_REPEAT_1_123(m, d) MSGPACK_PP_REPEAT_1_122(m, d) m(2, 122, d)
+# define MSGPACK_PP_REPEAT_1_124(m, d) MSGPACK_PP_REPEAT_1_123(m, d) m(2, 123, d)
+# define MSGPACK_PP_REPEAT_1_125(m, d) MSGPACK_PP_REPEAT_1_124(m, d) m(2, 124, d)
+# define MSGPACK_PP_REPEAT_1_126(m, d) MSGPACK_PP_REPEAT_1_125(m, d) m(2, 125, d)
+# define MSGPACK_PP_REPEAT_1_127(m, d) MSGPACK_PP_REPEAT_1_126(m, d) m(2, 126, d)
+# define MSGPACK_PP_REPEAT_1_128(m, d) MSGPACK_PP_REPEAT_1_127(m, d) m(2, 127, d)
+# define MSGPACK_PP_REPEAT_1_129(m, d) MSGPACK_PP_REPEAT_1_128(m, d) m(2, 128, d)
+# define MSGPACK_PP_REPEAT_1_130(m, d) MSGPACK_PP_REPEAT_1_129(m, d) m(2, 129, d)
+# define MSGPACK_PP_REPEAT_1_131(m, d) MSGPACK_PP_REPEAT_1_130(m, d) m(2, 130, d)
+# define MSGPACK_PP_REPEAT_1_132(m, d) MSGPACK_PP_REPEAT_1_131(m, d) m(2, 131, d)
+# define MSGPACK_PP_REPEAT_1_133(m, d) MSGPACK_PP_REPEAT_1_132(m, d) m(2, 132, d)
+# define MSGPACK_PP_REPEAT_1_134(m, d) MSGPACK_PP_REPEAT_1_133(m, d) m(2, 133, d)
+# define MSGPACK_PP_REPEAT_1_135(m, d) MSGPACK_PP_REPEAT_1_134(m, d) m(2, 134, d)
+# define MSGPACK_PP_REPEAT_1_136(m, d) MSGPACK_PP_REPEAT_1_135(m, d) m(2, 135, d)
+# define MSGPACK_PP_REPEAT_1_137(m, d) MSGPACK_PP_REPEAT_1_136(m, d) m(2, 136, d)
+# define MSGPACK_PP_REPEAT_1_138(m, d) MSGPACK_PP_REPEAT_1_137(m, d) m(2, 137, d)
+# define MSGPACK_PP_REPEAT_1_139(m, d) MSGPACK_PP_REPEAT_1_138(m, d) m(2, 138, d)
+# define MSGPACK_PP_REPEAT_1_140(m, d) MSGPACK_PP_REPEAT_1_139(m, d) m(2, 139, d)
+# define MSGPACK_PP_REPEAT_1_141(m, d) MSGPACK_PP_REPEAT_1_140(m, d) m(2, 140, d)
+# define MSGPACK_PP_REPEAT_1_142(m, d) MSGPACK_PP_REPEAT_1_141(m, d) m(2, 141, d)
+# define MSGPACK_PP_REPEAT_1_143(m, d) MSGPACK_PP_REPEAT_1_142(m, d) m(2, 142, d)
+# define MSGPACK_PP_REPEAT_1_144(m, d) MSGPACK_PP_REPEAT_1_143(m, d) m(2, 143, d)
+# define MSGPACK_PP_REPEAT_1_145(m, d) MSGPACK_PP_REPEAT_1_144(m, d) m(2, 144, d)
+# define MSGPACK_PP_REPEAT_1_146(m, d) MSGPACK_PP_REPEAT_1_145(m, d) m(2, 145, d)
+# define MSGPACK_PP_REPEAT_1_147(m, d) MSGPACK_PP_REPEAT_1_146(m, d) m(2, 146, d)
+# define MSGPACK_PP_REPEAT_1_148(m, d) MSGPACK_PP_REPEAT_1_147(m, d) m(2, 147, d)
+# define MSGPACK_PP_REPEAT_1_149(m, d) MSGPACK_PP_REPEAT_1_148(m, d) m(2, 148, d)
+# define MSGPACK_PP_REPEAT_1_150(m, d) MSGPACK_PP_REPEAT_1_149(m, d) m(2, 149, d)
+# define MSGPACK_PP_REPEAT_1_151(m, d) MSGPACK_PP_REPEAT_1_150(m, d) m(2, 150, d)
+# define MSGPACK_PP_REPEAT_1_152(m, d) MSGPACK_PP_REPEAT_1_151(m, d) m(2, 151, d)
+# define MSGPACK_PP_REPEAT_1_153(m, d) MSGPACK_PP_REPEAT_1_152(m, d) m(2, 152, d)
+# define MSGPACK_PP_REPEAT_1_154(m, d) MSGPACK_PP_REPEAT_1_153(m, d) m(2, 153, d)
+# define MSGPACK_PP_REPEAT_1_155(m, d) MSGPACK_PP_REPEAT_1_154(m, d) m(2, 154, d)
+# define MSGPACK_PP_REPEAT_1_156(m, d) MSGPACK_PP_REPEAT_1_155(m, d) m(2, 155, d)
+# define MSGPACK_PP_REPEAT_1_157(m, d) MSGPACK_PP_REPEAT_1_156(m, d) m(2, 156, d)
+# define MSGPACK_PP_REPEAT_1_158(m, d) MSGPACK_PP_REPEAT_1_157(m, d) m(2, 157, d)
+# define MSGPACK_PP_REPEAT_1_159(m, d) MSGPACK_PP_REPEAT_1_158(m, d) m(2, 158, d)
+# define MSGPACK_PP_REPEAT_1_160(m, d) MSGPACK_PP_REPEAT_1_159(m, d) m(2, 159, d)
+# define MSGPACK_PP_REPEAT_1_161(m, d) MSGPACK_PP_REPEAT_1_160(m, d) m(2, 160, d)
+# define MSGPACK_PP_REPEAT_1_162(m, d) MSGPACK_PP_REPEAT_1_161(m, d) m(2, 161, d)
+# define MSGPACK_PP_REPEAT_1_163(m, d) MSGPACK_PP_REPEAT_1_162(m, d) m(2, 162, d)
+# define MSGPACK_PP_REPEAT_1_164(m, d) MSGPACK_PP_REPEAT_1_163(m, d) m(2, 163, d)
+# define MSGPACK_PP_REPEAT_1_165(m, d) MSGPACK_PP_REPEAT_1_164(m, d) m(2, 164, d)
+# define MSGPACK_PP_REPEAT_1_166(m, d) MSGPACK_PP_REPEAT_1_165(m, d) m(2, 165, d)
+# define MSGPACK_PP_REPEAT_1_167(m, d) MSGPACK_PP_REPEAT_1_166(m, d) m(2, 166, d)
+# define MSGPACK_PP_REPEAT_1_168(m, d) MSGPACK_PP_REPEAT_1_167(m, d) m(2, 167, d)
+# define MSGPACK_PP_REPEAT_1_169(m, d) MSGPACK_PP_REPEAT_1_168(m, d) m(2, 168, d)
+# define MSGPACK_PP_REPEAT_1_170(m, d) MSGPACK_PP_REPEAT_1_169(m, d) m(2, 169, d)
+# define MSGPACK_PP_REPEAT_1_171(m, d) MSGPACK_PP_REPEAT_1_170(m, d) m(2, 170, d)
+# define MSGPACK_PP_REPEAT_1_172(m, d) MSGPACK_PP_REPEAT_1_171(m, d) m(2, 171, d)
+# define MSGPACK_PP_REPEAT_1_173(m, d) MSGPACK_PP_REPEAT_1_172(m, d) m(2, 172, d)
+# define MSGPACK_PP_REPEAT_1_174(m, d) MSGPACK_PP_REPEAT_1_173(m, d) m(2, 173, d)
+# define MSGPACK_PP_REPEAT_1_175(m, d) MSGPACK_PP_REPEAT_1_174(m, d) m(2, 174, d)
+# define MSGPACK_PP_REPEAT_1_176(m, d) MSGPACK_PP_REPEAT_1_175(m, d) m(2, 175, d)
+# define MSGPACK_PP_REPEAT_1_177(m, d) MSGPACK_PP_REPEAT_1_176(m, d) m(2, 176, d)
+# define MSGPACK_PP_REPEAT_1_178(m, d) MSGPACK_PP_REPEAT_1_177(m, d) m(2, 177, d)
+# define MSGPACK_PP_REPEAT_1_179(m, d) MSGPACK_PP_REPEAT_1_178(m, d) m(2, 178, d)
+# define MSGPACK_PP_REPEAT_1_180(m, d) MSGPACK_PP_REPEAT_1_179(m, d) m(2, 179, d)
+# define MSGPACK_PP_REPEAT_1_181(m, d) MSGPACK_PP_REPEAT_1_180(m, d) m(2, 180, d)
+# define MSGPACK_PP_REPEAT_1_182(m, d) MSGPACK_PP_REPEAT_1_181(m, d) m(2, 181, d)
+# define MSGPACK_PP_REPEAT_1_183(m, d) MSGPACK_PP_REPEAT_1_182(m, d) m(2, 182, d)
+# define MSGPACK_PP_REPEAT_1_184(m, d) MSGPACK_PP_REPEAT_1_183(m, d) m(2, 183, d)
+# define MSGPACK_PP_REPEAT_1_185(m, d) MSGPACK_PP_REPEAT_1_184(m, d) m(2, 184, d)
+# define MSGPACK_PP_REPEAT_1_186(m, d) MSGPACK_PP_REPEAT_1_185(m, d) m(2, 185, d)
+# define MSGPACK_PP_REPEAT_1_187(m, d) MSGPACK_PP_REPEAT_1_186(m, d) m(2, 186, d)
+# define MSGPACK_PP_REPEAT_1_188(m, d) MSGPACK_PP_REPEAT_1_187(m, d) m(2, 187, d)
+# define MSGPACK_PP_REPEAT_1_189(m, d) MSGPACK_PP_REPEAT_1_188(m, d) m(2, 188, d)
+# define MSGPACK_PP_REPEAT_1_190(m, d) MSGPACK_PP_REPEAT_1_189(m, d) m(2, 189, d)
+# define MSGPACK_PP_REPEAT_1_191(m, d) MSGPACK_PP_REPEAT_1_190(m, d) m(2, 190, d)
+# define MSGPACK_PP_REPEAT_1_192(m, d) MSGPACK_PP_REPEAT_1_191(m, d) m(2, 191, d)
+# define MSGPACK_PP_REPEAT_1_193(m, d) MSGPACK_PP_REPEAT_1_192(m, d) m(2, 192, d)
+# define MSGPACK_PP_REPEAT_1_194(m, d) MSGPACK_PP_REPEAT_1_193(m, d) m(2, 193, d)
+# define MSGPACK_PP_REPEAT_1_195(m, d) MSGPACK_PP_REPEAT_1_194(m, d) m(2, 194, d)
+# define MSGPACK_PP_REPEAT_1_196(m, d) MSGPACK_PP_REPEAT_1_195(m, d) m(2, 195, d)
+# define MSGPACK_PP_REPEAT_1_197(m, d) MSGPACK_PP_REPEAT_1_196(m, d) m(2, 196, d)
+# define MSGPACK_PP_REPEAT_1_198(m, d) MSGPACK_PP_REPEAT_1_197(m, d) m(2, 197, d)
+# define MSGPACK_PP_REPEAT_1_199(m, d) MSGPACK_PP_REPEAT_1_198(m, d) m(2, 198, d)
+# define MSGPACK_PP_REPEAT_1_200(m, d) MSGPACK_PP_REPEAT_1_199(m, d) m(2, 199, d)
+# define MSGPACK_PP_REPEAT_1_201(m, d) MSGPACK_PP_REPEAT_1_200(m, d) m(2, 200, d)
+# define MSGPACK_PP_REPEAT_1_202(m, d) MSGPACK_PP_REPEAT_1_201(m, d) m(2, 201, d)
+# define MSGPACK_PP_REPEAT_1_203(m, d) MSGPACK_PP_REPEAT_1_202(m, d) m(2, 202, d)
+# define MSGPACK_PP_REPEAT_1_204(m, d) MSGPACK_PP_REPEAT_1_203(m, d) m(2, 203, d)
+# define MSGPACK_PP_REPEAT_1_205(m, d) MSGPACK_PP_REPEAT_1_204(m, d) m(2, 204, d)
+# define MSGPACK_PP_REPEAT_1_206(m, d) MSGPACK_PP_REPEAT_1_205(m, d) m(2, 205, d)
+# define MSGPACK_PP_REPEAT_1_207(m, d) MSGPACK_PP_REPEAT_1_206(m, d) m(2, 206, d)
+# define MSGPACK_PP_REPEAT_1_208(m, d) MSGPACK_PP_REPEAT_1_207(m, d) m(2, 207, d)
+# define MSGPACK_PP_REPEAT_1_209(m, d) MSGPACK_PP_REPEAT_1_208(m, d) m(2, 208, d)
+# define MSGPACK_PP_REPEAT_1_210(m, d) MSGPACK_PP_REPEAT_1_209(m, d) m(2, 209, d)
+# define MSGPACK_PP_REPEAT_1_211(m, d) MSGPACK_PP_REPEAT_1_210(m, d) m(2, 210, d)
+# define MSGPACK_PP_REPEAT_1_212(m, d) MSGPACK_PP_REPEAT_1_211(m, d) m(2, 211, d)
+# define MSGPACK_PP_REPEAT_1_213(m, d) MSGPACK_PP_REPEAT_1_212(m, d) m(2, 212, d)
+# define MSGPACK_PP_REPEAT_1_214(m, d) MSGPACK_PP_REPEAT_1_213(m, d) m(2, 213, d)
+# define MSGPACK_PP_REPEAT_1_215(m, d) MSGPACK_PP_REPEAT_1_214(m, d) m(2, 214, d)
+# define MSGPACK_PP_REPEAT_1_216(m, d) MSGPACK_PP_REPEAT_1_215(m, d) m(2, 215, d)
+# define MSGPACK_PP_REPEAT_1_217(m, d) MSGPACK_PP_REPEAT_1_216(m, d) m(2, 216, d)
+# define MSGPACK_PP_REPEAT_1_218(m, d) MSGPACK_PP_REPEAT_1_217(m, d) m(2, 217, d)
+# define MSGPACK_PP_REPEAT_1_219(m, d) MSGPACK_PP_REPEAT_1_218(m, d) m(2, 218, d)
+# define MSGPACK_PP_REPEAT_1_220(m, d) MSGPACK_PP_REPEAT_1_219(m, d) m(2, 219, d)
+# define MSGPACK_PP_REPEAT_1_221(m, d) MSGPACK_PP_REPEAT_1_220(m, d) m(2, 220, d)
+# define MSGPACK_PP_REPEAT_1_222(m, d) MSGPACK_PP_REPEAT_1_221(m, d) m(2, 221, d)
+# define MSGPACK_PP_REPEAT_1_223(m, d) MSGPACK_PP_REPEAT_1_222(m, d) m(2, 222, d)
+# define MSGPACK_PP_REPEAT_1_224(m, d) MSGPACK_PP_REPEAT_1_223(m, d) m(2, 223, d)
+# define MSGPACK_PP_REPEAT_1_225(m, d) MSGPACK_PP_REPEAT_1_224(m, d) m(2, 224, d)
+# define MSGPACK_PP_REPEAT_1_226(m, d) MSGPACK_PP_REPEAT_1_225(m, d) m(2, 225, d)
+# define MSGPACK_PP_REPEAT_1_227(m, d) MSGPACK_PP_REPEAT_1_226(m, d) m(2, 226, d)
+# define MSGPACK_PP_REPEAT_1_228(m, d) MSGPACK_PP_REPEAT_1_227(m, d) m(2, 227, d)
+# define MSGPACK_PP_REPEAT_1_229(m, d) MSGPACK_PP_REPEAT_1_228(m, d) m(2, 228, d)
+# define MSGPACK_PP_REPEAT_1_230(m, d) MSGPACK_PP_REPEAT_1_229(m, d) m(2, 229, d)
+# define MSGPACK_PP_REPEAT_1_231(m, d) MSGPACK_PP_REPEAT_1_230(m, d) m(2, 230, d)
+# define MSGPACK_PP_REPEAT_1_232(m, d) MSGPACK_PP_REPEAT_1_231(m, d) m(2, 231, d)
+# define MSGPACK_PP_REPEAT_1_233(m, d) MSGPACK_PP_REPEAT_1_232(m, d) m(2, 232, d)
+# define MSGPACK_PP_REPEAT_1_234(m, d) MSGPACK_PP_REPEAT_1_233(m, d) m(2, 233, d)
+# define MSGPACK_PP_REPEAT_1_235(m, d) MSGPACK_PP_REPEAT_1_234(m, d) m(2, 234, d)
+# define MSGPACK_PP_REPEAT_1_236(m, d) MSGPACK_PP_REPEAT_1_235(m, d) m(2, 235, d)
+# define MSGPACK_PP_REPEAT_1_237(m, d) MSGPACK_PP_REPEAT_1_236(m, d) m(2, 236, d)
+# define MSGPACK_PP_REPEAT_1_238(m, d) MSGPACK_PP_REPEAT_1_237(m, d) m(2, 237, d)
+# define MSGPACK_PP_REPEAT_1_239(m, d) MSGPACK_PP_REPEAT_1_238(m, d) m(2, 238, d)
+# define MSGPACK_PP_REPEAT_1_240(m, d) MSGPACK_PP_REPEAT_1_239(m, d) m(2, 239, d)
+# define MSGPACK_PP_REPEAT_1_241(m, d) MSGPACK_PP_REPEAT_1_240(m, d) m(2, 240, d)
+# define MSGPACK_PP_REPEAT_1_242(m, d) MSGPACK_PP_REPEAT_1_241(m, d) m(2, 241, d)
+# define MSGPACK_PP_REPEAT_1_243(m, d) MSGPACK_PP_REPEAT_1_242(m, d) m(2, 242, d)
+# define MSGPACK_PP_REPEAT_1_244(m, d) MSGPACK_PP_REPEAT_1_243(m, d) m(2, 243, d)
+# define MSGPACK_PP_REPEAT_1_245(m, d) MSGPACK_PP_REPEAT_1_244(m, d) m(2, 244, d)
+# define MSGPACK_PP_REPEAT_1_246(m, d) MSGPACK_PP_REPEAT_1_245(m, d) m(2, 245, d)
+# define MSGPACK_PP_REPEAT_1_247(m, d) MSGPACK_PP_REPEAT_1_246(m, d) m(2, 246, d)
+# define MSGPACK_PP_REPEAT_1_248(m, d) MSGPACK_PP_REPEAT_1_247(m, d) m(2, 247, d)
+# define MSGPACK_PP_REPEAT_1_249(m, d) MSGPACK_PP_REPEAT_1_248(m, d) m(2, 248, d)
+# define MSGPACK_PP_REPEAT_1_250(m, d) MSGPACK_PP_REPEAT_1_249(m, d) m(2, 249, d)
+# define MSGPACK_PP_REPEAT_1_251(m, d) MSGPACK_PP_REPEAT_1_250(m, d) m(2, 250, d)
+# define MSGPACK_PP_REPEAT_1_252(m, d) MSGPACK_PP_REPEAT_1_251(m, d) m(2, 251, d)
+# define MSGPACK_PP_REPEAT_1_253(m, d) MSGPACK_PP_REPEAT_1_252(m, d) m(2, 252, d)
+# define MSGPACK_PP_REPEAT_1_254(m, d) MSGPACK_PP_REPEAT_1_253(m, d) m(2, 253, d)
+# define MSGPACK_PP_REPEAT_1_255(m, d) MSGPACK_PP_REPEAT_1_254(m, d) m(2, 254, d)
+# define MSGPACK_PP_REPEAT_1_256(m, d) MSGPACK_PP_REPEAT_1_255(m, d) m(2, 255, d)
+#
+# define MSGPACK_PP_REPEAT_2_0(m, d)
+# define MSGPACK_PP_REPEAT_2_1(m, d) m(3, 0, d)
+# define MSGPACK_PP_REPEAT_2_2(m, d) MSGPACK_PP_REPEAT_2_1(m, d) m(3, 1, d)
+# define MSGPACK_PP_REPEAT_2_3(m, d) MSGPACK_PP_REPEAT_2_2(m, d) m(3, 2, d)
+# define MSGPACK_PP_REPEAT_2_4(m, d) MSGPACK_PP_REPEAT_2_3(m, d) m(3, 3, d)
+# define MSGPACK_PP_REPEAT_2_5(m, d) MSGPACK_PP_REPEAT_2_4(m, d) m(3, 4, d)
+# define MSGPACK_PP_REPEAT_2_6(m, d) MSGPACK_PP_REPEAT_2_5(m, d) m(3, 5, d)
+# define MSGPACK_PP_REPEAT_2_7(m, d) MSGPACK_PP_REPEAT_2_6(m, d) m(3, 6, d)
+# define MSGPACK_PP_REPEAT_2_8(m, d) MSGPACK_PP_REPEAT_2_7(m, d) m(3, 7, d)
+# define MSGPACK_PP_REPEAT_2_9(m, d) MSGPACK_PP_REPEAT_2_8(m, d) m(3, 8, d)
+# define MSGPACK_PP_REPEAT_2_10(m, d) MSGPACK_PP_REPEAT_2_9(m, d) m(3, 9, d)
+# define MSGPACK_PP_REPEAT_2_11(m, d) MSGPACK_PP_REPEAT_2_10(m, d) m(3, 10, d)
+# define MSGPACK_PP_REPEAT_2_12(m, d) MSGPACK_PP_REPEAT_2_11(m, d) m(3, 11, d)
+# define MSGPACK_PP_REPEAT_2_13(m, d) MSGPACK_PP_REPEAT_2_12(m, d) m(3, 12, d)
+# define MSGPACK_PP_REPEAT_2_14(m, d) MSGPACK_PP_REPEAT_2_13(m, d) m(3, 13, d)
+# define MSGPACK_PP_REPEAT_2_15(m, d) MSGPACK_PP_REPEAT_2_14(m, d) m(3, 14, d)
+# define MSGPACK_PP_REPEAT_2_16(m, d) MSGPACK_PP_REPEAT_2_15(m, d) m(3, 15, d)
+# define MSGPACK_PP_REPEAT_2_17(m, d) MSGPACK_PP_REPEAT_2_16(m, d) m(3, 16, d)
+# define MSGPACK_PP_REPEAT_2_18(m, d) MSGPACK_PP_REPEAT_2_17(m, d) m(3, 17, d)
+# define MSGPACK_PP_REPEAT_2_19(m, d) MSGPACK_PP_REPEAT_2_18(m, d) m(3, 18, d)
+# define MSGPACK_PP_REPEAT_2_20(m, d) MSGPACK_PP_REPEAT_2_19(m, d) m(3, 19, d)
+# define MSGPACK_PP_REPEAT_2_21(m, d) MSGPACK_PP_REPEAT_2_20(m, d) m(3, 20, d)
+# define MSGPACK_PP_REPEAT_2_22(m, d) MSGPACK_PP_REPEAT_2_21(m, d) m(3, 21, d)
+# define MSGPACK_PP_REPEAT_2_23(m, d) MSGPACK_PP_REPEAT_2_22(m, d) m(3, 22, d)
+# define MSGPACK_PP_REPEAT_2_24(m, d) MSGPACK_PP_REPEAT_2_23(m, d) m(3, 23, d)
+# define MSGPACK_PP_REPEAT_2_25(m, d) MSGPACK_PP_REPEAT_2_24(m, d) m(3, 24, d)
+# define MSGPACK_PP_REPEAT_2_26(m, d) MSGPACK_PP_REPEAT_2_25(m, d) m(3, 25, d)
+# define MSGPACK_PP_REPEAT_2_27(m, d) MSGPACK_PP_REPEAT_2_26(m, d) m(3, 26, d)
+# define MSGPACK_PP_REPEAT_2_28(m, d) MSGPACK_PP_REPEAT_2_27(m, d) m(3, 27, d)
+# define MSGPACK_PP_REPEAT_2_29(m, d) MSGPACK_PP_REPEAT_2_28(m, d) m(3, 28, d)
+# define MSGPACK_PP_REPEAT_2_30(m, d) MSGPACK_PP_REPEAT_2_29(m, d) m(3, 29, d)
+# define MSGPACK_PP_REPEAT_2_31(m, d) MSGPACK_PP_REPEAT_2_30(m, d) m(3, 30, d)
+# define MSGPACK_PP_REPEAT_2_32(m, d) MSGPACK_PP_REPEAT_2_31(m, d) m(3, 31, d)
+# define MSGPACK_PP_REPEAT_2_33(m, d) MSGPACK_PP_REPEAT_2_32(m, d) m(3, 32, d)
+# define MSGPACK_PP_REPEAT_2_34(m, d) MSGPACK_PP_REPEAT_2_33(m, d) m(3, 33, d)
+# define MSGPACK_PP_REPEAT_2_35(m, d) MSGPACK_PP_REPEAT_2_34(m, d) m(3, 34, d)
+# define MSGPACK_PP_REPEAT_2_36(m, d) MSGPACK_PP_REPEAT_2_35(m, d) m(3, 35, d)
+# define MSGPACK_PP_REPEAT_2_37(m, d) MSGPACK_PP_REPEAT_2_36(m, d) m(3, 36, d)
+# define MSGPACK_PP_REPEAT_2_38(m, d) MSGPACK_PP_REPEAT_2_37(m, d) m(3, 37, d)
+# define MSGPACK_PP_REPEAT_2_39(m, d) MSGPACK_PP_REPEAT_2_38(m, d) m(3, 38, d)
+# define MSGPACK_PP_REPEAT_2_40(m, d) MSGPACK_PP_REPEAT_2_39(m, d) m(3, 39, d)
+# define MSGPACK_PP_REPEAT_2_41(m, d) MSGPACK_PP_REPEAT_2_40(m, d) m(3, 40, d)
+# define MSGPACK_PP_REPEAT_2_42(m, d) MSGPACK_PP_REPEAT_2_41(m, d) m(3, 41, d)
+# define MSGPACK_PP_REPEAT_2_43(m, d) MSGPACK_PP_REPEAT_2_42(m, d) m(3, 42, d)
+# define MSGPACK_PP_REPEAT_2_44(m, d) MSGPACK_PP_REPEAT_2_43(m, d) m(3, 43, d)
+# define MSGPACK_PP_REPEAT_2_45(m, d) MSGPACK_PP_REPEAT_2_44(m, d) m(3, 44, d)
+# define MSGPACK_PP_REPEAT_2_46(m, d) MSGPACK_PP_REPEAT_2_45(m, d) m(3, 45, d)
+# define MSGPACK_PP_REPEAT_2_47(m, d) MSGPACK_PP_REPEAT_2_46(m, d) m(3, 46, d)
+# define MSGPACK_PP_REPEAT_2_48(m, d) MSGPACK_PP_REPEAT_2_47(m, d) m(3, 47, d)
+# define MSGPACK_PP_REPEAT_2_49(m, d) MSGPACK_PP_REPEAT_2_48(m, d) m(3, 48, d)
+# define MSGPACK_PP_REPEAT_2_50(m, d) MSGPACK_PP_REPEAT_2_49(m, d) m(3, 49, d)
+# define MSGPACK_PP_REPEAT_2_51(m, d) MSGPACK_PP_REPEAT_2_50(m, d) m(3, 50, d)
+# define MSGPACK_PP_REPEAT_2_52(m, d) MSGPACK_PP_REPEAT_2_51(m, d) m(3, 51, d)
+# define MSGPACK_PP_REPEAT_2_53(m, d) MSGPACK_PP_REPEAT_2_52(m, d) m(3, 52, d)
+# define MSGPACK_PP_REPEAT_2_54(m, d) MSGPACK_PP_REPEAT_2_53(m, d) m(3, 53, d)
+# define MSGPACK_PP_REPEAT_2_55(m, d) MSGPACK_PP_REPEAT_2_54(m, d) m(3, 54, d)
+# define MSGPACK_PP_REPEAT_2_56(m, d) MSGPACK_PP_REPEAT_2_55(m, d) m(3, 55, d)
+# define MSGPACK_PP_REPEAT_2_57(m, d) MSGPACK_PP_REPEAT_2_56(m, d) m(3, 56, d)
+# define MSGPACK_PP_REPEAT_2_58(m, d) MSGPACK_PP_REPEAT_2_57(m, d) m(3, 57, d)
+# define MSGPACK_PP_REPEAT_2_59(m, d) MSGPACK_PP_REPEAT_2_58(m, d) m(3, 58, d)
+# define MSGPACK_PP_REPEAT_2_60(m, d) MSGPACK_PP_REPEAT_2_59(m, d) m(3, 59, d)
+# define MSGPACK_PP_REPEAT_2_61(m, d) MSGPACK_PP_REPEAT_2_60(m, d) m(3, 60, d)
+# define MSGPACK_PP_REPEAT_2_62(m, d) MSGPACK_PP_REPEAT_2_61(m, d) m(3, 61, d)
+# define MSGPACK_PP_REPEAT_2_63(m, d) MSGPACK_PP_REPEAT_2_62(m, d) m(3, 62, d)
+# define MSGPACK_PP_REPEAT_2_64(m, d) MSGPACK_PP_REPEAT_2_63(m, d) m(3, 63, d)
+# define MSGPACK_PP_REPEAT_2_65(m, d) MSGPACK_PP_REPEAT_2_64(m, d) m(3, 64, d)
+# define MSGPACK_PP_REPEAT_2_66(m, d) MSGPACK_PP_REPEAT_2_65(m, d) m(3, 65, d)
+# define MSGPACK_PP_REPEAT_2_67(m, d) MSGPACK_PP_REPEAT_2_66(m, d) m(3, 66, d)
+# define MSGPACK_PP_REPEAT_2_68(m, d) MSGPACK_PP_REPEAT_2_67(m, d) m(3, 67, d)
+# define MSGPACK_PP_REPEAT_2_69(m, d) MSGPACK_PP_REPEAT_2_68(m, d) m(3, 68, d)
+# define MSGPACK_PP_REPEAT_2_70(m, d) MSGPACK_PP_REPEAT_2_69(m, d) m(3, 69, d)
+# define MSGPACK_PP_REPEAT_2_71(m, d) MSGPACK_PP_REPEAT_2_70(m, d) m(3, 70, d)
+# define MSGPACK_PP_REPEAT_2_72(m, d) MSGPACK_PP_REPEAT_2_71(m, d) m(3, 71, d)
+# define MSGPACK_PP_REPEAT_2_73(m, d) MSGPACK_PP_REPEAT_2_72(m, d) m(3, 72, d)
+# define MSGPACK_PP_REPEAT_2_74(m, d) MSGPACK_PP_REPEAT_2_73(m, d) m(3, 73, d)
+# define MSGPACK_PP_REPEAT_2_75(m, d) MSGPACK_PP_REPEAT_2_74(m, d) m(3, 74, d)
+# define MSGPACK_PP_REPEAT_2_76(m, d) MSGPACK_PP_REPEAT_2_75(m, d) m(3, 75, d)
+# define MSGPACK_PP_REPEAT_2_77(m, d) MSGPACK_PP_REPEAT_2_76(m, d) m(3, 76, d)
+# define MSGPACK_PP_REPEAT_2_78(m, d) MSGPACK_PP_REPEAT_2_77(m, d) m(3, 77, d)
+# define MSGPACK_PP_REPEAT_2_79(m, d) MSGPACK_PP_REPEAT_2_78(m, d) m(3, 78, d)
+# define MSGPACK_PP_REPEAT_2_80(m, d) MSGPACK_PP_REPEAT_2_79(m, d) m(3, 79, d)
+# define MSGPACK_PP_REPEAT_2_81(m, d) MSGPACK_PP_REPEAT_2_80(m, d) m(3, 80, d)
+# define MSGPACK_PP_REPEAT_2_82(m, d) MSGPACK_PP_REPEAT_2_81(m, d) m(3, 81, d)
+# define MSGPACK_PP_REPEAT_2_83(m, d) MSGPACK_PP_REPEAT_2_82(m, d) m(3, 82, d)
+# define MSGPACK_PP_REPEAT_2_84(m, d) MSGPACK_PP_REPEAT_2_83(m, d) m(3, 83, d)
+# define MSGPACK_PP_REPEAT_2_85(m, d) MSGPACK_PP_REPEAT_2_84(m, d) m(3, 84, d)
+# define MSGPACK_PP_REPEAT_2_86(m, d) MSGPACK_PP_REPEAT_2_85(m, d) m(3, 85, d)
+# define MSGPACK_PP_REPEAT_2_87(m, d) MSGPACK_PP_REPEAT_2_86(m, d) m(3, 86, d)
+# define MSGPACK_PP_REPEAT_2_88(m, d) MSGPACK_PP_REPEAT_2_87(m, d) m(3, 87, d)
+# define MSGPACK_PP_REPEAT_2_89(m, d) MSGPACK_PP_REPEAT_2_88(m, d) m(3, 88, d)
+# define MSGPACK_PP_REPEAT_2_90(m, d) MSGPACK_PP_REPEAT_2_89(m, d) m(3, 89, d)
+# define MSGPACK_PP_REPEAT_2_91(m, d) MSGPACK_PP_REPEAT_2_90(m, d) m(3, 90, d)
+# define MSGPACK_PP_REPEAT_2_92(m, d) MSGPACK_PP_REPEAT_2_91(m, d) m(3, 91, d)
+# define MSGPACK_PP_REPEAT_2_93(m, d) MSGPACK_PP_REPEAT_2_92(m, d) m(3, 92, d)
+# define MSGPACK_PP_REPEAT_2_94(m, d) MSGPACK_PP_REPEAT_2_93(m, d) m(3, 93, d)
+# define MSGPACK_PP_REPEAT_2_95(m, d) MSGPACK_PP_REPEAT_2_94(m, d) m(3, 94, d)
+# define MSGPACK_PP_REPEAT_2_96(m, d) MSGPACK_PP_REPEAT_2_95(m, d) m(3, 95, d)
+# define MSGPACK_PP_REPEAT_2_97(m, d) MSGPACK_PP_REPEAT_2_96(m, d) m(3, 96, d)
+# define MSGPACK_PP_REPEAT_2_98(m, d) MSGPACK_PP_REPEAT_2_97(m, d) m(3, 97, d)
+# define MSGPACK_PP_REPEAT_2_99(m, d) MSGPACK_PP_REPEAT_2_98(m, d) m(3, 98, d)
+# define MSGPACK_PP_REPEAT_2_100(m, d) MSGPACK_PP_REPEAT_2_99(m, d) m(3, 99, d)
+# define MSGPACK_PP_REPEAT_2_101(m, d) MSGPACK_PP_REPEAT_2_100(m, d) m(3, 100, d)
+# define MSGPACK_PP_REPEAT_2_102(m, d) MSGPACK_PP_REPEAT_2_101(m, d) m(3, 101, d)
+# define MSGPACK_PP_REPEAT_2_103(m, d) MSGPACK_PP_REPEAT_2_102(m, d) m(3, 102, d)
+# define MSGPACK_PP_REPEAT_2_104(m, d) MSGPACK_PP_REPEAT_2_103(m, d) m(3, 103, d)
+# define MSGPACK_PP_REPEAT_2_105(m, d) MSGPACK_PP_REPEAT_2_104(m, d) m(3, 104, d)
+# define MSGPACK_PP_REPEAT_2_106(m, d) MSGPACK_PP_REPEAT_2_105(m, d) m(3, 105, d)
+# define MSGPACK_PP_REPEAT_2_107(m, d) MSGPACK_PP_REPEAT_2_106(m, d) m(3, 106, d)
+# define MSGPACK_PP_REPEAT_2_108(m, d) MSGPACK_PP_REPEAT_2_107(m, d) m(3, 107, d)
+# define MSGPACK_PP_REPEAT_2_109(m, d) MSGPACK_PP_REPEAT_2_108(m, d) m(3, 108, d)
+# define MSGPACK_PP_REPEAT_2_110(m, d) MSGPACK_PP_REPEAT_2_109(m, d) m(3, 109, d)
+# define MSGPACK_PP_REPEAT_2_111(m, d) MSGPACK_PP_REPEAT_2_110(m, d) m(3, 110, d)
+# define MSGPACK_PP_REPEAT_2_112(m, d) MSGPACK_PP_REPEAT_2_111(m, d) m(3, 111, d)
+# define MSGPACK_PP_REPEAT_2_113(m, d) MSGPACK_PP_REPEAT_2_112(m, d) m(3, 112, d)
+# define MSGPACK_PP_REPEAT_2_114(m, d) MSGPACK_PP_REPEAT_2_113(m, d) m(3, 113, d)
+# define MSGPACK_PP_REPEAT_2_115(m, d) MSGPACK_PP_REPEAT_2_114(m, d) m(3, 114, d)
+# define MSGPACK_PP_REPEAT_2_116(m, d) MSGPACK_PP_REPEAT_2_115(m, d) m(3, 115, d)
+# define MSGPACK_PP_REPEAT_2_117(m, d) MSGPACK_PP_REPEAT_2_116(m, d) m(3, 116, d)
+# define MSGPACK_PP_REPEAT_2_118(m, d) MSGPACK_PP_REPEAT_2_117(m, d) m(3, 117, d)
+# define MSGPACK_PP_REPEAT_2_119(m, d) MSGPACK_PP_REPEAT_2_118(m, d) m(3, 118, d)
+# define MSGPACK_PP_REPEAT_2_120(m, d) MSGPACK_PP_REPEAT_2_119(m, d) m(3, 119, d)
+# define MSGPACK_PP_REPEAT_2_121(m, d) MSGPACK_PP_REPEAT_2_120(m, d) m(3, 120, d)
+# define MSGPACK_PP_REPEAT_2_122(m, d) MSGPACK_PP_REPEAT_2_121(m, d) m(3, 121, d)
+# define MSGPACK_PP_REPEAT_2_123(m, d) MSGPACK_PP_REPEAT_2_122(m, d) m(3, 122, d)
+# define MSGPACK_PP_REPEAT_2_124(m, d) MSGPACK_PP_REPEAT_2_123(m, d) m(3, 123, d)
+# define MSGPACK_PP_REPEAT_2_125(m, d) MSGPACK_PP_REPEAT_2_124(m, d) m(3, 124, d)
+# define MSGPACK_PP_REPEAT_2_126(m, d) MSGPACK_PP_REPEAT_2_125(m, d) m(3, 125, d)
+# define MSGPACK_PP_REPEAT_2_127(m, d) MSGPACK_PP_REPEAT_2_126(m, d) m(3, 126, d)
+# define MSGPACK_PP_REPEAT_2_128(m, d) MSGPACK_PP_REPEAT_2_127(m, d) m(3, 127, d)
+# define MSGPACK_PP_REPEAT_2_129(m, d) MSGPACK_PP_REPEAT_2_128(m, d) m(3, 128, d)
+# define MSGPACK_PP_REPEAT_2_130(m, d) MSGPACK_PP_REPEAT_2_129(m, d) m(3, 129, d)
+# define MSGPACK_PP_REPEAT_2_131(m, d) MSGPACK_PP_REPEAT_2_130(m, d) m(3, 130, d)
+# define MSGPACK_PP_REPEAT_2_132(m, d) MSGPACK_PP_REPEAT_2_131(m, d) m(3, 131, d)
+# define MSGPACK_PP_REPEAT_2_133(m, d) MSGPACK_PP_REPEAT_2_132(m, d) m(3, 132, d)
+# define MSGPACK_PP_REPEAT_2_134(m, d) MSGPACK_PP_REPEAT_2_133(m, d) m(3, 133, d)
+# define MSGPACK_PP_REPEAT_2_135(m, d) MSGPACK_PP_REPEAT_2_134(m, d) m(3, 134, d)
+# define MSGPACK_PP_REPEAT_2_136(m, d) MSGPACK_PP_REPEAT_2_135(m, d) m(3, 135, d)
+# define MSGPACK_PP_REPEAT_2_137(m, d) MSGPACK_PP_REPEAT_2_136(m, d) m(3, 136, d)
+# define MSGPACK_PP_REPEAT_2_138(m, d) MSGPACK_PP_REPEAT_2_137(m, d) m(3, 137, d)
+# define MSGPACK_PP_REPEAT_2_139(m, d) MSGPACK_PP_REPEAT_2_138(m, d) m(3, 138, d)
+# define MSGPACK_PP_REPEAT_2_140(m, d) MSGPACK_PP_REPEAT_2_139(m, d) m(3, 139, d)
+# define MSGPACK_PP_REPEAT_2_141(m, d) MSGPACK_PP_REPEAT_2_140(m, d) m(3, 140, d)
+# define MSGPACK_PP_REPEAT_2_142(m, d) MSGPACK_PP_REPEAT_2_141(m, d) m(3, 141, d)
+# define MSGPACK_PP_REPEAT_2_143(m, d) MSGPACK_PP_REPEAT_2_142(m, d) m(3, 142, d)
+# define MSGPACK_PP_REPEAT_2_144(m, d) MSGPACK_PP_REPEAT_2_143(m, d) m(3, 143, d)
+# define MSGPACK_PP_REPEAT_2_145(m, d) MSGPACK_PP_REPEAT_2_144(m, d) m(3, 144, d)
+# define MSGPACK_PP_REPEAT_2_146(m, d) MSGPACK_PP_REPEAT_2_145(m, d) m(3, 145, d)
+# define MSGPACK_PP_REPEAT_2_147(m, d) MSGPACK_PP_REPEAT_2_146(m, d) m(3, 146, d)
+# define MSGPACK_PP_REPEAT_2_148(m, d) MSGPACK_PP_REPEAT_2_147(m, d) m(3, 147, d)
+# define MSGPACK_PP_REPEAT_2_149(m, d) MSGPACK_PP_REPEAT_2_148(m, d) m(3, 148, d)
+# define MSGPACK_PP_REPEAT_2_150(m, d) MSGPACK_PP_REPEAT_2_149(m, d) m(3, 149, d)
+# define MSGPACK_PP_REPEAT_2_151(m, d) MSGPACK_PP_REPEAT_2_150(m, d) m(3, 150, d)
+# define MSGPACK_PP_REPEAT_2_152(m, d) MSGPACK_PP_REPEAT_2_151(m, d) m(3, 151, d)
+# define MSGPACK_PP_REPEAT_2_153(m, d) MSGPACK_PP_REPEAT_2_152(m, d) m(3, 152, d)
+# define MSGPACK_PP_REPEAT_2_154(m, d) MSGPACK_PP_REPEAT_2_153(m, d) m(3, 153, d)
+# define MSGPACK_PP_REPEAT_2_155(m, d) MSGPACK_PP_REPEAT_2_154(m, d) m(3, 154, d)
+# define MSGPACK_PP_REPEAT_2_156(m, d) MSGPACK_PP_REPEAT_2_155(m, d) m(3, 155, d)
+# define MSGPACK_PP_REPEAT_2_157(m, d) MSGPACK_PP_REPEAT_2_156(m, d) m(3, 156, d)
+# define MSGPACK_PP_REPEAT_2_158(m, d) MSGPACK_PP_REPEAT_2_157(m, d) m(3, 157, d)
+# define MSGPACK_PP_REPEAT_2_159(m, d) MSGPACK_PP_REPEAT_2_158(m, d) m(3, 158, d)
+# define MSGPACK_PP_REPEAT_2_160(m, d) MSGPACK_PP_REPEAT_2_159(m, d) m(3, 159, d)
+# define MSGPACK_PP_REPEAT_2_161(m, d) MSGPACK_PP_REPEAT_2_160(m, d) m(3, 160, d)
+# define MSGPACK_PP_REPEAT_2_162(m, d) MSGPACK_PP_REPEAT_2_161(m, d) m(3, 161, d)
+# define MSGPACK_PP_REPEAT_2_163(m, d) MSGPACK_PP_REPEAT_2_162(m, d) m(3, 162, d)
+# define MSGPACK_PP_REPEAT_2_164(m, d) MSGPACK_PP_REPEAT_2_163(m, d) m(3, 163, d)
+# define MSGPACK_PP_REPEAT_2_165(m, d) MSGPACK_PP_REPEAT_2_164(m, d) m(3, 164, d)
+# define MSGPACK_PP_REPEAT_2_166(m, d) MSGPACK_PP_REPEAT_2_165(m, d) m(3, 165, d)
+# define MSGPACK_PP_REPEAT_2_167(m, d) MSGPACK_PP_REPEAT_2_166(m, d) m(3, 166, d)
+# define MSGPACK_PP_REPEAT_2_168(m, d) MSGPACK_PP_REPEAT_2_167(m, d) m(3, 167, d)
+# define MSGPACK_PP_REPEAT_2_169(m, d) MSGPACK_PP_REPEAT_2_168(m, d) m(3, 168, d)
+# define MSGPACK_PP_REPEAT_2_170(m, d) MSGPACK_PP_REPEAT_2_169(m, d) m(3, 169, d)
+# define MSGPACK_PP_REPEAT_2_171(m, d) MSGPACK_PP_REPEAT_2_170(m, d) m(3, 170, d)
+# define MSGPACK_PP_REPEAT_2_172(m, d) MSGPACK_PP_REPEAT_2_171(m, d) m(3, 171, d)
+# define MSGPACK_PP_REPEAT_2_173(m, d) MSGPACK_PP_REPEAT_2_172(m, d) m(3, 172, d)
+# define MSGPACK_PP_REPEAT_2_174(m, d) MSGPACK_PP_REPEAT_2_173(m, d) m(3, 173, d)
+# define MSGPACK_PP_REPEAT_2_175(m, d) MSGPACK_PP_REPEAT_2_174(m, d) m(3, 174, d)
+# define MSGPACK_PP_REPEAT_2_176(m, d) MSGPACK_PP_REPEAT_2_175(m, d) m(3, 175, d)
+# define MSGPACK_PP_REPEAT_2_177(m, d) MSGPACK_PP_REPEAT_2_176(m, d) m(3, 176, d)
+# define MSGPACK_PP_REPEAT_2_178(m, d) MSGPACK_PP_REPEAT_2_177(m, d) m(3, 177, d)
+# define MSGPACK_PP_REPEAT_2_179(m, d) MSGPACK_PP_REPEAT_2_178(m, d) m(3, 178, d)
+# define MSGPACK_PP_REPEAT_2_180(m, d) MSGPACK_PP_REPEAT_2_179(m, d) m(3, 179, d)
+# define MSGPACK_PP_REPEAT_2_181(m, d) MSGPACK_PP_REPEAT_2_180(m, d) m(3, 180, d)
+# define MSGPACK_PP_REPEAT_2_182(m, d) MSGPACK_PP_REPEAT_2_181(m, d) m(3, 181, d)
+# define MSGPACK_PP_REPEAT_2_183(m, d) MSGPACK_PP_REPEAT_2_182(m, d) m(3, 182, d)
+# define MSGPACK_PP_REPEAT_2_184(m, d) MSGPACK_PP_REPEAT_2_183(m, d) m(3, 183, d)
+# define MSGPACK_PP_REPEAT_2_185(m, d) MSGPACK_PP_REPEAT_2_184(m, d) m(3, 184, d)
+# define MSGPACK_PP_REPEAT_2_186(m, d) MSGPACK_PP_REPEAT_2_185(m, d) m(3, 185, d)
+# define MSGPACK_PP_REPEAT_2_187(m, d) MSGPACK_PP_REPEAT_2_186(m, d) m(3, 186, d)
+# define MSGPACK_PP_REPEAT_2_188(m, d) MSGPACK_PP_REPEAT_2_187(m, d) m(3, 187, d)
+# define MSGPACK_PP_REPEAT_2_189(m, d) MSGPACK_PP_REPEAT_2_188(m, d) m(3, 188, d)
+# define MSGPACK_PP_REPEAT_2_190(m, d) MSGPACK_PP_REPEAT_2_189(m, d) m(3, 189, d)
+# define MSGPACK_PP_REPEAT_2_191(m, d) MSGPACK_PP_REPEAT_2_190(m, d) m(3, 190, d)
+# define MSGPACK_PP_REPEAT_2_192(m, d) MSGPACK_PP_REPEAT_2_191(m, d) m(3, 191, d)
+# define MSGPACK_PP_REPEAT_2_193(m, d) MSGPACK_PP_REPEAT_2_192(m, d) m(3, 192, d)
+# define MSGPACK_PP_REPEAT_2_194(m, d) MSGPACK_PP_REPEAT_2_193(m, d) m(3, 193, d)
+# define MSGPACK_PP_REPEAT_2_195(m, d) MSGPACK_PP_REPEAT_2_194(m, d) m(3, 194, d)
+# define MSGPACK_PP_REPEAT_2_196(m, d) MSGPACK_PP_REPEAT_2_195(m, d) m(3, 195, d)
+# define MSGPACK_PP_REPEAT_2_197(m, d) MSGPACK_PP_REPEAT_2_196(m, d) m(3, 196, d)
+# define MSGPACK_PP_REPEAT_2_198(m, d) MSGPACK_PP_REPEAT_2_197(m, d) m(3, 197, d)
+# define MSGPACK_PP_REPEAT_2_199(m, d) MSGPACK_PP_REPEAT_2_198(m, d) m(3, 198, d)
+# define MSGPACK_PP_REPEAT_2_200(m, d) MSGPACK_PP_REPEAT_2_199(m, d) m(3, 199, d)
+# define MSGPACK_PP_REPEAT_2_201(m, d) MSGPACK_PP_REPEAT_2_200(m, d) m(3, 200, d)
+# define MSGPACK_PP_REPEAT_2_202(m, d) MSGPACK_PP_REPEAT_2_201(m, d) m(3, 201, d)
+# define MSGPACK_PP_REPEAT_2_203(m, d) MSGPACK_PP_REPEAT_2_202(m, d) m(3, 202, d)
+# define MSGPACK_PP_REPEAT_2_204(m, d) MSGPACK_PP_REPEAT_2_203(m, d) m(3, 203, d)
+# define MSGPACK_PP_REPEAT_2_205(m, d) MSGPACK_PP_REPEAT_2_204(m, d) m(3, 204, d)
+# define MSGPACK_PP_REPEAT_2_206(m, d) MSGPACK_PP_REPEAT_2_205(m, d) m(3, 205, d)
+# define MSGPACK_PP_REPEAT_2_207(m, d) MSGPACK_PP_REPEAT_2_206(m, d) m(3, 206, d)
+# define MSGPACK_PP_REPEAT_2_208(m, d) MSGPACK_PP_REPEAT_2_207(m, d) m(3, 207, d)
+# define MSGPACK_PP_REPEAT_2_209(m, d) MSGPACK_PP_REPEAT_2_208(m, d) m(3, 208, d)
+# define MSGPACK_PP_REPEAT_2_210(m, d) MSGPACK_PP_REPEAT_2_209(m, d) m(3, 209, d)
+# define MSGPACK_PP_REPEAT_2_211(m, d) MSGPACK_PP_REPEAT_2_210(m, d) m(3, 210, d)
+# define MSGPACK_PP_REPEAT_2_212(m, d) MSGPACK_PP_REPEAT_2_211(m, d) m(3, 211, d)
+# define MSGPACK_PP_REPEAT_2_213(m, d) MSGPACK_PP_REPEAT_2_212(m, d) m(3, 212, d)
+# define MSGPACK_PP_REPEAT_2_214(m, d) MSGPACK_PP_REPEAT_2_213(m, d) m(3, 213, d)
+# define MSGPACK_PP_REPEAT_2_215(m, d) MSGPACK_PP_REPEAT_2_214(m, d) m(3, 214, d)
+# define MSGPACK_PP_REPEAT_2_216(m, d) MSGPACK_PP_REPEAT_2_215(m, d) m(3, 215, d)
+# define MSGPACK_PP_REPEAT_2_217(m, d) MSGPACK_PP_REPEAT_2_216(m, d) m(3, 216, d)
+# define MSGPACK_PP_REPEAT_2_218(m, d) MSGPACK_PP_REPEAT_2_217(m, d) m(3, 217, d)
+# define MSGPACK_PP_REPEAT_2_219(m, d) MSGPACK_PP_REPEAT_2_218(m, d) m(3, 218, d)
+# define MSGPACK_PP_REPEAT_2_220(m, d) MSGPACK_PP_REPEAT_2_219(m, d) m(3, 219, d)
+# define MSGPACK_PP_REPEAT_2_221(m, d) MSGPACK_PP_REPEAT_2_220(m, d) m(3, 220, d)
+# define MSGPACK_PP_REPEAT_2_222(m, d) MSGPACK_PP_REPEAT_2_221(m, d) m(3, 221, d)
+# define MSGPACK_PP_REPEAT_2_223(m, d) MSGPACK_PP_REPEAT_2_222(m, d) m(3, 222, d)
+# define MSGPACK_PP_REPEAT_2_224(m, d) MSGPACK_PP_REPEAT_2_223(m, d) m(3, 223, d)
+# define MSGPACK_PP_REPEAT_2_225(m, d) MSGPACK_PP_REPEAT_2_224(m, d) m(3, 224, d)
+# define MSGPACK_PP_REPEAT_2_226(m, d) MSGPACK_PP_REPEAT_2_225(m, d) m(3, 225, d)
+# define MSGPACK_PP_REPEAT_2_227(m, d) MSGPACK_PP_REPEAT_2_226(m, d) m(3, 226, d)
+# define MSGPACK_PP_REPEAT_2_228(m, d) MSGPACK_PP_REPEAT_2_227(m, d) m(3, 227, d)
+# define MSGPACK_PP_REPEAT_2_229(m, d) MSGPACK_PP_REPEAT_2_228(m, d) m(3, 228, d)
+# define MSGPACK_PP_REPEAT_2_230(m, d) MSGPACK_PP_REPEAT_2_229(m, d) m(3, 229, d)
+# define MSGPACK_PP_REPEAT_2_231(m, d) MSGPACK_PP_REPEAT_2_230(m, d) m(3, 230, d)
+# define MSGPACK_PP_REPEAT_2_232(m, d) MSGPACK_PP_REPEAT_2_231(m, d) m(3, 231, d)
+# define MSGPACK_PP_REPEAT_2_233(m, d) MSGPACK_PP_REPEAT_2_232(m, d) m(3, 232, d)
+# define MSGPACK_PP_REPEAT_2_234(m, d) MSGPACK_PP_REPEAT_2_233(m, d) m(3, 233, d)
+# define MSGPACK_PP_REPEAT_2_235(m, d) MSGPACK_PP_REPEAT_2_234(m, d) m(3, 234, d)
+# define MSGPACK_PP_REPEAT_2_236(m, d) MSGPACK_PP_REPEAT_2_235(m, d) m(3, 235, d)
+# define MSGPACK_PP_REPEAT_2_237(m, d) MSGPACK_PP_REPEAT_2_236(m, d) m(3, 236, d)
+# define MSGPACK_PP_REPEAT_2_238(m, d) MSGPACK_PP_REPEAT_2_237(m, d) m(3, 237, d)
+# define MSGPACK_PP_REPEAT_2_239(m, d) MSGPACK_PP_REPEAT_2_238(m, d) m(3, 238, d)
+# define MSGPACK_PP_REPEAT_2_240(m, d) MSGPACK_PP_REPEAT_2_239(m, d) m(3, 239, d)
+# define MSGPACK_PP_REPEAT_2_241(m, d) MSGPACK_PP_REPEAT_2_240(m, d) m(3, 240, d)
+# define MSGPACK_PP_REPEAT_2_242(m, d) MSGPACK_PP_REPEAT_2_241(m, d) m(3, 241, d)
+# define MSGPACK_PP_REPEAT_2_243(m, d) MSGPACK_PP_REPEAT_2_242(m, d) m(3, 242, d)
+# define MSGPACK_PP_REPEAT_2_244(m, d) MSGPACK_PP_REPEAT_2_243(m, d) m(3, 243, d)
+# define MSGPACK_PP_REPEAT_2_245(m, d) MSGPACK_PP_REPEAT_2_244(m, d) m(3, 244, d)
+# define MSGPACK_PP_REPEAT_2_246(m, d) MSGPACK_PP_REPEAT_2_245(m, d) m(3, 245, d)
+# define MSGPACK_PP_REPEAT_2_247(m, d) MSGPACK_PP_REPEAT_2_246(m, d) m(3, 246, d)
+# define MSGPACK_PP_REPEAT_2_248(m, d) MSGPACK_PP_REPEAT_2_247(m, d) m(3, 247, d)
+# define MSGPACK_PP_REPEAT_2_249(m, d) MSGPACK_PP_REPEAT_2_248(m, d) m(3, 248, d)
+# define MSGPACK_PP_REPEAT_2_250(m, d) MSGPACK_PP_REPEAT_2_249(m, d) m(3, 249, d)
+# define MSGPACK_PP_REPEAT_2_251(m, d) MSGPACK_PP_REPEAT_2_250(m, d) m(3, 250, d)
+# define MSGPACK_PP_REPEAT_2_252(m, d) MSGPACK_PP_REPEAT_2_251(m, d) m(3, 251, d)
+# define MSGPACK_PP_REPEAT_2_253(m, d) MSGPACK_PP_REPEAT_2_252(m, d) m(3, 252, d)
+# define MSGPACK_PP_REPEAT_2_254(m, d) MSGPACK_PP_REPEAT_2_253(m, d) m(3, 253, d)
+# define MSGPACK_PP_REPEAT_2_255(m, d) MSGPACK_PP_REPEAT_2_254(m, d) m(3, 254, d)
+# define MSGPACK_PP_REPEAT_2_256(m, d) MSGPACK_PP_REPEAT_2_255(m, d) m(3, 255, d)
+#
+# define MSGPACK_PP_REPEAT_3_0(m, d)
+# define MSGPACK_PP_REPEAT_3_1(m, d) m(4, 0, d)
+# define MSGPACK_PP_REPEAT_3_2(m, d) MSGPACK_PP_REPEAT_3_1(m, d) m(4, 1, d)
+# define MSGPACK_PP_REPEAT_3_3(m, d) MSGPACK_PP_REPEAT_3_2(m, d) m(4, 2, d)
+# define MSGPACK_PP_REPEAT_3_4(m, d) MSGPACK_PP_REPEAT_3_3(m, d) m(4, 3, d)
+# define MSGPACK_PP_REPEAT_3_5(m, d) MSGPACK_PP_REPEAT_3_4(m, d) m(4, 4, d)
+# define MSGPACK_PP_REPEAT_3_6(m, d) MSGPACK_PP_REPEAT_3_5(m, d) m(4, 5, d)
+# define MSGPACK_PP_REPEAT_3_7(m, d) MSGPACK_PP_REPEAT_3_6(m, d) m(4, 6, d)
+# define MSGPACK_PP_REPEAT_3_8(m, d) MSGPACK_PP_REPEAT_3_7(m, d) m(4, 7, d)
+# define MSGPACK_PP_REPEAT_3_9(m, d) MSGPACK_PP_REPEAT_3_8(m, d) m(4, 8, d)
+# define MSGPACK_PP_REPEAT_3_10(m, d) MSGPACK_PP_REPEAT_3_9(m, d) m(4, 9, d)
+# define MSGPACK_PP_REPEAT_3_11(m, d) MSGPACK_PP_REPEAT_3_10(m, d) m(4, 10, d)
+# define MSGPACK_PP_REPEAT_3_12(m, d) MSGPACK_PP_REPEAT_3_11(m, d) m(4, 11, d)
+# define MSGPACK_PP_REPEAT_3_13(m, d) MSGPACK_PP_REPEAT_3_12(m, d) m(4, 12, d)
+# define MSGPACK_PP_REPEAT_3_14(m, d) MSGPACK_PP_REPEAT_3_13(m, d) m(4, 13, d)
+# define MSGPACK_PP_REPEAT_3_15(m, d) MSGPACK_PP_REPEAT_3_14(m, d) m(4, 14, d)
+# define MSGPACK_PP_REPEAT_3_16(m, d) MSGPACK_PP_REPEAT_3_15(m, d) m(4, 15, d)
+# define MSGPACK_PP_REPEAT_3_17(m, d) MSGPACK_PP_REPEAT_3_16(m, d) m(4, 16, d)
+# define MSGPACK_PP_REPEAT_3_18(m, d) MSGPACK_PP_REPEAT_3_17(m, d) m(4, 17, d)
+# define MSGPACK_PP_REPEAT_3_19(m, d) MSGPACK_PP_REPEAT_3_18(m, d) m(4, 18, d)
+# define MSGPACK_PP_REPEAT_3_20(m, d) MSGPACK_PP_REPEAT_3_19(m, d) m(4, 19, d)
+# define MSGPACK_PP_REPEAT_3_21(m, d) MSGPACK_PP_REPEAT_3_20(m, d) m(4, 20, d)
+# define MSGPACK_PP_REPEAT_3_22(m, d) MSGPACK_PP_REPEAT_3_21(m, d) m(4, 21, d)
+# define MSGPACK_PP_REPEAT_3_23(m, d) MSGPACK_PP_REPEAT_3_22(m, d) m(4, 22, d)
+# define MSGPACK_PP_REPEAT_3_24(m, d) MSGPACK_PP_REPEAT_3_23(m, d) m(4, 23, d)
+# define MSGPACK_PP_REPEAT_3_25(m, d) MSGPACK_PP_REPEAT_3_24(m, d) m(4, 24, d)
+# define MSGPACK_PP_REPEAT_3_26(m, d) MSGPACK_PP_REPEAT_3_25(m, d) m(4, 25, d)
+# define MSGPACK_PP_REPEAT_3_27(m, d) MSGPACK_PP_REPEAT_3_26(m, d) m(4, 26, d)
+# define MSGPACK_PP_REPEAT_3_28(m, d) MSGPACK_PP_REPEAT_3_27(m, d) m(4, 27, d)
+# define MSGPACK_PP_REPEAT_3_29(m, d) MSGPACK_PP_REPEAT_3_28(m, d) m(4, 28, d)
+# define MSGPACK_PP_REPEAT_3_30(m, d) MSGPACK_PP_REPEAT_3_29(m, d) m(4, 29, d)
+# define MSGPACK_PP_REPEAT_3_31(m, d) MSGPACK_PP_REPEAT_3_30(m, d) m(4, 30, d)
+# define MSGPACK_PP_REPEAT_3_32(m, d) MSGPACK_PP_REPEAT_3_31(m, d) m(4, 31, d)
+# define MSGPACK_PP_REPEAT_3_33(m, d) MSGPACK_PP_REPEAT_3_32(m, d) m(4, 32, d)
+# define MSGPACK_PP_REPEAT_3_34(m, d) MSGPACK_PP_REPEAT_3_33(m, d) m(4, 33, d)
+# define MSGPACK_PP_REPEAT_3_35(m, d) MSGPACK_PP_REPEAT_3_34(m, d) m(4, 34, d)
+# define MSGPACK_PP_REPEAT_3_36(m, d) MSGPACK_PP_REPEAT_3_35(m, d) m(4, 35, d)
+# define MSGPACK_PP_REPEAT_3_37(m, d) MSGPACK_PP_REPEAT_3_36(m, d) m(4, 36, d)
+# define MSGPACK_PP_REPEAT_3_38(m, d) MSGPACK_PP_REPEAT_3_37(m, d) m(4, 37, d)
+# define MSGPACK_PP_REPEAT_3_39(m, d) MSGPACK_PP_REPEAT_3_38(m, d) m(4, 38, d)
+# define MSGPACK_PP_REPEAT_3_40(m, d) MSGPACK_PP_REPEAT_3_39(m, d) m(4, 39, d)
+# define MSGPACK_PP_REPEAT_3_41(m, d) MSGPACK_PP_REPEAT_3_40(m, d) m(4, 40, d)
+# define MSGPACK_PP_REPEAT_3_42(m, d) MSGPACK_PP_REPEAT_3_41(m, d) m(4, 41, d)
+# define MSGPACK_PP_REPEAT_3_43(m, d) MSGPACK_PP_REPEAT_3_42(m, d) m(4, 42, d)
+# define MSGPACK_PP_REPEAT_3_44(m, d) MSGPACK_PP_REPEAT_3_43(m, d) m(4, 43, d)
+# define MSGPACK_PP_REPEAT_3_45(m, d) MSGPACK_PP_REPEAT_3_44(m, d) m(4, 44, d)
+# define MSGPACK_PP_REPEAT_3_46(m, d) MSGPACK_PP_REPEAT_3_45(m, d) m(4, 45, d)
+# define MSGPACK_PP_REPEAT_3_47(m, d) MSGPACK_PP_REPEAT_3_46(m, d) m(4, 46, d)
+# define MSGPACK_PP_REPEAT_3_48(m, d) MSGPACK_PP_REPEAT_3_47(m, d) m(4, 47, d)
+# define MSGPACK_PP_REPEAT_3_49(m, d) MSGPACK_PP_REPEAT_3_48(m, d) m(4, 48, d)
+# define MSGPACK_PP_REPEAT_3_50(m, d) MSGPACK_PP_REPEAT_3_49(m, d) m(4, 49, d)
+# define MSGPACK_PP_REPEAT_3_51(m, d) MSGPACK_PP_REPEAT_3_50(m, d) m(4, 50, d)
+# define MSGPACK_PP_REPEAT_3_52(m, d) MSGPACK_PP_REPEAT_3_51(m, d) m(4, 51, d)
+# define MSGPACK_PP_REPEAT_3_53(m, d) MSGPACK_PP_REPEAT_3_52(m, d) m(4, 52, d)
+# define MSGPACK_PP_REPEAT_3_54(m, d) MSGPACK_PP_REPEAT_3_53(m, d) m(4, 53, d)
+# define MSGPACK_PP_REPEAT_3_55(m, d) MSGPACK_PP_REPEAT_3_54(m, d) m(4, 54, d)
+# define MSGPACK_PP_REPEAT_3_56(m, d) MSGPACK_PP_REPEAT_3_55(m, d) m(4, 55, d)
+# define MSGPACK_PP_REPEAT_3_57(m, d) MSGPACK_PP_REPEAT_3_56(m, d) m(4, 56, d)
+# define MSGPACK_PP_REPEAT_3_58(m, d) MSGPACK_PP_REPEAT_3_57(m, d) m(4, 57, d)
+# define MSGPACK_PP_REPEAT_3_59(m, d) MSGPACK_PP_REPEAT_3_58(m, d) m(4, 58, d)
+# define MSGPACK_PP_REPEAT_3_60(m, d) MSGPACK_PP_REPEAT_3_59(m, d) m(4, 59, d)
+# define MSGPACK_PP_REPEAT_3_61(m, d) MSGPACK_PP_REPEAT_3_60(m, d) m(4, 60, d)
+# define MSGPACK_PP_REPEAT_3_62(m, d) MSGPACK_PP_REPEAT_3_61(m, d) m(4, 61, d)
+# define MSGPACK_PP_REPEAT_3_63(m, d) MSGPACK_PP_REPEAT_3_62(m, d) m(4, 62, d)
+# define MSGPACK_PP_REPEAT_3_64(m, d) MSGPACK_PP_REPEAT_3_63(m, d) m(4, 63, d)
+# define MSGPACK_PP_REPEAT_3_65(m, d) MSGPACK_PP_REPEAT_3_64(m, d) m(4, 64, d)
+# define MSGPACK_PP_REPEAT_3_66(m, d) MSGPACK_PP_REPEAT_3_65(m, d) m(4, 65, d)
+# define MSGPACK_PP_REPEAT_3_67(m, d) MSGPACK_PP_REPEAT_3_66(m, d) m(4, 66, d)
+# define MSGPACK_PP_REPEAT_3_68(m, d) MSGPACK_PP_REPEAT_3_67(m, d) m(4, 67, d)
+# define MSGPACK_PP_REPEAT_3_69(m, d) MSGPACK_PP_REPEAT_3_68(m, d) m(4, 68, d)
+# define MSGPACK_PP_REPEAT_3_70(m, d) MSGPACK_PP_REPEAT_3_69(m, d) m(4, 69, d)
+# define MSGPACK_PP_REPEAT_3_71(m, d) MSGPACK_PP_REPEAT_3_70(m, d) m(4, 70, d)
+# define MSGPACK_PP_REPEAT_3_72(m, d) MSGPACK_PP_REPEAT_3_71(m, d) m(4, 71, d)
+# define MSGPACK_PP_REPEAT_3_73(m, d) MSGPACK_PP_REPEAT_3_72(m, d) m(4, 72, d)
+# define MSGPACK_PP_REPEAT_3_74(m, d) MSGPACK_PP_REPEAT_3_73(m, d) m(4, 73, d)
+# define MSGPACK_PP_REPEAT_3_75(m, d) MSGPACK_PP_REPEAT_3_74(m, d) m(4, 74, d)
+# define MSGPACK_PP_REPEAT_3_76(m, d) MSGPACK_PP_REPEAT_3_75(m, d) m(4, 75, d)
+# define MSGPACK_PP_REPEAT_3_77(m, d) MSGPACK_PP_REPEAT_3_76(m, d) m(4, 76, d)
+# define MSGPACK_PP_REPEAT_3_78(m, d) MSGPACK_PP_REPEAT_3_77(m, d) m(4, 77, d)
+# define MSGPACK_PP_REPEAT_3_79(m, d) MSGPACK_PP_REPEAT_3_78(m, d) m(4, 78, d)
+# define MSGPACK_PP_REPEAT_3_80(m, d) MSGPACK_PP_REPEAT_3_79(m, d) m(4, 79, d)
+# define MSGPACK_PP_REPEAT_3_81(m, d) MSGPACK_PP_REPEAT_3_80(m, d) m(4, 80, d)
+# define MSGPACK_PP_REPEAT_3_82(m, d) MSGPACK_PP_REPEAT_3_81(m, d) m(4, 81, d)
+# define MSGPACK_PP_REPEAT_3_83(m, d) MSGPACK_PP_REPEAT_3_82(m, d) m(4, 82, d)
+# define MSGPACK_PP_REPEAT_3_84(m, d) MSGPACK_PP_REPEAT_3_83(m, d) m(4, 83, d)
+# define MSGPACK_PP_REPEAT_3_85(m, d) MSGPACK_PP_REPEAT_3_84(m, d) m(4, 84, d)
+# define MSGPACK_PP_REPEAT_3_86(m, d) MSGPACK_PP_REPEAT_3_85(m, d) m(4, 85, d)
+# define MSGPACK_PP_REPEAT_3_87(m, d) MSGPACK_PP_REPEAT_3_86(m, d) m(4, 86, d)
+# define MSGPACK_PP_REPEAT_3_88(m, d) MSGPACK_PP_REPEAT_3_87(m, d) m(4, 87, d)
+# define MSGPACK_PP_REPEAT_3_89(m, d) MSGPACK_PP_REPEAT_3_88(m, d) m(4, 88, d)
+# define MSGPACK_PP_REPEAT_3_90(m, d) MSGPACK_PP_REPEAT_3_89(m, d) m(4, 89, d)
+# define MSGPACK_PP_REPEAT_3_91(m, d) MSGPACK_PP_REPEAT_3_90(m, d) m(4, 90, d)
+# define MSGPACK_PP_REPEAT_3_92(m, d) MSGPACK_PP_REPEAT_3_91(m, d) m(4, 91, d)
+# define MSGPACK_PP_REPEAT_3_93(m, d) MSGPACK_PP_REPEAT_3_92(m, d) m(4, 92, d)
+# define MSGPACK_PP_REPEAT_3_94(m, d) MSGPACK_PP_REPEAT_3_93(m, d) m(4, 93, d)
+# define MSGPACK_PP_REPEAT_3_95(m, d) MSGPACK_PP_REPEAT_3_94(m, d) m(4, 94, d)
+# define MSGPACK_PP_REPEAT_3_96(m, d) MSGPACK_PP_REPEAT_3_95(m, d) m(4, 95, d)
+# define MSGPACK_PP_REPEAT_3_97(m, d) MSGPACK_PP_REPEAT_3_96(m, d) m(4, 96, d)
+# define MSGPACK_PP_REPEAT_3_98(m, d) MSGPACK_PP_REPEAT_3_97(m, d) m(4, 97, d)
+# define MSGPACK_PP_REPEAT_3_99(m, d) MSGPACK_PP_REPEAT_3_98(m, d) m(4, 98, d)
+# define MSGPACK_PP_REPEAT_3_100(m, d) MSGPACK_PP_REPEAT_3_99(m, d) m(4, 99, d)
+# define MSGPACK_PP_REPEAT_3_101(m, d) MSGPACK_PP_REPEAT_3_100(m, d) m(4, 100, d)
+# define MSGPACK_PP_REPEAT_3_102(m, d) MSGPACK_PP_REPEAT_3_101(m, d) m(4, 101, d)
+# define MSGPACK_PP_REPEAT_3_103(m, d) MSGPACK_PP_REPEAT_3_102(m, d) m(4, 102, d)
+# define MSGPACK_PP_REPEAT_3_104(m, d) MSGPACK_PP_REPEAT_3_103(m, d) m(4, 103, d)
+# define MSGPACK_PP_REPEAT_3_105(m, d) MSGPACK_PP_REPEAT_3_104(m, d) m(4, 104, d)
+# define MSGPACK_PP_REPEAT_3_106(m, d) MSGPACK_PP_REPEAT_3_105(m, d) m(4, 105, d)
+# define MSGPACK_PP_REPEAT_3_107(m, d) MSGPACK_PP_REPEAT_3_106(m, d) m(4, 106, d)
+# define MSGPACK_PP_REPEAT_3_108(m, d) MSGPACK_PP_REPEAT_3_107(m, d) m(4, 107, d)
+# define MSGPACK_PP_REPEAT_3_109(m, d) MSGPACK_PP_REPEAT_3_108(m, d) m(4, 108, d)
+# define MSGPACK_PP_REPEAT_3_110(m, d) MSGPACK_PP_REPEAT_3_109(m, d) m(4, 109, d)
+# define MSGPACK_PP_REPEAT_3_111(m, d) MSGPACK_PP_REPEAT_3_110(m, d) m(4, 110, d)
+# define MSGPACK_PP_REPEAT_3_112(m, d) MSGPACK_PP_REPEAT_3_111(m, d) m(4, 111, d)
+# define MSGPACK_PP_REPEAT_3_113(m, d) MSGPACK_PP_REPEAT_3_112(m, d) m(4, 112, d)
+# define MSGPACK_PP_REPEAT_3_114(m, d) MSGPACK_PP_REPEAT_3_113(m, d) m(4, 113, d)
+# define MSGPACK_PP_REPEAT_3_115(m, d) MSGPACK_PP_REPEAT_3_114(m, d) m(4, 114, d)
+# define MSGPACK_PP_REPEAT_3_116(m, d) MSGPACK_PP_REPEAT_3_115(m, d) m(4, 115, d)
+# define MSGPACK_PP_REPEAT_3_117(m, d) MSGPACK_PP_REPEAT_3_116(m, d) m(4, 116, d)
+# define MSGPACK_PP_REPEAT_3_118(m, d) MSGPACK_PP_REPEAT_3_117(m, d) m(4, 117, d)
+# define MSGPACK_PP_REPEAT_3_119(m, d) MSGPACK_PP_REPEAT_3_118(m, d) m(4, 118, d)
+# define MSGPACK_PP_REPEAT_3_120(m, d) MSGPACK_PP_REPEAT_3_119(m, d) m(4, 119, d)
+# define MSGPACK_PP_REPEAT_3_121(m, d) MSGPACK_PP_REPEAT_3_120(m, d) m(4, 120, d)
+# define MSGPACK_PP_REPEAT_3_122(m, d) MSGPACK_PP_REPEAT_3_121(m, d) m(4, 121, d)
+# define MSGPACK_PP_REPEAT_3_123(m, d) MSGPACK_PP_REPEAT_3_122(m, d) m(4, 122, d)
+# define MSGPACK_PP_REPEAT_3_124(m, d) MSGPACK_PP_REPEAT_3_123(m, d) m(4, 123, d)
+# define MSGPACK_PP_REPEAT_3_125(m, d) MSGPACK_PP_REPEAT_3_124(m, d) m(4, 124, d)
+# define MSGPACK_PP_REPEAT_3_126(m, d) MSGPACK_PP_REPEAT_3_125(m, d) m(4, 125, d)
+# define MSGPACK_PP_REPEAT_3_127(m, d) MSGPACK_PP_REPEAT_3_126(m, d) m(4, 126, d)
+# define MSGPACK_PP_REPEAT_3_128(m, d) MSGPACK_PP_REPEAT_3_127(m, d) m(4, 127, d)
+# define MSGPACK_PP_REPEAT_3_129(m, d) MSGPACK_PP_REPEAT_3_128(m, d) m(4, 128, d)
+# define MSGPACK_PP_REPEAT_3_130(m, d) MSGPACK_PP_REPEAT_3_129(m, d) m(4, 129, d)
+# define MSGPACK_PP_REPEAT_3_131(m, d) MSGPACK_PP_REPEAT_3_130(m, d) m(4, 130, d)
+# define MSGPACK_PP_REPEAT_3_132(m, d) MSGPACK_PP_REPEAT_3_131(m, d) m(4, 131, d)
+# define MSGPACK_PP_REPEAT_3_133(m, d) MSGPACK_PP_REPEAT_3_132(m, d) m(4, 132, d)
+# define MSGPACK_PP_REPEAT_3_134(m, d) MSGPACK_PP_REPEAT_3_133(m, d) m(4, 133, d)
+# define MSGPACK_PP_REPEAT_3_135(m, d) MSGPACK_PP_REPEAT_3_134(m, d) m(4, 134, d)
+# define MSGPACK_PP_REPEAT_3_136(m, d) MSGPACK_PP_REPEAT_3_135(m, d) m(4, 135, d)
+# define MSGPACK_PP_REPEAT_3_137(m, d) MSGPACK_PP_REPEAT_3_136(m, d) m(4, 136, d)
+# define MSGPACK_PP_REPEAT_3_138(m, d) MSGPACK_PP_REPEAT_3_137(m, d) m(4, 137, d)
+# define MSGPACK_PP_REPEAT_3_139(m, d) MSGPACK_PP_REPEAT_3_138(m, d) m(4, 138, d)
+# define MSGPACK_PP_REPEAT_3_140(m, d) MSGPACK_PP_REPEAT_3_139(m, d) m(4, 139, d)
+# define MSGPACK_PP_REPEAT_3_141(m, d) MSGPACK_PP_REPEAT_3_140(m, d) m(4, 140, d)
+# define MSGPACK_PP_REPEAT_3_142(m, d) MSGPACK_PP_REPEAT_3_141(m, d) m(4, 141, d)
+# define MSGPACK_PP_REPEAT_3_143(m, d) MSGPACK_PP_REPEAT_3_142(m, d) m(4, 142, d)
+# define MSGPACK_PP_REPEAT_3_144(m, d) MSGPACK_PP_REPEAT_3_143(m, d) m(4, 143, d)
+# define MSGPACK_PP_REPEAT_3_145(m, d) MSGPACK_PP_REPEAT_3_144(m, d) m(4, 144, d)
+# define MSGPACK_PP_REPEAT_3_146(m, d) MSGPACK_PP_REPEAT_3_145(m, d) m(4, 145, d)
+# define MSGPACK_PP_REPEAT_3_147(m, d) MSGPACK_PP_REPEAT_3_146(m, d) m(4, 146, d)
+# define MSGPACK_PP_REPEAT_3_148(m, d) MSGPACK_PP_REPEAT_3_147(m, d) m(4, 147, d)
+# define MSGPACK_PP_REPEAT_3_149(m, d) MSGPACK_PP_REPEAT_3_148(m, d) m(4, 148, d)
+# define MSGPACK_PP_REPEAT_3_150(m, d) MSGPACK_PP_REPEAT_3_149(m, d) m(4, 149, d)
+# define MSGPACK_PP_REPEAT_3_151(m, d) MSGPACK_PP_REPEAT_3_150(m, d) m(4, 150, d)
+# define MSGPACK_PP_REPEAT_3_152(m, d) MSGPACK_PP_REPEAT_3_151(m, d) m(4, 151, d)
+# define MSGPACK_PP_REPEAT_3_153(m, d) MSGPACK_PP_REPEAT_3_152(m, d) m(4, 152, d)
+# define MSGPACK_PP_REPEAT_3_154(m, d) MSGPACK_PP_REPEAT_3_153(m, d) m(4, 153, d)
+# define MSGPACK_PP_REPEAT_3_155(m, d) MSGPACK_PP_REPEAT_3_154(m, d) m(4, 154, d)
+# define MSGPACK_PP_REPEAT_3_156(m, d) MSGPACK_PP_REPEAT_3_155(m, d) m(4, 155, d)
+# define MSGPACK_PP_REPEAT_3_157(m, d) MSGPACK_PP_REPEAT_3_156(m, d) m(4, 156, d)
+# define MSGPACK_PP_REPEAT_3_158(m, d) MSGPACK_PP_REPEAT_3_157(m, d) m(4, 157, d)
+# define MSGPACK_PP_REPEAT_3_159(m, d) MSGPACK_PP_REPEAT_3_158(m, d) m(4, 158, d)
+# define MSGPACK_PP_REPEAT_3_160(m, d) MSGPACK_PP_REPEAT_3_159(m, d) m(4, 159, d)
+# define MSGPACK_PP_REPEAT_3_161(m, d) MSGPACK_PP_REPEAT_3_160(m, d) m(4, 160, d)
+# define MSGPACK_PP_REPEAT_3_162(m, d) MSGPACK_PP_REPEAT_3_161(m, d) m(4, 161, d)
+# define MSGPACK_PP_REPEAT_3_163(m, d) MSGPACK_PP_REPEAT_3_162(m, d) m(4, 162, d)
+# define MSGPACK_PP_REPEAT_3_164(m, d) MSGPACK_PP_REPEAT_3_163(m, d) m(4, 163, d)
+# define MSGPACK_PP_REPEAT_3_165(m, d) MSGPACK_PP_REPEAT_3_164(m, d) m(4, 164, d)
+# define MSGPACK_PP_REPEAT_3_166(m, d) MSGPACK_PP_REPEAT_3_165(m, d) m(4, 165, d)
+# define MSGPACK_PP_REPEAT_3_167(m, d) MSGPACK_PP_REPEAT_3_166(m, d) m(4, 166, d)
+# define MSGPACK_PP_REPEAT_3_168(m, d) MSGPACK_PP_REPEAT_3_167(m, d) m(4, 167, d)
+# define MSGPACK_PP_REPEAT_3_169(m, d) MSGPACK_PP_REPEAT_3_168(m, d) m(4, 168, d)
+# define MSGPACK_PP_REPEAT_3_170(m, d) MSGPACK_PP_REPEAT_3_169(m, d) m(4, 169, d)
+# define MSGPACK_PP_REPEAT_3_171(m, d) MSGPACK_PP_REPEAT_3_170(m, d) m(4, 170, d)
+# define MSGPACK_PP_REPEAT_3_172(m, d) MSGPACK_PP_REPEAT_3_171(m, d) m(4, 171, d)
+# define MSGPACK_PP_REPEAT_3_173(m, d) MSGPACK_PP_REPEAT_3_172(m, d) m(4, 172, d)
+# define MSGPACK_PP_REPEAT_3_174(m, d) MSGPACK_PP_REPEAT_3_173(m, d) m(4, 173, d)
+# define MSGPACK_PP_REPEAT_3_175(m, d) MSGPACK_PP_REPEAT_3_174(m, d) m(4, 174, d)
+# define MSGPACK_PP_REPEAT_3_176(m, d) MSGPACK_PP_REPEAT_3_175(m, d) m(4, 175, d)
+# define MSGPACK_PP_REPEAT_3_177(m, d) MSGPACK_PP_REPEAT_3_176(m, d) m(4, 176, d)
+# define MSGPACK_PP_REPEAT_3_178(m, d) MSGPACK_PP_REPEAT_3_177(m, d) m(4, 177, d)
+# define MSGPACK_PP_REPEAT_3_179(m, d) MSGPACK_PP_REPEAT_3_178(m, d) m(4, 178, d)
+# define MSGPACK_PP_REPEAT_3_180(m, d) MSGPACK_PP_REPEAT_3_179(m, d) m(4, 179, d)
+# define MSGPACK_PP_REPEAT_3_181(m, d) MSGPACK_PP_REPEAT_3_180(m, d) m(4, 180, d)
+# define MSGPACK_PP_REPEAT_3_182(m, d) MSGPACK_PP_REPEAT_3_181(m, d) m(4, 181, d)
+# define MSGPACK_PP_REPEAT_3_183(m, d) MSGPACK_PP_REPEAT_3_182(m, d) m(4, 182, d)
+# define MSGPACK_PP_REPEAT_3_184(m, d) MSGPACK_PP_REPEAT_3_183(m, d) m(4, 183, d)
+# define MSGPACK_PP_REPEAT_3_185(m, d) MSGPACK_PP_REPEAT_3_184(m, d) m(4, 184, d)
+# define MSGPACK_PP_REPEAT_3_186(m, d) MSGPACK_PP_REPEAT_3_185(m, d) m(4, 185, d)
+# define MSGPACK_PP_REPEAT_3_187(m, d) MSGPACK_PP_REPEAT_3_186(m, d) m(4, 186, d)
+# define MSGPACK_PP_REPEAT_3_188(m, d) MSGPACK_PP_REPEAT_3_187(m, d) m(4, 187, d)
+# define MSGPACK_PP_REPEAT_3_189(m, d) MSGPACK_PP_REPEAT_3_188(m, d) m(4, 188, d)
+# define MSGPACK_PP_REPEAT_3_190(m, d) MSGPACK_PP_REPEAT_3_189(m, d) m(4, 189, d)
+# define MSGPACK_PP_REPEAT_3_191(m, d) MSGPACK_PP_REPEAT_3_190(m, d) m(4, 190, d)
+# define MSGPACK_PP_REPEAT_3_192(m, d) MSGPACK_PP_REPEAT_3_191(m, d) m(4, 191, d)
+# define MSGPACK_PP_REPEAT_3_193(m, d) MSGPACK_PP_REPEAT_3_192(m, d) m(4, 192, d)
+# define MSGPACK_PP_REPEAT_3_194(m, d) MSGPACK_PP_REPEAT_3_193(m, d) m(4, 193, d)
+# define MSGPACK_PP_REPEAT_3_195(m, d) MSGPACK_PP_REPEAT_3_194(m, d) m(4, 194, d)
+# define MSGPACK_PP_REPEAT_3_196(m, d) MSGPACK_PP_REPEAT_3_195(m, d) m(4, 195, d)
+# define MSGPACK_PP_REPEAT_3_197(m, d) MSGPACK_PP_REPEAT_3_196(m, d) m(4, 196, d)
+# define MSGPACK_PP_REPEAT_3_198(m, d) MSGPACK_PP_REPEAT_3_197(m, d) m(4, 197, d)
+# define MSGPACK_PP_REPEAT_3_199(m, d) MSGPACK_PP_REPEAT_3_198(m, d) m(4, 198, d)
+# define MSGPACK_PP_REPEAT_3_200(m, d) MSGPACK_PP_REPEAT_3_199(m, d) m(4, 199, d)
+# define MSGPACK_PP_REPEAT_3_201(m, d) MSGPACK_PP_REPEAT_3_200(m, d) m(4, 200, d)
+# define MSGPACK_PP_REPEAT_3_202(m, d) MSGPACK_PP_REPEAT_3_201(m, d) m(4, 201, d)
+# define MSGPACK_PP_REPEAT_3_203(m, d) MSGPACK_PP_REPEAT_3_202(m, d) m(4, 202, d)
+# define MSGPACK_PP_REPEAT_3_204(m, d) MSGPACK_PP_REPEAT_3_203(m, d) m(4, 203, d)
+# define MSGPACK_PP_REPEAT_3_205(m, d) MSGPACK_PP_REPEAT_3_204(m, d) m(4, 204, d)
+# define MSGPACK_PP_REPEAT_3_206(m, d) MSGPACK_PP_REPEAT_3_205(m, d) m(4, 205, d)
+# define MSGPACK_PP_REPEAT_3_207(m, d) MSGPACK_PP_REPEAT_3_206(m, d) m(4, 206, d)
+# define MSGPACK_PP_REPEAT_3_208(m, d) MSGPACK_PP_REPEAT_3_207(m, d) m(4, 207, d)
+# define MSGPACK_PP_REPEAT_3_209(m, d) MSGPACK_PP_REPEAT_3_208(m, d) m(4, 208, d)
+# define MSGPACK_PP_REPEAT_3_210(m, d) MSGPACK_PP_REPEAT_3_209(m, d) m(4, 209, d)
+# define MSGPACK_PP_REPEAT_3_211(m, d) MSGPACK_PP_REPEAT_3_210(m, d) m(4, 210, d)
+# define MSGPACK_PP_REPEAT_3_212(m, d) MSGPACK_PP_REPEAT_3_211(m, d) m(4, 211, d)
+# define MSGPACK_PP_REPEAT_3_213(m, d) MSGPACK_PP_REPEAT_3_212(m, d) m(4, 212, d)
+# define MSGPACK_PP_REPEAT_3_214(m, d) MSGPACK_PP_REPEAT_3_213(m, d) m(4, 213, d)
+# define MSGPACK_PP_REPEAT_3_215(m, d) MSGPACK_PP_REPEAT_3_214(m, d) m(4, 214, d)
+# define MSGPACK_PP_REPEAT_3_216(m, d) MSGPACK_PP_REPEAT_3_215(m, d) m(4, 215, d)
+# define MSGPACK_PP_REPEAT_3_217(m, d) MSGPACK_PP_REPEAT_3_216(m, d) m(4, 216, d)
+# define MSGPACK_PP_REPEAT_3_218(m, d) MSGPACK_PP_REPEAT_3_217(m, d) m(4, 217, d)
+# define MSGPACK_PP_REPEAT_3_219(m, d) MSGPACK_PP_REPEAT_3_218(m, d) m(4, 218, d)
+# define MSGPACK_PP_REPEAT_3_220(m, d) MSGPACK_PP_REPEAT_3_219(m, d) m(4, 219, d)
+# define MSGPACK_PP_REPEAT_3_221(m, d) MSGPACK_PP_REPEAT_3_220(m, d) m(4, 220, d)
+# define MSGPACK_PP_REPEAT_3_222(m, d) MSGPACK_PP_REPEAT_3_221(m, d) m(4, 221, d)
+# define MSGPACK_PP_REPEAT_3_223(m, d) MSGPACK_PP_REPEAT_3_222(m, d) m(4, 222, d)
+# define MSGPACK_PP_REPEAT_3_224(m, d) MSGPACK_PP_REPEAT_3_223(m, d) m(4, 223, d)
+# define MSGPACK_PP_REPEAT_3_225(m, d) MSGPACK_PP_REPEAT_3_224(m, d) m(4, 224, d)
+# define MSGPACK_PP_REPEAT_3_226(m, d) MSGPACK_PP_REPEAT_3_225(m, d) m(4, 225, d)
+# define MSGPACK_PP_REPEAT_3_227(m, d) MSGPACK_PP_REPEAT_3_226(m, d) m(4, 226, d)
+# define MSGPACK_PP_REPEAT_3_228(m, d) MSGPACK_PP_REPEAT_3_227(m, d) m(4, 227, d)
+# define MSGPACK_PP_REPEAT_3_229(m, d) MSGPACK_PP_REPEAT_3_228(m, d) m(4, 228, d)
+# define MSGPACK_PP_REPEAT_3_230(m, d) MSGPACK_PP_REPEAT_3_229(m, d) m(4, 229, d)
+# define MSGPACK_PP_REPEAT_3_231(m, d) MSGPACK_PP_REPEAT_3_230(m, d) m(4, 230, d)
+# define MSGPACK_PP_REPEAT_3_232(m, d) MSGPACK_PP_REPEAT_3_231(m, d) m(4, 231, d)
+# define MSGPACK_PP_REPEAT_3_233(m, d) MSGPACK_PP_REPEAT_3_232(m, d) m(4, 232, d)
+# define MSGPACK_PP_REPEAT_3_234(m, d) MSGPACK_PP_REPEAT_3_233(m, d) m(4, 233, d)
+# define MSGPACK_PP_REPEAT_3_235(m, d) MSGPACK_PP_REPEAT_3_234(m, d) m(4, 234, d)
+# define MSGPACK_PP_REPEAT_3_236(m, d) MSGPACK_PP_REPEAT_3_235(m, d) m(4, 235, d)
+# define MSGPACK_PP_REPEAT_3_237(m, d) MSGPACK_PP_REPEAT_3_236(m, d) m(4, 236, d)
+# define MSGPACK_PP_REPEAT_3_238(m, d) MSGPACK_PP_REPEAT_3_237(m, d) m(4, 237, d)
+# define MSGPACK_PP_REPEAT_3_239(m, d) MSGPACK_PP_REPEAT_3_238(m, d) m(4, 238, d)
+# define MSGPACK_PP_REPEAT_3_240(m, d) MSGPACK_PP_REPEAT_3_239(m, d) m(4, 239, d)
+# define MSGPACK_PP_REPEAT_3_241(m, d) MSGPACK_PP_REPEAT_3_240(m, d) m(4, 240, d)
+# define MSGPACK_PP_REPEAT_3_242(m, d) MSGPACK_PP_REPEAT_3_241(m, d) m(4, 241, d)
+# define MSGPACK_PP_REPEAT_3_243(m, d) MSGPACK_PP_REPEAT_3_242(m, d) m(4, 242, d)
+# define MSGPACK_PP_REPEAT_3_244(m, d) MSGPACK_PP_REPEAT_3_243(m, d) m(4, 243, d)
+# define MSGPACK_PP_REPEAT_3_245(m, d) MSGPACK_PP_REPEAT_3_244(m, d) m(4, 244, d)
+# define MSGPACK_PP_REPEAT_3_246(m, d) MSGPACK_PP_REPEAT_3_245(m, d) m(4, 245, d)
+# define MSGPACK_PP_REPEAT_3_247(m, d) MSGPACK_PP_REPEAT_3_246(m, d) m(4, 246, d)
+# define MSGPACK_PP_REPEAT_3_248(m, d) MSGPACK_PP_REPEAT_3_247(m, d) m(4, 247, d)
+# define MSGPACK_PP_REPEAT_3_249(m, d) MSGPACK_PP_REPEAT_3_248(m, d) m(4, 248, d)
+# define MSGPACK_PP_REPEAT_3_250(m, d) MSGPACK_PP_REPEAT_3_249(m, d) m(4, 249, d)
+# define MSGPACK_PP_REPEAT_3_251(m, d) MSGPACK_PP_REPEAT_3_250(m, d) m(4, 250, d)
+# define MSGPACK_PP_REPEAT_3_252(m, d) MSGPACK_PP_REPEAT_3_251(m, d) m(4, 251, d)
+# define MSGPACK_PP_REPEAT_3_253(m, d) MSGPACK_PP_REPEAT_3_252(m, d) m(4, 252, d)
+# define MSGPACK_PP_REPEAT_3_254(m, d) MSGPACK_PP_REPEAT_3_253(m, d) m(4, 253, d)
+# define MSGPACK_PP_REPEAT_3_255(m, d) MSGPACK_PP_REPEAT_3_254(m, d) m(4, 254, d)
+# define MSGPACK_PP_REPEAT_3_256(m, d) MSGPACK_PP_REPEAT_3_255(m, d) m(4, 255, d)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/repetition/repeat_from_to.hpp b/third_party/msgpack/include/msgpack/preprocessor/repetition/repeat_from_to.hpp
new file mode 100644
index 0000000000..2a9a19a03f
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/repetition/repeat_from_to.hpp
@@ -0,0 +1,87 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_REPETITION_REPEAT_FROM_TO_HPP
+# define MSGPACK_PREPROCESSOR_REPETITION_REPEAT_FROM_TO_HPP
+#
+# include <msgpack/preprocessor/arithmetic/add.hpp>
+# include <msgpack/preprocessor/arithmetic/sub.hpp>
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/control/while.hpp>
+# include <msgpack/preprocessor/debug/error.hpp>
+# include <msgpack/preprocessor/detail/auto_rec.hpp>
+# include <msgpack/preprocessor/repetition/repeat.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+# include <msgpack/preprocessor/tuple/rem.hpp>
+#
+# /* MSGPACK_PP_REPEAT_FROM_TO */
+#
+# if 0
+# define MSGPACK_PP_REPEAT_FROM_TO(first, last, macro, data)
+# endif
+#
+# define MSGPACK_PP_REPEAT_FROM_TO MSGPACK_PP_CAT(MSGPACK_PP_REPEAT_FROM_TO_, MSGPACK_PP_AUTO_REC(MSGPACK_PP_REPEAT_P, 4))
+#
+# define MSGPACK_PP_REPEAT_FROM_TO_1(f, l, m, dt) MSGPACK_PP_REPEAT_FROM_TO_D_1(MSGPACK_PP_AUTO_REC(MSGPACK_PP_WHILE_P, 256), f, l, m, dt)
+# define MSGPACK_PP_REPEAT_FROM_TO_2(f, l, m, dt) MSGPACK_PP_REPEAT_FROM_TO_D_2(MSGPACK_PP_AUTO_REC(MSGPACK_PP_WHILE_P, 256), f, l, m, dt)
+# define MSGPACK_PP_REPEAT_FROM_TO_3(f, l, m, dt) MSGPACK_PP_REPEAT_FROM_TO_D_3(MSGPACK_PP_AUTO_REC(MSGPACK_PP_WHILE_P, 256), f, l, m, dt)
+# define MSGPACK_PP_REPEAT_FROM_TO_4(f, l, m, dt) MSGPACK_PP_ERROR(0x0003)
+#
+# define MSGPACK_PP_REPEAT_FROM_TO_1ST MSGPACK_PP_REPEAT_FROM_TO_1
+# define MSGPACK_PP_REPEAT_FROM_TO_2ND MSGPACK_PP_REPEAT_FROM_TO_2
+# define MSGPACK_PP_REPEAT_FROM_TO_3RD MSGPACK_PP_REPEAT_FROM_TO_3
+#
+# /* MSGPACK_PP_REPEAT_FROM_TO_D */
+#
+# if 0
+# define MSGPACK_PP_REPEAT_FROM_TO_D(d, first, last, macro, data)
+# endif
+#
+# define MSGPACK_PP_REPEAT_FROM_TO_D MSGPACK_PP_CAT(MSGPACK_PP_REPEAT_FROM_TO_D_, MSGPACK_PP_AUTO_REC(MSGPACK_PP_REPEAT_P, 4))
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_REPEAT_FROM_TO_D_1(d, f, l, m, dt) MSGPACK_PP_REPEAT_1(MSGPACK_PP_SUB_D(d, l, f), MSGPACK_PP_REPEAT_FROM_TO_M_1, (d, f, m, dt))
+# define MSGPACK_PP_REPEAT_FROM_TO_D_2(d, f, l, m, dt) MSGPACK_PP_REPEAT_2(MSGPACK_PP_SUB_D(d, l, f), MSGPACK_PP_REPEAT_FROM_TO_M_2, (d, f, m, dt))
+# define MSGPACK_PP_REPEAT_FROM_TO_D_3(d, f, l, m, dt) MSGPACK_PP_REPEAT_3(MSGPACK_PP_SUB_D(d, l, f), MSGPACK_PP_REPEAT_FROM_TO_M_3, (d, f, m, dt))
+# else
+# define MSGPACK_PP_REPEAT_FROM_TO_D_1(d, f, l, m, dt) MSGPACK_PP_REPEAT_FROM_TO_D_1_I(d, f, l, m, dt)
+# define MSGPACK_PP_REPEAT_FROM_TO_D_2(d, f, l, m, dt) MSGPACK_PP_REPEAT_FROM_TO_D_2_I(d, f, l, m, dt)
+# define MSGPACK_PP_REPEAT_FROM_TO_D_3(d, f, l, m, dt) MSGPACK_PP_REPEAT_FROM_TO_D_3_I(d, f, l, m, dt)
+# define MSGPACK_PP_REPEAT_FROM_TO_D_1_I(d, f, l, m, dt) MSGPACK_PP_REPEAT_1(MSGPACK_PP_SUB_D(d, l, f), MSGPACK_PP_REPEAT_FROM_TO_M_1, (d, f, m, dt))
+# define MSGPACK_PP_REPEAT_FROM_TO_D_2_I(d, f, l, m, dt) MSGPACK_PP_REPEAT_2(MSGPACK_PP_SUB_D(d, l, f), MSGPACK_PP_REPEAT_FROM_TO_M_2, (d, f, m, dt))
+# define MSGPACK_PP_REPEAT_FROM_TO_D_3_I(d, f, l, m, dt) MSGPACK_PP_REPEAT_3(MSGPACK_PP_SUB_D(d, l, f), MSGPACK_PP_REPEAT_FROM_TO_M_3, (d, f, m, dt))
+# endif
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_STRICT()
+# define MSGPACK_PP_REPEAT_FROM_TO_M_1(z, n, dfmd) MSGPACK_PP_REPEAT_FROM_TO_M_1_IM(z, n, MSGPACK_PP_TUPLE_REM_4 dfmd)
+# define MSGPACK_PP_REPEAT_FROM_TO_M_2(z, n, dfmd) MSGPACK_PP_REPEAT_FROM_TO_M_2_IM(z, n, MSGPACK_PP_TUPLE_REM_4 dfmd)
+# define MSGPACK_PP_REPEAT_FROM_TO_M_3(z, n, dfmd) MSGPACK_PP_REPEAT_FROM_TO_M_3_IM(z, n, MSGPACK_PP_TUPLE_REM_4 dfmd)
+# define MSGPACK_PP_REPEAT_FROM_TO_M_1_IM(z, n, im) MSGPACK_PP_REPEAT_FROM_TO_M_1_I(z, n, im)
+# define MSGPACK_PP_REPEAT_FROM_TO_M_2_IM(z, n, im) MSGPACK_PP_REPEAT_FROM_TO_M_2_I(z, n, im)
+# define MSGPACK_PP_REPEAT_FROM_TO_M_3_IM(z, n, im) MSGPACK_PP_REPEAT_FROM_TO_M_3_I(z, n, im)
+# else
+# define MSGPACK_PP_REPEAT_FROM_TO_M_1(z, n, dfmd) MSGPACK_PP_REPEAT_FROM_TO_M_1_I(z, n, MSGPACK_PP_TUPLE_ELEM(4, 0, dfmd), MSGPACK_PP_TUPLE_ELEM(4, 1, dfmd), MSGPACK_PP_TUPLE_ELEM(4, 2, dfmd), MSGPACK_PP_TUPLE_ELEM(4, 3, dfmd))
+# define MSGPACK_PP_REPEAT_FROM_TO_M_2(z, n, dfmd) MSGPACK_PP_REPEAT_FROM_TO_M_2_I(z, n, MSGPACK_PP_TUPLE_ELEM(4, 0, dfmd), MSGPACK_PP_TUPLE_ELEM(4, 1, dfmd), MSGPACK_PP_TUPLE_ELEM(4, 2, dfmd), MSGPACK_PP_TUPLE_ELEM(4, 3, dfmd))
+# define MSGPACK_PP_REPEAT_FROM_TO_M_3(z, n, dfmd) MSGPACK_PP_REPEAT_FROM_TO_M_3_I(z, n, MSGPACK_PP_TUPLE_ELEM(4, 0, dfmd), MSGPACK_PP_TUPLE_ELEM(4, 1, dfmd), MSGPACK_PP_TUPLE_ELEM(4, 2, dfmd), MSGPACK_PP_TUPLE_ELEM(4, 3, dfmd))
+# endif
+#
+# define MSGPACK_PP_REPEAT_FROM_TO_M_1_I(z, n, d, f, m, dt) MSGPACK_PP_REPEAT_FROM_TO_M_1_II(z, MSGPACK_PP_ADD_D(d, n, f), m, dt)
+# define MSGPACK_PP_REPEAT_FROM_TO_M_2_I(z, n, d, f, m, dt) MSGPACK_PP_REPEAT_FROM_TO_M_2_II(z, MSGPACK_PP_ADD_D(d, n, f), m, dt)
+# define MSGPACK_PP_REPEAT_FROM_TO_M_3_I(z, n, d, f, m, dt) MSGPACK_PP_REPEAT_FROM_TO_M_3_II(z, MSGPACK_PP_ADD_D(d, n, f), m, dt)
+#
+# define MSGPACK_PP_REPEAT_FROM_TO_M_1_II(z, n, m, dt) m(z, n, dt)
+# define MSGPACK_PP_REPEAT_FROM_TO_M_2_II(z, n, m, dt) m(z, n, dt)
+# define MSGPACK_PP_REPEAT_FROM_TO_M_3_II(z, n, m, dt) m(z, n, dt)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/selection.hpp b/third_party/msgpack/include/msgpack/preprocessor/selection.hpp
new file mode 100644
index 0000000000..e4eec6b130
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/selection.hpp
@@ -0,0 +1,18 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SELECTION_HPP
+# define MSGPACK_PREPROCESSOR_SELECTION_HPP
+#
+# include <msgpack/preprocessor/selection/max.hpp>
+# include <msgpack/preprocessor/selection/min.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/selection/max.hpp b/third_party/msgpack/include/msgpack/preprocessor/selection/max.hpp
new file mode 100644
index 0000000000..fe45b036ef
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/selection/max.hpp
@@ -0,0 +1,39 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SELECTION_MAX_HPP
+# define MSGPACK_PREPROCESSOR_SELECTION_MAX_HPP
+#
+# include <msgpack/preprocessor/comparison/less_equal.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/control/iif.hpp>
+#
+# /* MSGPACK_PP_MAX */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_MAX(x, y) MSGPACK_PP_IIF(MSGPACK_PP_LESS_EQUAL(x, y), y, x)
+# else
+# define MSGPACK_PP_MAX(x, y) MSGPACK_PP_MAX_I(x, y)
+# define MSGPACK_PP_MAX_I(x, y) MSGPACK_PP_IIF(MSGPACK_PP_LESS_EQUAL(x, y), y, x)
+# endif
+#
+# /* MSGPACK_PP_MAX_D */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_MAX_D(d, x, y) MSGPACK_PP_IIF(MSGPACK_PP_LESS_EQUAL_D(d, x, y), y, x)
+# else
+# define MSGPACK_PP_MAX_D(d, x, y) MSGPACK_PP_MAX_D_I(d, x, y)
+# define MSGPACK_PP_MAX_D_I(d, x, y) MSGPACK_PP_IIF(MSGPACK_PP_LESS_EQUAL_D(d, x, y), y, x)
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/selection/min.hpp b/third_party/msgpack/include/msgpack/preprocessor/selection/min.hpp
new file mode 100644
index 0000000000..f85e49feeb
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/selection/min.hpp
@@ -0,0 +1,39 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SELECTION_MIN_HPP
+# define MSGPACK_PREPROCESSOR_SELECTION_MIN_HPP
+#
+# include <msgpack/preprocessor/comparison/less_equal.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/control/iif.hpp>
+#
+# /* MSGPACK_PP_MIN */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_MIN(x, y) MSGPACK_PP_IIF(MSGPACK_PP_LESS_EQUAL(y, x), y, x)
+# else
+# define MSGPACK_PP_MIN(x, y) MSGPACK_PP_MIN_I(x, y)
+# define MSGPACK_PP_MIN_I(x, y) MSGPACK_PP_IIF(MSGPACK_PP_LESS_EQUAL(y, x), y, x)
+# endif
+#
+# /* MSGPACK_PP_MIN_D */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_MIN_D(d, x, y) MSGPACK_PP_IIF(MSGPACK_PP_LESS_EQUAL_D(d, y, x), y, x)
+# else
+# define MSGPACK_PP_MIN_D(d, x, y) MSGPACK_PP_MIN_D_I(d, x, y)
+# define MSGPACK_PP_MIN_D_I(d, x, y) MSGPACK_PP_IIF(MSGPACK_PP_LESS_EQUAL_D(d, y, x), y, x)
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/seq.hpp b/third_party/msgpack/include/msgpack/preprocessor/seq.hpp
new file mode 100644
index 0000000000..252e9f9b7a
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/seq.hpp
@@ -0,0 +1,44 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002-2011. *
+# * (C) Copyright Edward Diener 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SEQ_HPP
+# define MSGPACK_PREPROCESSOR_SEQ_HPP
+#
+# include <msgpack/preprocessor/seq/cat.hpp>
+# include <msgpack/preprocessor/seq/elem.hpp>
+# include <msgpack/preprocessor/seq/enum.hpp>
+# include <msgpack/preprocessor/seq/filter.hpp>
+# include <msgpack/preprocessor/seq/first_n.hpp>
+# include <msgpack/preprocessor/seq/fold_left.hpp>
+# include <msgpack/preprocessor/seq/fold_right.hpp>
+# include <msgpack/preprocessor/seq/for_each.hpp>
+# include <msgpack/preprocessor/seq/for_each_i.hpp>
+# include <msgpack/preprocessor/seq/for_each_product.hpp>
+# include <msgpack/preprocessor/seq/insert.hpp>
+# include <msgpack/preprocessor/seq/pop_back.hpp>
+# include <msgpack/preprocessor/seq/pop_front.hpp>
+# include <msgpack/preprocessor/seq/push_back.hpp>
+# include <msgpack/preprocessor/seq/push_front.hpp>
+# include <msgpack/preprocessor/seq/remove.hpp>
+# include <msgpack/preprocessor/seq/replace.hpp>
+# include <msgpack/preprocessor/seq/rest_n.hpp>
+# include <msgpack/preprocessor/seq/reverse.hpp>
+# include <msgpack/preprocessor/seq/seq.hpp>
+# include <msgpack/preprocessor/seq/size.hpp>
+# include <msgpack/preprocessor/seq/subseq.hpp>
+# include <msgpack/preprocessor/seq/to_array.hpp>
+# include <msgpack/preprocessor/seq/to_list.hpp>
+# include <msgpack/preprocessor/seq/to_tuple.hpp>
+# include <msgpack/preprocessor/seq/transform.hpp>
+# include <msgpack/preprocessor/seq/variadic_seq_to_seq.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/seq/cat.hpp b/third_party/msgpack/include/msgpack/preprocessor/seq/cat.hpp
new file mode 100644
index 0000000000..e4fc1ec84f
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/seq/cat.hpp
@@ -0,0 +1,49 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SEQ_CAT_HPP
+# define MSGPACK_PREPROCESSOR_SEQ_CAT_HPP
+#
+# include <msgpack/preprocessor/arithmetic/dec.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/control/if.hpp>
+# include <msgpack/preprocessor/seq/fold_left.hpp>
+# include <msgpack/preprocessor/seq/seq.hpp>
+# include <msgpack/preprocessor/seq/size.hpp>
+# include <msgpack/preprocessor/tuple/eat.hpp>
+#
+# /* MSGPACK_PP_SEQ_CAT */
+#
+# define MSGPACK_PP_SEQ_CAT(seq) \
+ MSGPACK_PP_IF( \
+ MSGPACK_PP_DEC(MSGPACK_PP_SEQ_SIZE(seq)), \
+ MSGPACK_PP_SEQ_CAT_I, \
+ MSGPACK_PP_SEQ_HEAD \
+ )(seq) \
+ /**/
+# define MSGPACK_PP_SEQ_CAT_I(seq) MSGPACK_PP_SEQ_FOLD_LEFT(MSGPACK_PP_SEQ_CAT_O, MSGPACK_PP_SEQ_HEAD(seq), MSGPACK_PP_SEQ_TAIL(seq))
+#
+# define MSGPACK_PP_SEQ_CAT_O(s, st, elem) MSGPACK_PP_SEQ_CAT_O_I(st, elem)
+# define MSGPACK_PP_SEQ_CAT_O_I(a, b) a ## b
+#
+# /* MSGPACK_PP_SEQ_CAT_S */
+#
+# define MSGPACK_PP_SEQ_CAT_S(s, seq) \
+ MSGPACK_PP_IF( \
+ MSGPACK_PP_DEC(MSGPACK_PP_SEQ_SIZE(seq)), \
+ MSGPACK_PP_SEQ_CAT_S_I_A, \
+ MSGPACK_PP_SEQ_CAT_S_I_B \
+ )(s, seq) \
+ /**/
+# define MSGPACK_PP_SEQ_CAT_S_I_A(s, seq) MSGPACK_PP_SEQ_FOLD_LEFT_ ## s(MSGPACK_PP_SEQ_CAT_O, MSGPACK_PP_SEQ_HEAD(seq), MSGPACK_PP_SEQ_TAIL(seq))
+# define MSGPACK_PP_SEQ_CAT_S_I_B(s, seq) MSGPACK_PP_SEQ_HEAD(seq)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/seq/detail/binary_transform.hpp b/third_party/msgpack/include/msgpack/preprocessor/seq/detail/binary_transform.hpp
new file mode 100644
index 0000000000..cc4e6fd7c9
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/seq/detail/binary_transform.hpp
@@ -0,0 +1,48 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SEQ_DETAIL_BINARY_TRANSFORM_HPP
+# define MSGPACK_PREPROCESSOR_SEQ_DETAIL_BINARY_TRANSFORM_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/tuple/eat.hpp>
+# include <msgpack/preprocessor/tuple/rem.hpp>
+# include <msgpack/preprocessor/variadic/detail/is_single_return.hpp>
+#
+# /* MSGPACK_PP_SEQ_BINARY_TRANSFORM */
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MSVC()
+# define MSGPACK_PP_SEQ_BINARY_TRANSFORM(seq) MSGPACK_PP_SEQ_BINARY_TRANSFORM_I(, seq)
+# define MSGPACK_PP_SEQ_BINARY_TRANSFORM_I(p, seq) MSGPACK_PP_SEQ_BINARY_TRANSFORM_II(p ## seq)
+# define MSGPACK_PP_SEQ_BINARY_TRANSFORM_II(seq) MSGPACK_PP_SEQ_BINARY_TRANSFORM_III(seq)
+# define MSGPACK_PP_SEQ_BINARY_TRANSFORM_III(seq) MSGPACK_PP_CAT(MSGPACK_PP_SEQ_BINARY_TRANSFORM_A seq, 0)
+# else
+# define MSGPACK_PP_SEQ_BINARY_TRANSFORM(seq) MSGPACK_PP_CAT(MSGPACK_PP_SEQ_BINARY_TRANSFORM_A seq, 0)
+# endif
+# if MSGPACK_PP_VARIADICS
+# if MSGPACK_PP_VARIADICS_MSVC
+# define MSGPACK_PP_SEQ_BINARY_TRANSFORM_GET_REM(...) \
+ MSGPACK_PP_VARIADIC_IS_SINGLE_RETURN(MSGPACK_PP_REM_CAT,MSGPACK_PP_REM,__VA_ARGS__) \
+ /**/
+# else
+# define MSGPACK_PP_SEQ_BINARY_TRANSFORM_GET_REM(...) MSGPACK_PP_REM
+# endif
+# define MSGPACK_PP_SEQ_BINARY_TRANSFORM_A(...) (MSGPACK_PP_SEQ_BINARY_TRANSFORM_GET_REM(__VA_ARGS__), __VA_ARGS__)() MSGPACK_PP_SEQ_BINARY_TRANSFORM_B
+# define MSGPACK_PP_SEQ_BINARY_TRANSFORM_B(...) (MSGPACK_PP_SEQ_BINARY_TRANSFORM_GET_REM(__VA_ARGS__), __VA_ARGS__)() MSGPACK_PP_SEQ_BINARY_TRANSFORM_A
+# else
+# define MSGPACK_PP_SEQ_BINARY_TRANSFORM_A(e) (MSGPACK_PP_REM, e)() MSGPACK_PP_SEQ_BINARY_TRANSFORM_B
+# define MSGPACK_PP_SEQ_BINARY_TRANSFORM_B(e) (MSGPACK_PP_REM, e)() MSGPACK_PP_SEQ_BINARY_TRANSFORM_A
+# endif
+# define MSGPACK_PP_SEQ_BINARY_TRANSFORM_A0 (MSGPACK_PP_EAT, ?)
+# define MSGPACK_PP_SEQ_BINARY_TRANSFORM_B0 (MSGPACK_PP_EAT, ?)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/seq/detail/is_empty.hpp b/third_party/msgpack/include/msgpack/preprocessor/seq/detail/is_empty.hpp
new file mode 100644
index 0000000000..b897a04c5c
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/seq/detail/is_empty.hpp
@@ -0,0 +1,49 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2015.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SEQ_DETAIL_IS_EMPTY_HPP
+# define MSGPACK_PREPROCESSOR_SEQ_DETAIL_IS_EMPTY_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/arithmetic/dec.hpp>
+# include <msgpack/preprocessor/logical/bool.hpp>
+# include <msgpack/preprocessor/logical/compl.hpp>
+# include <msgpack/preprocessor/seq/size.hpp>
+#
+/* An empty seq is one that is just MSGPACK_PP_SEQ_NIL */
+#
+# define MSGPACK_PP_SEQ_DETAIL_IS_EMPTY(seq) \
+ MSGPACK_PP_COMPL \
+ ( \
+ MSGPACK_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq) \
+ ) \
+/**/
+#
+# define MSGPACK_PP_SEQ_DETAIL_IS_EMPTY_SIZE(size) \
+ MSGPACK_PP_COMPL \
+ ( \
+ MSGPACK_PP_SEQ_DETAIL_IS_NOT_EMPTY_SIZE(size) \
+ ) \
+/**/
+#
+# define MSGPACK_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq) \
+ MSGPACK_PP_SEQ_DETAIL_IS_NOT_EMPTY_SIZE(MSGPACK_PP_SEQ_DETAIL_EMPTY_SIZE(seq)) \
+/**/
+#
+# define MSGPACK_PP_SEQ_DETAIL_IS_NOT_EMPTY_SIZE(size) \
+ MSGPACK_PP_BOOL(size) \
+/**/
+#
+# define MSGPACK_PP_SEQ_DETAIL_EMPTY_SIZE(seq) \
+ MSGPACK_PP_DEC(MSGPACK_PP_SEQ_SIZE(seq (nil))) \
+/**/
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/seq/detail/split.hpp b/third_party/msgpack/include/msgpack/preprocessor/seq/detail/split.hpp
new file mode 100644
index 0000000000..b2f25753fc
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/seq/detail/split.hpp
@@ -0,0 +1,284 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SEQ_DETAIL_SPLIT_HPP
+# define MSGPACK_PREPROCESSOR_SEQ_DETAIL_SPLIT_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# /* MSGPACK_PP_SEQ_SPLIT */
+#
+# define MSGPACK_PP_SEQ_SPLIT(n, seq) MSGPACK_PP_SEQ_SPLIT_D(n, seq)
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_SEQ_SPLIT_D(n, seq) (MSGPACK_PP_SEQ_SPLIT_ ## n seq)
+# else
+# define MSGPACK_PP_SEQ_SPLIT_D(n, seq) (MSGPACK_PP_SEQ_SPLIT_ ## n ## seq)
+# endif
+#
+# define MSGPACK_PP_SEQ_SPLIT_1(x) (x),
+# define MSGPACK_PP_SEQ_SPLIT_2(x) (x) MSGPACK_PP_SEQ_SPLIT_1
+# define MSGPACK_PP_SEQ_SPLIT_3(x) (x) MSGPACK_PP_SEQ_SPLIT_2
+# define MSGPACK_PP_SEQ_SPLIT_4(x) (x) MSGPACK_PP_SEQ_SPLIT_3
+# define MSGPACK_PP_SEQ_SPLIT_5(x) (x) MSGPACK_PP_SEQ_SPLIT_4
+# define MSGPACK_PP_SEQ_SPLIT_6(x) (x) MSGPACK_PP_SEQ_SPLIT_5
+# define MSGPACK_PP_SEQ_SPLIT_7(x) (x) MSGPACK_PP_SEQ_SPLIT_6
+# define MSGPACK_PP_SEQ_SPLIT_8(x) (x) MSGPACK_PP_SEQ_SPLIT_7
+# define MSGPACK_PP_SEQ_SPLIT_9(x) (x) MSGPACK_PP_SEQ_SPLIT_8
+# define MSGPACK_PP_SEQ_SPLIT_10(x) (x) MSGPACK_PP_SEQ_SPLIT_9
+# define MSGPACK_PP_SEQ_SPLIT_11(x) (x) MSGPACK_PP_SEQ_SPLIT_10
+# define MSGPACK_PP_SEQ_SPLIT_12(x) (x) MSGPACK_PP_SEQ_SPLIT_11
+# define MSGPACK_PP_SEQ_SPLIT_13(x) (x) MSGPACK_PP_SEQ_SPLIT_12
+# define MSGPACK_PP_SEQ_SPLIT_14(x) (x) MSGPACK_PP_SEQ_SPLIT_13
+# define MSGPACK_PP_SEQ_SPLIT_15(x) (x) MSGPACK_PP_SEQ_SPLIT_14
+# define MSGPACK_PP_SEQ_SPLIT_16(x) (x) MSGPACK_PP_SEQ_SPLIT_15
+# define MSGPACK_PP_SEQ_SPLIT_17(x) (x) MSGPACK_PP_SEQ_SPLIT_16
+# define MSGPACK_PP_SEQ_SPLIT_18(x) (x) MSGPACK_PP_SEQ_SPLIT_17
+# define MSGPACK_PP_SEQ_SPLIT_19(x) (x) MSGPACK_PP_SEQ_SPLIT_18
+# define MSGPACK_PP_SEQ_SPLIT_20(x) (x) MSGPACK_PP_SEQ_SPLIT_19
+# define MSGPACK_PP_SEQ_SPLIT_21(x) (x) MSGPACK_PP_SEQ_SPLIT_20
+# define MSGPACK_PP_SEQ_SPLIT_22(x) (x) MSGPACK_PP_SEQ_SPLIT_21
+# define MSGPACK_PP_SEQ_SPLIT_23(x) (x) MSGPACK_PP_SEQ_SPLIT_22
+# define MSGPACK_PP_SEQ_SPLIT_24(x) (x) MSGPACK_PP_SEQ_SPLIT_23
+# define MSGPACK_PP_SEQ_SPLIT_25(x) (x) MSGPACK_PP_SEQ_SPLIT_24
+# define MSGPACK_PP_SEQ_SPLIT_26(x) (x) MSGPACK_PP_SEQ_SPLIT_25
+# define MSGPACK_PP_SEQ_SPLIT_27(x) (x) MSGPACK_PP_SEQ_SPLIT_26
+# define MSGPACK_PP_SEQ_SPLIT_28(x) (x) MSGPACK_PP_SEQ_SPLIT_27
+# define MSGPACK_PP_SEQ_SPLIT_29(x) (x) MSGPACK_PP_SEQ_SPLIT_28
+# define MSGPACK_PP_SEQ_SPLIT_30(x) (x) MSGPACK_PP_SEQ_SPLIT_29
+# define MSGPACK_PP_SEQ_SPLIT_31(x) (x) MSGPACK_PP_SEQ_SPLIT_30
+# define MSGPACK_PP_SEQ_SPLIT_32(x) (x) MSGPACK_PP_SEQ_SPLIT_31
+# define MSGPACK_PP_SEQ_SPLIT_33(x) (x) MSGPACK_PP_SEQ_SPLIT_32
+# define MSGPACK_PP_SEQ_SPLIT_34(x) (x) MSGPACK_PP_SEQ_SPLIT_33
+# define MSGPACK_PP_SEQ_SPLIT_35(x) (x) MSGPACK_PP_SEQ_SPLIT_34
+# define MSGPACK_PP_SEQ_SPLIT_36(x) (x) MSGPACK_PP_SEQ_SPLIT_35
+# define MSGPACK_PP_SEQ_SPLIT_37(x) (x) MSGPACK_PP_SEQ_SPLIT_36
+# define MSGPACK_PP_SEQ_SPLIT_38(x) (x) MSGPACK_PP_SEQ_SPLIT_37
+# define MSGPACK_PP_SEQ_SPLIT_39(x) (x) MSGPACK_PP_SEQ_SPLIT_38
+# define MSGPACK_PP_SEQ_SPLIT_40(x) (x) MSGPACK_PP_SEQ_SPLIT_39
+# define MSGPACK_PP_SEQ_SPLIT_41(x) (x) MSGPACK_PP_SEQ_SPLIT_40
+# define MSGPACK_PP_SEQ_SPLIT_42(x) (x) MSGPACK_PP_SEQ_SPLIT_41
+# define MSGPACK_PP_SEQ_SPLIT_43(x) (x) MSGPACK_PP_SEQ_SPLIT_42
+# define MSGPACK_PP_SEQ_SPLIT_44(x) (x) MSGPACK_PP_SEQ_SPLIT_43
+# define MSGPACK_PP_SEQ_SPLIT_45(x) (x) MSGPACK_PP_SEQ_SPLIT_44
+# define MSGPACK_PP_SEQ_SPLIT_46(x) (x) MSGPACK_PP_SEQ_SPLIT_45
+# define MSGPACK_PP_SEQ_SPLIT_47(x) (x) MSGPACK_PP_SEQ_SPLIT_46
+# define MSGPACK_PP_SEQ_SPLIT_48(x) (x) MSGPACK_PP_SEQ_SPLIT_47
+# define MSGPACK_PP_SEQ_SPLIT_49(x) (x) MSGPACK_PP_SEQ_SPLIT_48
+# define MSGPACK_PP_SEQ_SPLIT_50(x) (x) MSGPACK_PP_SEQ_SPLIT_49
+# define MSGPACK_PP_SEQ_SPLIT_51(x) (x) MSGPACK_PP_SEQ_SPLIT_50
+# define MSGPACK_PP_SEQ_SPLIT_52(x) (x) MSGPACK_PP_SEQ_SPLIT_51
+# define MSGPACK_PP_SEQ_SPLIT_53(x) (x) MSGPACK_PP_SEQ_SPLIT_52
+# define MSGPACK_PP_SEQ_SPLIT_54(x) (x) MSGPACK_PP_SEQ_SPLIT_53
+# define MSGPACK_PP_SEQ_SPLIT_55(x) (x) MSGPACK_PP_SEQ_SPLIT_54
+# define MSGPACK_PP_SEQ_SPLIT_56(x) (x) MSGPACK_PP_SEQ_SPLIT_55
+# define MSGPACK_PP_SEQ_SPLIT_57(x) (x) MSGPACK_PP_SEQ_SPLIT_56
+# define MSGPACK_PP_SEQ_SPLIT_58(x) (x) MSGPACK_PP_SEQ_SPLIT_57
+# define MSGPACK_PP_SEQ_SPLIT_59(x) (x) MSGPACK_PP_SEQ_SPLIT_58
+# define MSGPACK_PP_SEQ_SPLIT_60(x) (x) MSGPACK_PP_SEQ_SPLIT_59
+# define MSGPACK_PP_SEQ_SPLIT_61(x) (x) MSGPACK_PP_SEQ_SPLIT_60
+# define MSGPACK_PP_SEQ_SPLIT_62(x) (x) MSGPACK_PP_SEQ_SPLIT_61
+# define MSGPACK_PP_SEQ_SPLIT_63(x) (x) MSGPACK_PP_SEQ_SPLIT_62
+# define MSGPACK_PP_SEQ_SPLIT_64(x) (x) MSGPACK_PP_SEQ_SPLIT_63
+# define MSGPACK_PP_SEQ_SPLIT_65(x) (x) MSGPACK_PP_SEQ_SPLIT_64
+# define MSGPACK_PP_SEQ_SPLIT_66(x) (x) MSGPACK_PP_SEQ_SPLIT_65
+# define MSGPACK_PP_SEQ_SPLIT_67(x) (x) MSGPACK_PP_SEQ_SPLIT_66
+# define MSGPACK_PP_SEQ_SPLIT_68(x) (x) MSGPACK_PP_SEQ_SPLIT_67
+# define MSGPACK_PP_SEQ_SPLIT_69(x) (x) MSGPACK_PP_SEQ_SPLIT_68
+# define MSGPACK_PP_SEQ_SPLIT_70(x) (x) MSGPACK_PP_SEQ_SPLIT_69
+# define MSGPACK_PP_SEQ_SPLIT_71(x) (x) MSGPACK_PP_SEQ_SPLIT_70
+# define MSGPACK_PP_SEQ_SPLIT_72(x) (x) MSGPACK_PP_SEQ_SPLIT_71
+# define MSGPACK_PP_SEQ_SPLIT_73(x) (x) MSGPACK_PP_SEQ_SPLIT_72
+# define MSGPACK_PP_SEQ_SPLIT_74(x) (x) MSGPACK_PP_SEQ_SPLIT_73
+# define MSGPACK_PP_SEQ_SPLIT_75(x) (x) MSGPACK_PP_SEQ_SPLIT_74
+# define MSGPACK_PP_SEQ_SPLIT_76(x) (x) MSGPACK_PP_SEQ_SPLIT_75
+# define MSGPACK_PP_SEQ_SPLIT_77(x) (x) MSGPACK_PP_SEQ_SPLIT_76
+# define MSGPACK_PP_SEQ_SPLIT_78(x) (x) MSGPACK_PP_SEQ_SPLIT_77
+# define MSGPACK_PP_SEQ_SPLIT_79(x) (x) MSGPACK_PP_SEQ_SPLIT_78
+# define MSGPACK_PP_SEQ_SPLIT_80(x) (x) MSGPACK_PP_SEQ_SPLIT_79
+# define MSGPACK_PP_SEQ_SPLIT_81(x) (x) MSGPACK_PP_SEQ_SPLIT_80
+# define MSGPACK_PP_SEQ_SPLIT_82(x) (x) MSGPACK_PP_SEQ_SPLIT_81
+# define MSGPACK_PP_SEQ_SPLIT_83(x) (x) MSGPACK_PP_SEQ_SPLIT_82
+# define MSGPACK_PP_SEQ_SPLIT_84(x) (x) MSGPACK_PP_SEQ_SPLIT_83
+# define MSGPACK_PP_SEQ_SPLIT_85(x) (x) MSGPACK_PP_SEQ_SPLIT_84
+# define MSGPACK_PP_SEQ_SPLIT_86(x) (x) MSGPACK_PP_SEQ_SPLIT_85
+# define MSGPACK_PP_SEQ_SPLIT_87(x) (x) MSGPACK_PP_SEQ_SPLIT_86
+# define MSGPACK_PP_SEQ_SPLIT_88(x) (x) MSGPACK_PP_SEQ_SPLIT_87
+# define MSGPACK_PP_SEQ_SPLIT_89(x) (x) MSGPACK_PP_SEQ_SPLIT_88
+# define MSGPACK_PP_SEQ_SPLIT_90(x) (x) MSGPACK_PP_SEQ_SPLIT_89
+# define MSGPACK_PP_SEQ_SPLIT_91(x) (x) MSGPACK_PP_SEQ_SPLIT_90
+# define MSGPACK_PP_SEQ_SPLIT_92(x) (x) MSGPACK_PP_SEQ_SPLIT_91
+# define MSGPACK_PP_SEQ_SPLIT_93(x) (x) MSGPACK_PP_SEQ_SPLIT_92
+# define MSGPACK_PP_SEQ_SPLIT_94(x) (x) MSGPACK_PP_SEQ_SPLIT_93
+# define MSGPACK_PP_SEQ_SPLIT_95(x) (x) MSGPACK_PP_SEQ_SPLIT_94
+# define MSGPACK_PP_SEQ_SPLIT_96(x) (x) MSGPACK_PP_SEQ_SPLIT_95
+# define MSGPACK_PP_SEQ_SPLIT_97(x) (x) MSGPACK_PP_SEQ_SPLIT_96
+# define MSGPACK_PP_SEQ_SPLIT_98(x) (x) MSGPACK_PP_SEQ_SPLIT_97
+# define MSGPACK_PP_SEQ_SPLIT_99(x) (x) MSGPACK_PP_SEQ_SPLIT_98
+# define MSGPACK_PP_SEQ_SPLIT_100(x) (x) MSGPACK_PP_SEQ_SPLIT_99
+# define MSGPACK_PP_SEQ_SPLIT_101(x) (x) MSGPACK_PP_SEQ_SPLIT_100
+# define MSGPACK_PP_SEQ_SPLIT_102(x) (x) MSGPACK_PP_SEQ_SPLIT_101
+# define MSGPACK_PP_SEQ_SPLIT_103(x) (x) MSGPACK_PP_SEQ_SPLIT_102
+# define MSGPACK_PP_SEQ_SPLIT_104(x) (x) MSGPACK_PP_SEQ_SPLIT_103
+# define MSGPACK_PP_SEQ_SPLIT_105(x) (x) MSGPACK_PP_SEQ_SPLIT_104
+# define MSGPACK_PP_SEQ_SPLIT_106(x) (x) MSGPACK_PP_SEQ_SPLIT_105
+# define MSGPACK_PP_SEQ_SPLIT_107(x) (x) MSGPACK_PP_SEQ_SPLIT_106
+# define MSGPACK_PP_SEQ_SPLIT_108(x) (x) MSGPACK_PP_SEQ_SPLIT_107
+# define MSGPACK_PP_SEQ_SPLIT_109(x) (x) MSGPACK_PP_SEQ_SPLIT_108
+# define MSGPACK_PP_SEQ_SPLIT_110(x) (x) MSGPACK_PP_SEQ_SPLIT_109
+# define MSGPACK_PP_SEQ_SPLIT_111(x) (x) MSGPACK_PP_SEQ_SPLIT_110
+# define MSGPACK_PP_SEQ_SPLIT_112(x) (x) MSGPACK_PP_SEQ_SPLIT_111
+# define MSGPACK_PP_SEQ_SPLIT_113(x) (x) MSGPACK_PP_SEQ_SPLIT_112
+# define MSGPACK_PP_SEQ_SPLIT_114(x) (x) MSGPACK_PP_SEQ_SPLIT_113
+# define MSGPACK_PP_SEQ_SPLIT_115(x) (x) MSGPACK_PP_SEQ_SPLIT_114
+# define MSGPACK_PP_SEQ_SPLIT_116(x) (x) MSGPACK_PP_SEQ_SPLIT_115
+# define MSGPACK_PP_SEQ_SPLIT_117(x) (x) MSGPACK_PP_SEQ_SPLIT_116
+# define MSGPACK_PP_SEQ_SPLIT_118(x) (x) MSGPACK_PP_SEQ_SPLIT_117
+# define MSGPACK_PP_SEQ_SPLIT_119(x) (x) MSGPACK_PP_SEQ_SPLIT_118
+# define MSGPACK_PP_SEQ_SPLIT_120(x) (x) MSGPACK_PP_SEQ_SPLIT_119
+# define MSGPACK_PP_SEQ_SPLIT_121(x) (x) MSGPACK_PP_SEQ_SPLIT_120
+# define MSGPACK_PP_SEQ_SPLIT_122(x) (x) MSGPACK_PP_SEQ_SPLIT_121
+# define MSGPACK_PP_SEQ_SPLIT_123(x) (x) MSGPACK_PP_SEQ_SPLIT_122
+# define MSGPACK_PP_SEQ_SPLIT_124(x) (x) MSGPACK_PP_SEQ_SPLIT_123
+# define MSGPACK_PP_SEQ_SPLIT_125(x) (x) MSGPACK_PP_SEQ_SPLIT_124
+# define MSGPACK_PP_SEQ_SPLIT_126(x) (x) MSGPACK_PP_SEQ_SPLIT_125
+# define MSGPACK_PP_SEQ_SPLIT_127(x) (x) MSGPACK_PP_SEQ_SPLIT_126
+# define MSGPACK_PP_SEQ_SPLIT_128(x) (x) MSGPACK_PP_SEQ_SPLIT_127
+# define MSGPACK_PP_SEQ_SPLIT_129(x) (x) MSGPACK_PP_SEQ_SPLIT_128
+# define MSGPACK_PP_SEQ_SPLIT_130(x) (x) MSGPACK_PP_SEQ_SPLIT_129
+# define MSGPACK_PP_SEQ_SPLIT_131(x) (x) MSGPACK_PP_SEQ_SPLIT_130
+# define MSGPACK_PP_SEQ_SPLIT_132(x) (x) MSGPACK_PP_SEQ_SPLIT_131
+# define MSGPACK_PP_SEQ_SPLIT_133(x) (x) MSGPACK_PP_SEQ_SPLIT_132
+# define MSGPACK_PP_SEQ_SPLIT_134(x) (x) MSGPACK_PP_SEQ_SPLIT_133
+# define MSGPACK_PP_SEQ_SPLIT_135(x) (x) MSGPACK_PP_SEQ_SPLIT_134
+# define MSGPACK_PP_SEQ_SPLIT_136(x) (x) MSGPACK_PP_SEQ_SPLIT_135
+# define MSGPACK_PP_SEQ_SPLIT_137(x) (x) MSGPACK_PP_SEQ_SPLIT_136
+# define MSGPACK_PP_SEQ_SPLIT_138(x) (x) MSGPACK_PP_SEQ_SPLIT_137
+# define MSGPACK_PP_SEQ_SPLIT_139(x) (x) MSGPACK_PP_SEQ_SPLIT_138
+# define MSGPACK_PP_SEQ_SPLIT_140(x) (x) MSGPACK_PP_SEQ_SPLIT_139
+# define MSGPACK_PP_SEQ_SPLIT_141(x) (x) MSGPACK_PP_SEQ_SPLIT_140
+# define MSGPACK_PP_SEQ_SPLIT_142(x) (x) MSGPACK_PP_SEQ_SPLIT_141
+# define MSGPACK_PP_SEQ_SPLIT_143(x) (x) MSGPACK_PP_SEQ_SPLIT_142
+# define MSGPACK_PP_SEQ_SPLIT_144(x) (x) MSGPACK_PP_SEQ_SPLIT_143
+# define MSGPACK_PP_SEQ_SPLIT_145(x) (x) MSGPACK_PP_SEQ_SPLIT_144
+# define MSGPACK_PP_SEQ_SPLIT_146(x) (x) MSGPACK_PP_SEQ_SPLIT_145
+# define MSGPACK_PP_SEQ_SPLIT_147(x) (x) MSGPACK_PP_SEQ_SPLIT_146
+# define MSGPACK_PP_SEQ_SPLIT_148(x) (x) MSGPACK_PP_SEQ_SPLIT_147
+# define MSGPACK_PP_SEQ_SPLIT_149(x) (x) MSGPACK_PP_SEQ_SPLIT_148
+# define MSGPACK_PP_SEQ_SPLIT_150(x) (x) MSGPACK_PP_SEQ_SPLIT_149
+# define MSGPACK_PP_SEQ_SPLIT_151(x) (x) MSGPACK_PP_SEQ_SPLIT_150
+# define MSGPACK_PP_SEQ_SPLIT_152(x) (x) MSGPACK_PP_SEQ_SPLIT_151
+# define MSGPACK_PP_SEQ_SPLIT_153(x) (x) MSGPACK_PP_SEQ_SPLIT_152
+# define MSGPACK_PP_SEQ_SPLIT_154(x) (x) MSGPACK_PP_SEQ_SPLIT_153
+# define MSGPACK_PP_SEQ_SPLIT_155(x) (x) MSGPACK_PP_SEQ_SPLIT_154
+# define MSGPACK_PP_SEQ_SPLIT_156(x) (x) MSGPACK_PP_SEQ_SPLIT_155
+# define MSGPACK_PP_SEQ_SPLIT_157(x) (x) MSGPACK_PP_SEQ_SPLIT_156
+# define MSGPACK_PP_SEQ_SPLIT_158(x) (x) MSGPACK_PP_SEQ_SPLIT_157
+# define MSGPACK_PP_SEQ_SPLIT_159(x) (x) MSGPACK_PP_SEQ_SPLIT_158
+# define MSGPACK_PP_SEQ_SPLIT_160(x) (x) MSGPACK_PP_SEQ_SPLIT_159
+# define MSGPACK_PP_SEQ_SPLIT_161(x) (x) MSGPACK_PP_SEQ_SPLIT_160
+# define MSGPACK_PP_SEQ_SPLIT_162(x) (x) MSGPACK_PP_SEQ_SPLIT_161
+# define MSGPACK_PP_SEQ_SPLIT_163(x) (x) MSGPACK_PP_SEQ_SPLIT_162
+# define MSGPACK_PP_SEQ_SPLIT_164(x) (x) MSGPACK_PP_SEQ_SPLIT_163
+# define MSGPACK_PP_SEQ_SPLIT_165(x) (x) MSGPACK_PP_SEQ_SPLIT_164
+# define MSGPACK_PP_SEQ_SPLIT_166(x) (x) MSGPACK_PP_SEQ_SPLIT_165
+# define MSGPACK_PP_SEQ_SPLIT_167(x) (x) MSGPACK_PP_SEQ_SPLIT_166
+# define MSGPACK_PP_SEQ_SPLIT_168(x) (x) MSGPACK_PP_SEQ_SPLIT_167
+# define MSGPACK_PP_SEQ_SPLIT_169(x) (x) MSGPACK_PP_SEQ_SPLIT_168
+# define MSGPACK_PP_SEQ_SPLIT_170(x) (x) MSGPACK_PP_SEQ_SPLIT_169
+# define MSGPACK_PP_SEQ_SPLIT_171(x) (x) MSGPACK_PP_SEQ_SPLIT_170
+# define MSGPACK_PP_SEQ_SPLIT_172(x) (x) MSGPACK_PP_SEQ_SPLIT_171
+# define MSGPACK_PP_SEQ_SPLIT_173(x) (x) MSGPACK_PP_SEQ_SPLIT_172
+# define MSGPACK_PP_SEQ_SPLIT_174(x) (x) MSGPACK_PP_SEQ_SPLIT_173
+# define MSGPACK_PP_SEQ_SPLIT_175(x) (x) MSGPACK_PP_SEQ_SPLIT_174
+# define MSGPACK_PP_SEQ_SPLIT_176(x) (x) MSGPACK_PP_SEQ_SPLIT_175
+# define MSGPACK_PP_SEQ_SPLIT_177(x) (x) MSGPACK_PP_SEQ_SPLIT_176
+# define MSGPACK_PP_SEQ_SPLIT_178(x) (x) MSGPACK_PP_SEQ_SPLIT_177
+# define MSGPACK_PP_SEQ_SPLIT_179(x) (x) MSGPACK_PP_SEQ_SPLIT_178
+# define MSGPACK_PP_SEQ_SPLIT_180(x) (x) MSGPACK_PP_SEQ_SPLIT_179
+# define MSGPACK_PP_SEQ_SPLIT_181(x) (x) MSGPACK_PP_SEQ_SPLIT_180
+# define MSGPACK_PP_SEQ_SPLIT_182(x) (x) MSGPACK_PP_SEQ_SPLIT_181
+# define MSGPACK_PP_SEQ_SPLIT_183(x) (x) MSGPACK_PP_SEQ_SPLIT_182
+# define MSGPACK_PP_SEQ_SPLIT_184(x) (x) MSGPACK_PP_SEQ_SPLIT_183
+# define MSGPACK_PP_SEQ_SPLIT_185(x) (x) MSGPACK_PP_SEQ_SPLIT_184
+# define MSGPACK_PP_SEQ_SPLIT_186(x) (x) MSGPACK_PP_SEQ_SPLIT_185
+# define MSGPACK_PP_SEQ_SPLIT_187(x) (x) MSGPACK_PP_SEQ_SPLIT_186
+# define MSGPACK_PP_SEQ_SPLIT_188(x) (x) MSGPACK_PP_SEQ_SPLIT_187
+# define MSGPACK_PP_SEQ_SPLIT_189(x) (x) MSGPACK_PP_SEQ_SPLIT_188
+# define MSGPACK_PP_SEQ_SPLIT_190(x) (x) MSGPACK_PP_SEQ_SPLIT_189
+# define MSGPACK_PP_SEQ_SPLIT_191(x) (x) MSGPACK_PP_SEQ_SPLIT_190
+# define MSGPACK_PP_SEQ_SPLIT_192(x) (x) MSGPACK_PP_SEQ_SPLIT_191
+# define MSGPACK_PP_SEQ_SPLIT_193(x) (x) MSGPACK_PP_SEQ_SPLIT_192
+# define MSGPACK_PP_SEQ_SPLIT_194(x) (x) MSGPACK_PP_SEQ_SPLIT_193
+# define MSGPACK_PP_SEQ_SPLIT_195(x) (x) MSGPACK_PP_SEQ_SPLIT_194
+# define MSGPACK_PP_SEQ_SPLIT_196(x) (x) MSGPACK_PP_SEQ_SPLIT_195
+# define MSGPACK_PP_SEQ_SPLIT_197(x) (x) MSGPACK_PP_SEQ_SPLIT_196
+# define MSGPACK_PP_SEQ_SPLIT_198(x) (x) MSGPACK_PP_SEQ_SPLIT_197
+# define MSGPACK_PP_SEQ_SPLIT_199(x) (x) MSGPACK_PP_SEQ_SPLIT_198
+# define MSGPACK_PP_SEQ_SPLIT_200(x) (x) MSGPACK_PP_SEQ_SPLIT_199
+# define MSGPACK_PP_SEQ_SPLIT_201(x) (x) MSGPACK_PP_SEQ_SPLIT_200
+# define MSGPACK_PP_SEQ_SPLIT_202(x) (x) MSGPACK_PP_SEQ_SPLIT_201
+# define MSGPACK_PP_SEQ_SPLIT_203(x) (x) MSGPACK_PP_SEQ_SPLIT_202
+# define MSGPACK_PP_SEQ_SPLIT_204(x) (x) MSGPACK_PP_SEQ_SPLIT_203
+# define MSGPACK_PP_SEQ_SPLIT_205(x) (x) MSGPACK_PP_SEQ_SPLIT_204
+# define MSGPACK_PP_SEQ_SPLIT_206(x) (x) MSGPACK_PP_SEQ_SPLIT_205
+# define MSGPACK_PP_SEQ_SPLIT_207(x) (x) MSGPACK_PP_SEQ_SPLIT_206
+# define MSGPACK_PP_SEQ_SPLIT_208(x) (x) MSGPACK_PP_SEQ_SPLIT_207
+# define MSGPACK_PP_SEQ_SPLIT_209(x) (x) MSGPACK_PP_SEQ_SPLIT_208
+# define MSGPACK_PP_SEQ_SPLIT_210(x) (x) MSGPACK_PP_SEQ_SPLIT_209
+# define MSGPACK_PP_SEQ_SPLIT_211(x) (x) MSGPACK_PP_SEQ_SPLIT_210
+# define MSGPACK_PP_SEQ_SPLIT_212(x) (x) MSGPACK_PP_SEQ_SPLIT_211
+# define MSGPACK_PP_SEQ_SPLIT_213(x) (x) MSGPACK_PP_SEQ_SPLIT_212
+# define MSGPACK_PP_SEQ_SPLIT_214(x) (x) MSGPACK_PP_SEQ_SPLIT_213
+# define MSGPACK_PP_SEQ_SPLIT_215(x) (x) MSGPACK_PP_SEQ_SPLIT_214
+# define MSGPACK_PP_SEQ_SPLIT_216(x) (x) MSGPACK_PP_SEQ_SPLIT_215
+# define MSGPACK_PP_SEQ_SPLIT_217(x) (x) MSGPACK_PP_SEQ_SPLIT_216
+# define MSGPACK_PP_SEQ_SPLIT_218(x) (x) MSGPACK_PP_SEQ_SPLIT_217
+# define MSGPACK_PP_SEQ_SPLIT_219(x) (x) MSGPACK_PP_SEQ_SPLIT_218
+# define MSGPACK_PP_SEQ_SPLIT_220(x) (x) MSGPACK_PP_SEQ_SPLIT_219
+# define MSGPACK_PP_SEQ_SPLIT_221(x) (x) MSGPACK_PP_SEQ_SPLIT_220
+# define MSGPACK_PP_SEQ_SPLIT_222(x) (x) MSGPACK_PP_SEQ_SPLIT_221
+# define MSGPACK_PP_SEQ_SPLIT_223(x) (x) MSGPACK_PP_SEQ_SPLIT_222
+# define MSGPACK_PP_SEQ_SPLIT_224(x) (x) MSGPACK_PP_SEQ_SPLIT_223
+# define MSGPACK_PP_SEQ_SPLIT_225(x) (x) MSGPACK_PP_SEQ_SPLIT_224
+# define MSGPACK_PP_SEQ_SPLIT_226(x) (x) MSGPACK_PP_SEQ_SPLIT_225
+# define MSGPACK_PP_SEQ_SPLIT_227(x) (x) MSGPACK_PP_SEQ_SPLIT_226
+# define MSGPACK_PP_SEQ_SPLIT_228(x) (x) MSGPACK_PP_SEQ_SPLIT_227
+# define MSGPACK_PP_SEQ_SPLIT_229(x) (x) MSGPACK_PP_SEQ_SPLIT_228
+# define MSGPACK_PP_SEQ_SPLIT_230(x) (x) MSGPACK_PP_SEQ_SPLIT_229
+# define MSGPACK_PP_SEQ_SPLIT_231(x) (x) MSGPACK_PP_SEQ_SPLIT_230
+# define MSGPACK_PP_SEQ_SPLIT_232(x) (x) MSGPACK_PP_SEQ_SPLIT_231
+# define MSGPACK_PP_SEQ_SPLIT_233(x) (x) MSGPACK_PP_SEQ_SPLIT_232
+# define MSGPACK_PP_SEQ_SPLIT_234(x) (x) MSGPACK_PP_SEQ_SPLIT_233
+# define MSGPACK_PP_SEQ_SPLIT_235(x) (x) MSGPACK_PP_SEQ_SPLIT_234
+# define MSGPACK_PP_SEQ_SPLIT_236(x) (x) MSGPACK_PP_SEQ_SPLIT_235
+# define MSGPACK_PP_SEQ_SPLIT_237(x) (x) MSGPACK_PP_SEQ_SPLIT_236
+# define MSGPACK_PP_SEQ_SPLIT_238(x) (x) MSGPACK_PP_SEQ_SPLIT_237
+# define MSGPACK_PP_SEQ_SPLIT_239(x) (x) MSGPACK_PP_SEQ_SPLIT_238
+# define MSGPACK_PP_SEQ_SPLIT_240(x) (x) MSGPACK_PP_SEQ_SPLIT_239
+# define MSGPACK_PP_SEQ_SPLIT_241(x) (x) MSGPACK_PP_SEQ_SPLIT_240
+# define MSGPACK_PP_SEQ_SPLIT_242(x) (x) MSGPACK_PP_SEQ_SPLIT_241
+# define MSGPACK_PP_SEQ_SPLIT_243(x) (x) MSGPACK_PP_SEQ_SPLIT_242
+# define MSGPACK_PP_SEQ_SPLIT_244(x) (x) MSGPACK_PP_SEQ_SPLIT_243
+# define MSGPACK_PP_SEQ_SPLIT_245(x) (x) MSGPACK_PP_SEQ_SPLIT_244
+# define MSGPACK_PP_SEQ_SPLIT_246(x) (x) MSGPACK_PP_SEQ_SPLIT_245
+# define MSGPACK_PP_SEQ_SPLIT_247(x) (x) MSGPACK_PP_SEQ_SPLIT_246
+# define MSGPACK_PP_SEQ_SPLIT_248(x) (x) MSGPACK_PP_SEQ_SPLIT_247
+# define MSGPACK_PP_SEQ_SPLIT_249(x) (x) MSGPACK_PP_SEQ_SPLIT_248
+# define MSGPACK_PP_SEQ_SPLIT_250(x) (x) MSGPACK_PP_SEQ_SPLIT_249
+# define MSGPACK_PP_SEQ_SPLIT_251(x) (x) MSGPACK_PP_SEQ_SPLIT_250
+# define MSGPACK_PP_SEQ_SPLIT_252(x) (x) MSGPACK_PP_SEQ_SPLIT_251
+# define MSGPACK_PP_SEQ_SPLIT_253(x) (x) MSGPACK_PP_SEQ_SPLIT_252
+# define MSGPACK_PP_SEQ_SPLIT_254(x) (x) MSGPACK_PP_SEQ_SPLIT_253
+# define MSGPACK_PP_SEQ_SPLIT_255(x) (x) MSGPACK_PP_SEQ_SPLIT_254
+# define MSGPACK_PP_SEQ_SPLIT_256(x) (x) MSGPACK_PP_SEQ_SPLIT_255
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/seq/elem.hpp b/third_party/msgpack/include/msgpack/preprocessor/seq/elem.hpp
new file mode 100644
index 0000000000..b70a5438ce
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/seq/elem.hpp
@@ -0,0 +1,304 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SEQ_ELEM_HPP
+# define MSGPACK_PREPROCESSOR_SEQ_ELEM_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/facilities/empty.hpp>
+#
+# /* MSGPACK_PP_SEQ_ELEM */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_SEQ_ELEM(i, seq) MSGPACK_PP_SEQ_ELEM_I(i, seq)
+# else
+# define MSGPACK_PP_SEQ_ELEM(i, seq) MSGPACK_PP_SEQ_ELEM_I((i, seq))
+# endif
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MSVC()
+# define MSGPACK_PP_SEQ_ELEM_I(i, seq) MSGPACK_PP_SEQ_ELEM_II((MSGPACK_PP_SEQ_ELEM_ ## i seq))
+# define MSGPACK_PP_SEQ_ELEM_II(res) MSGPACK_PP_SEQ_ELEM_IV(MSGPACK_PP_SEQ_ELEM_III res)
+# define MSGPACK_PP_SEQ_ELEM_III(x, _) x MSGPACK_PP_EMPTY()
+# define MSGPACK_PP_SEQ_ELEM_IV(x) x
+# elif MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_SEQ_ELEM_I(par) MSGPACK_PP_SEQ_ELEM_II ## par
+# define MSGPACK_PP_SEQ_ELEM_II(i, seq) MSGPACK_PP_SEQ_ELEM_III(MSGPACK_PP_SEQ_ELEM_ ## i ## seq)
+# define MSGPACK_PP_SEQ_ELEM_III(im) MSGPACK_PP_SEQ_ELEM_IV(im)
+# define MSGPACK_PP_SEQ_ELEM_IV(x, _) x
+# else
+# if defined(__IBMC__) || defined(__IBMCPP__)
+# define MSGPACK_PP_SEQ_ELEM_I(i, seq) MSGPACK_PP_SEQ_ELEM_II(MSGPACK_PP_CAT(MSGPACK_PP_SEQ_ELEM_ ## i, seq))
+# else
+# define MSGPACK_PP_SEQ_ELEM_I(i, seq) MSGPACK_PP_SEQ_ELEM_II(MSGPACK_PP_SEQ_ELEM_ ## i seq)
+# endif
+# define MSGPACK_PP_SEQ_ELEM_II(im) MSGPACK_PP_SEQ_ELEM_III(im)
+# define MSGPACK_PP_SEQ_ELEM_III(x, _) x
+# endif
+#
+# define MSGPACK_PP_SEQ_ELEM_0(x) x, MSGPACK_PP_NIL
+# define MSGPACK_PP_SEQ_ELEM_1(_) MSGPACK_PP_SEQ_ELEM_0
+# define MSGPACK_PP_SEQ_ELEM_2(_) MSGPACK_PP_SEQ_ELEM_1
+# define MSGPACK_PP_SEQ_ELEM_3(_) MSGPACK_PP_SEQ_ELEM_2
+# define MSGPACK_PP_SEQ_ELEM_4(_) MSGPACK_PP_SEQ_ELEM_3
+# define MSGPACK_PP_SEQ_ELEM_5(_) MSGPACK_PP_SEQ_ELEM_4
+# define MSGPACK_PP_SEQ_ELEM_6(_) MSGPACK_PP_SEQ_ELEM_5
+# define MSGPACK_PP_SEQ_ELEM_7(_) MSGPACK_PP_SEQ_ELEM_6
+# define MSGPACK_PP_SEQ_ELEM_8(_) MSGPACK_PP_SEQ_ELEM_7
+# define MSGPACK_PP_SEQ_ELEM_9(_) MSGPACK_PP_SEQ_ELEM_8
+# define MSGPACK_PP_SEQ_ELEM_10(_) MSGPACK_PP_SEQ_ELEM_9
+# define MSGPACK_PP_SEQ_ELEM_11(_) MSGPACK_PP_SEQ_ELEM_10
+# define MSGPACK_PP_SEQ_ELEM_12(_) MSGPACK_PP_SEQ_ELEM_11
+# define MSGPACK_PP_SEQ_ELEM_13(_) MSGPACK_PP_SEQ_ELEM_12
+# define MSGPACK_PP_SEQ_ELEM_14(_) MSGPACK_PP_SEQ_ELEM_13
+# define MSGPACK_PP_SEQ_ELEM_15(_) MSGPACK_PP_SEQ_ELEM_14
+# define MSGPACK_PP_SEQ_ELEM_16(_) MSGPACK_PP_SEQ_ELEM_15
+# define MSGPACK_PP_SEQ_ELEM_17(_) MSGPACK_PP_SEQ_ELEM_16
+# define MSGPACK_PP_SEQ_ELEM_18(_) MSGPACK_PP_SEQ_ELEM_17
+# define MSGPACK_PP_SEQ_ELEM_19(_) MSGPACK_PP_SEQ_ELEM_18
+# define MSGPACK_PP_SEQ_ELEM_20(_) MSGPACK_PP_SEQ_ELEM_19
+# define MSGPACK_PP_SEQ_ELEM_21(_) MSGPACK_PP_SEQ_ELEM_20
+# define MSGPACK_PP_SEQ_ELEM_22(_) MSGPACK_PP_SEQ_ELEM_21
+# define MSGPACK_PP_SEQ_ELEM_23(_) MSGPACK_PP_SEQ_ELEM_22
+# define MSGPACK_PP_SEQ_ELEM_24(_) MSGPACK_PP_SEQ_ELEM_23
+# define MSGPACK_PP_SEQ_ELEM_25(_) MSGPACK_PP_SEQ_ELEM_24
+# define MSGPACK_PP_SEQ_ELEM_26(_) MSGPACK_PP_SEQ_ELEM_25
+# define MSGPACK_PP_SEQ_ELEM_27(_) MSGPACK_PP_SEQ_ELEM_26
+# define MSGPACK_PP_SEQ_ELEM_28(_) MSGPACK_PP_SEQ_ELEM_27
+# define MSGPACK_PP_SEQ_ELEM_29(_) MSGPACK_PP_SEQ_ELEM_28
+# define MSGPACK_PP_SEQ_ELEM_30(_) MSGPACK_PP_SEQ_ELEM_29
+# define MSGPACK_PP_SEQ_ELEM_31(_) MSGPACK_PP_SEQ_ELEM_30
+# define MSGPACK_PP_SEQ_ELEM_32(_) MSGPACK_PP_SEQ_ELEM_31
+# define MSGPACK_PP_SEQ_ELEM_33(_) MSGPACK_PP_SEQ_ELEM_32
+# define MSGPACK_PP_SEQ_ELEM_34(_) MSGPACK_PP_SEQ_ELEM_33
+# define MSGPACK_PP_SEQ_ELEM_35(_) MSGPACK_PP_SEQ_ELEM_34
+# define MSGPACK_PP_SEQ_ELEM_36(_) MSGPACK_PP_SEQ_ELEM_35
+# define MSGPACK_PP_SEQ_ELEM_37(_) MSGPACK_PP_SEQ_ELEM_36
+# define MSGPACK_PP_SEQ_ELEM_38(_) MSGPACK_PP_SEQ_ELEM_37
+# define MSGPACK_PP_SEQ_ELEM_39(_) MSGPACK_PP_SEQ_ELEM_38
+# define MSGPACK_PP_SEQ_ELEM_40(_) MSGPACK_PP_SEQ_ELEM_39
+# define MSGPACK_PP_SEQ_ELEM_41(_) MSGPACK_PP_SEQ_ELEM_40
+# define MSGPACK_PP_SEQ_ELEM_42(_) MSGPACK_PP_SEQ_ELEM_41
+# define MSGPACK_PP_SEQ_ELEM_43(_) MSGPACK_PP_SEQ_ELEM_42
+# define MSGPACK_PP_SEQ_ELEM_44(_) MSGPACK_PP_SEQ_ELEM_43
+# define MSGPACK_PP_SEQ_ELEM_45(_) MSGPACK_PP_SEQ_ELEM_44
+# define MSGPACK_PP_SEQ_ELEM_46(_) MSGPACK_PP_SEQ_ELEM_45
+# define MSGPACK_PP_SEQ_ELEM_47(_) MSGPACK_PP_SEQ_ELEM_46
+# define MSGPACK_PP_SEQ_ELEM_48(_) MSGPACK_PP_SEQ_ELEM_47
+# define MSGPACK_PP_SEQ_ELEM_49(_) MSGPACK_PP_SEQ_ELEM_48
+# define MSGPACK_PP_SEQ_ELEM_50(_) MSGPACK_PP_SEQ_ELEM_49
+# define MSGPACK_PP_SEQ_ELEM_51(_) MSGPACK_PP_SEQ_ELEM_50
+# define MSGPACK_PP_SEQ_ELEM_52(_) MSGPACK_PP_SEQ_ELEM_51
+# define MSGPACK_PP_SEQ_ELEM_53(_) MSGPACK_PP_SEQ_ELEM_52
+# define MSGPACK_PP_SEQ_ELEM_54(_) MSGPACK_PP_SEQ_ELEM_53
+# define MSGPACK_PP_SEQ_ELEM_55(_) MSGPACK_PP_SEQ_ELEM_54
+# define MSGPACK_PP_SEQ_ELEM_56(_) MSGPACK_PP_SEQ_ELEM_55
+# define MSGPACK_PP_SEQ_ELEM_57(_) MSGPACK_PP_SEQ_ELEM_56
+# define MSGPACK_PP_SEQ_ELEM_58(_) MSGPACK_PP_SEQ_ELEM_57
+# define MSGPACK_PP_SEQ_ELEM_59(_) MSGPACK_PP_SEQ_ELEM_58
+# define MSGPACK_PP_SEQ_ELEM_60(_) MSGPACK_PP_SEQ_ELEM_59
+# define MSGPACK_PP_SEQ_ELEM_61(_) MSGPACK_PP_SEQ_ELEM_60
+# define MSGPACK_PP_SEQ_ELEM_62(_) MSGPACK_PP_SEQ_ELEM_61
+# define MSGPACK_PP_SEQ_ELEM_63(_) MSGPACK_PP_SEQ_ELEM_62
+# define MSGPACK_PP_SEQ_ELEM_64(_) MSGPACK_PP_SEQ_ELEM_63
+# define MSGPACK_PP_SEQ_ELEM_65(_) MSGPACK_PP_SEQ_ELEM_64
+# define MSGPACK_PP_SEQ_ELEM_66(_) MSGPACK_PP_SEQ_ELEM_65
+# define MSGPACK_PP_SEQ_ELEM_67(_) MSGPACK_PP_SEQ_ELEM_66
+# define MSGPACK_PP_SEQ_ELEM_68(_) MSGPACK_PP_SEQ_ELEM_67
+# define MSGPACK_PP_SEQ_ELEM_69(_) MSGPACK_PP_SEQ_ELEM_68
+# define MSGPACK_PP_SEQ_ELEM_70(_) MSGPACK_PP_SEQ_ELEM_69
+# define MSGPACK_PP_SEQ_ELEM_71(_) MSGPACK_PP_SEQ_ELEM_70
+# define MSGPACK_PP_SEQ_ELEM_72(_) MSGPACK_PP_SEQ_ELEM_71
+# define MSGPACK_PP_SEQ_ELEM_73(_) MSGPACK_PP_SEQ_ELEM_72
+# define MSGPACK_PP_SEQ_ELEM_74(_) MSGPACK_PP_SEQ_ELEM_73
+# define MSGPACK_PP_SEQ_ELEM_75(_) MSGPACK_PP_SEQ_ELEM_74
+# define MSGPACK_PP_SEQ_ELEM_76(_) MSGPACK_PP_SEQ_ELEM_75
+# define MSGPACK_PP_SEQ_ELEM_77(_) MSGPACK_PP_SEQ_ELEM_76
+# define MSGPACK_PP_SEQ_ELEM_78(_) MSGPACK_PP_SEQ_ELEM_77
+# define MSGPACK_PP_SEQ_ELEM_79(_) MSGPACK_PP_SEQ_ELEM_78
+# define MSGPACK_PP_SEQ_ELEM_80(_) MSGPACK_PP_SEQ_ELEM_79
+# define MSGPACK_PP_SEQ_ELEM_81(_) MSGPACK_PP_SEQ_ELEM_80
+# define MSGPACK_PP_SEQ_ELEM_82(_) MSGPACK_PP_SEQ_ELEM_81
+# define MSGPACK_PP_SEQ_ELEM_83(_) MSGPACK_PP_SEQ_ELEM_82
+# define MSGPACK_PP_SEQ_ELEM_84(_) MSGPACK_PP_SEQ_ELEM_83
+# define MSGPACK_PP_SEQ_ELEM_85(_) MSGPACK_PP_SEQ_ELEM_84
+# define MSGPACK_PP_SEQ_ELEM_86(_) MSGPACK_PP_SEQ_ELEM_85
+# define MSGPACK_PP_SEQ_ELEM_87(_) MSGPACK_PP_SEQ_ELEM_86
+# define MSGPACK_PP_SEQ_ELEM_88(_) MSGPACK_PP_SEQ_ELEM_87
+# define MSGPACK_PP_SEQ_ELEM_89(_) MSGPACK_PP_SEQ_ELEM_88
+# define MSGPACK_PP_SEQ_ELEM_90(_) MSGPACK_PP_SEQ_ELEM_89
+# define MSGPACK_PP_SEQ_ELEM_91(_) MSGPACK_PP_SEQ_ELEM_90
+# define MSGPACK_PP_SEQ_ELEM_92(_) MSGPACK_PP_SEQ_ELEM_91
+# define MSGPACK_PP_SEQ_ELEM_93(_) MSGPACK_PP_SEQ_ELEM_92
+# define MSGPACK_PP_SEQ_ELEM_94(_) MSGPACK_PP_SEQ_ELEM_93
+# define MSGPACK_PP_SEQ_ELEM_95(_) MSGPACK_PP_SEQ_ELEM_94
+# define MSGPACK_PP_SEQ_ELEM_96(_) MSGPACK_PP_SEQ_ELEM_95
+# define MSGPACK_PP_SEQ_ELEM_97(_) MSGPACK_PP_SEQ_ELEM_96
+# define MSGPACK_PP_SEQ_ELEM_98(_) MSGPACK_PP_SEQ_ELEM_97
+# define MSGPACK_PP_SEQ_ELEM_99(_) MSGPACK_PP_SEQ_ELEM_98
+# define MSGPACK_PP_SEQ_ELEM_100(_) MSGPACK_PP_SEQ_ELEM_99
+# define MSGPACK_PP_SEQ_ELEM_101(_) MSGPACK_PP_SEQ_ELEM_100
+# define MSGPACK_PP_SEQ_ELEM_102(_) MSGPACK_PP_SEQ_ELEM_101
+# define MSGPACK_PP_SEQ_ELEM_103(_) MSGPACK_PP_SEQ_ELEM_102
+# define MSGPACK_PP_SEQ_ELEM_104(_) MSGPACK_PP_SEQ_ELEM_103
+# define MSGPACK_PP_SEQ_ELEM_105(_) MSGPACK_PP_SEQ_ELEM_104
+# define MSGPACK_PP_SEQ_ELEM_106(_) MSGPACK_PP_SEQ_ELEM_105
+# define MSGPACK_PP_SEQ_ELEM_107(_) MSGPACK_PP_SEQ_ELEM_106
+# define MSGPACK_PP_SEQ_ELEM_108(_) MSGPACK_PP_SEQ_ELEM_107
+# define MSGPACK_PP_SEQ_ELEM_109(_) MSGPACK_PP_SEQ_ELEM_108
+# define MSGPACK_PP_SEQ_ELEM_110(_) MSGPACK_PP_SEQ_ELEM_109
+# define MSGPACK_PP_SEQ_ELEM_111(_) MSGPACK_PP_SEQ_ELEM_110
+# define MSGPACK_PP_SEQ_ELEM_112(_) MSGPACK_PP_SEQ_ELEM_111
+# define MSGPACK_PP_SEQ_ELEM_113(_) MSGPACK_PP_SEQ_ELEM_112
+# define MSGPACK_PP_SEQ_ELEM_114(_) MSGPACK_PP_SEQ_ELEM_113
+# define MSGPACK_PP_SEQ_ELEM_115(_) MSGPACK_PP_SEQ_ELEM_114
+# define MSGPACK_PP_SEQ_ELEM_116(_) MSGPACK_PP_SEQ_ELEM_115
+# define MSGPACK_PP_SEQ_ELEM_117(_) MSGPACK_PP_SEQ_ELEM_116
+# define MSGPACK_PP_SEQ_ELEM_118(_) MSGPACK_PP_SEQ_ELEM_117
+# define MSGPACK_PP_SEQ_ELEM_119(_) MSGPACK_PP_SEQ_ELEM_118
+# define MSGPACK_PP_SEQ_ELEM_120(_) MSGPACK_PP_SEQ_ELEM_119
+# define MSGPACK_PP_SEQ_ELEM_121(_) MSGPACK_PP_SEQ_ELEM_120
+# define MSGPACK_PP_SEQ_ELEM_122(_) MSGPACK_PP_SEQ_ELEM_121
+# define MSGPACK_PP_SEQ_ELEM_123(_) MSGPACK_PP_SEQ_ELEM_122
+# define MSGPACK_PP_SEQ_ELEM_124(_) MSGPACK_PP_SEQ_ELEM_123
+# define MSGPACK_PP_SEQ_ELEM_125(_) MSGPACK_PP_SEQ_ELEM_124
+# define MSGPACK_PP_SEQ_ELEM_126(_) MSGPACK_PP_SEQ_ELEM_125
+# define MSGPACK_PP_SEQ_ELEM_127(_) MSGPACK_PP_SEQ_ELEM_126
+# define MSGPACK_PP_SEQ_ELEM_128(_) MSGPACK_PP_SEQ_ELEM_127
+# define MSGPACK_PP_SEQ_ELEM_129(_) MSGPACK_PP_SEQ_ELEM_128
+# define MSGPACK_PP_SEQ_ELEM_130(_) MSGPACK_PP_SEQ_ELEM_129
+# define MSGPACK_PP_SEQ_ELEM_131(_) MSGPACK_PP_SEQ_ELEM_130
+# define MSGPACK_PP_SEQ_ELEM_132(_) MSGPACK_PP_SEQ_ELEM_131
+# define MSGPACK_PP_SEQ_ELEM_133(_) MSGPACK_PP_SEQ_ELEM_132
+# define MSGPACK_PP_SEQ_ELEM_134(_) MSGPACK_PP_SEQ_ELEM_133
+# define MSGPACK_PP_SEQ_ELEM_135(_) MSGPACK_PP_SEQ_ELEM_134
+# define MSGPACK_PP_SEQ_ELEM_136(_) MSGPACK_PP_SEQ_ELEM_135
+# define MSGPACK_PP_SEQ_ELEM_137(_) MSGPACK_PP_SEQ_ELEM_136
+# define MSGPACK_PP_SEQ_ELEM_138(_) MSGPACK_PP_SEQ_ELEM_137
+# define MSGPACK_PP_SEQ_ELEM_139(_) MSGPACK_PP_SEQ_ELEM_138
+# define MSGPACK_PP_SEQ_ELEM_140(_) MSGPACK_PP_SEQ_ELEM_139
+# define MSGPACK_PP_SEQ_ELEM_141(_) MSGPACK_PP_SEQ_ELEM_140
+# define MSGPACK_PP_SEQ_ELEM_142(_) MSGPACK_PP_SEQ_ELEM_141
+# define MSGPACK_PP_SEQ_ELEM_143(_) MSGPACK_PP_SEQ_ELEM_142
+# define MSGPACK_PP_SEQ_ELEM_144(_) MSGPACK_PP_SEQ_ELEM_143
+# define MSGPACK_PP_SEQ_ELEM_145(_) MSGPACK_PP_SEQ_ELEM_144
+# define MSGPACK_PP_SEQ_ELEM_146(_) MSGPACK_PP_SEQ_ELEM_145
+# define MSGPACK_PP_SEQ_ELEM_147(_) MSGPACK_PP_SEQ_ELEM_146
+# define MSGPACK_PP_SEQ_ELEM_148(_) MSGPACK_PP_SEQ_ELEM_147
+# define MSGPACK_PP_SEQ_ELEM_149(_) MSGPACK_PP_SEQ_ELEM_148
+# define MSGPACK_PP_SEQ_ELEM_150(_) MSGPACK_PP_SEQ_ELEM_149
+# define MSGPACK_PP_SEQ_ELEM_151(_) MSGPACK_PP_SEQ_ELEM_150
+# define MSGPACK_PP_SEQ_ELEM_152(_) MSGPACK_PP_SEQ_ELEM_151
+# define MSGPACK_PP_SEQ_ELEM_153(_) MSGPACK_PP_SEQ_ELEM_152
+# define MSGPACK_PP_SEQ_ELEM_154(_) MSGPACK_PP_SEQ_ELEM_153
+# define MSGPACK_PP_SEQ_ELEM_155(_) MSGPACK_PP_SEQ_ELEM_154
+# define MSGPACK_PP_SEQ_ELEM_156(_) MSGPACK_PP_SEQ_ELEM_155
+# define MSGPACK_PP_SEQ_ELEM_157(_) MSGPACK_PP_SEQ_ELEM_156
+# define MSGPACK_PP_SEQ_ELEM_158(_) MSGPACK_PP_SEQ_ELEM_157
+# define MSGPACK_PP_SEQ_ELEM_159(_) MSGPACK_PP_SEQ_ELEM_158
+# define MSGPACK_PP_SEQ_ELEM_160(_) MSGPACK_PP_SEQ_ELEM_159
+# define MSGPACK_PP_SEQ_ELEM_161(_) MSGPACK_PP_SEQ_ELEM_160
+# define MSGPACK_PP_SEQ_ELEM_162(_) MSGPACK_PP_SEQ_ELEM_161
+# define MSGPACK_PP_SEQ_ELEM_163(_) MSGPACK_PP_SEQ_ELEM_162
+# define MSGPACK_PP_SEQ_ELEM_164(_) MSGPACK_PP_SEQ_ELEM_163
+# define MSGPACK_PP_SEQ_ELEM_165(_) MSGPACK_PP_SEQ_ELEM_164
+# define MSGPACK_PP_SEQ_ELEM_166(_) MSGPACK_PP_SEQ_ELEM_165
+# define MSGPACK_PP_SEQ_ELEM_167(_) MSGPACK_PP_SEQ_ELEM_166
+# define MSGPACK_PP_SEQ_ELEM_168(_) MSGPACK_PP_SEQ_ELEM_167
+# define MSGPACK_PP_SEQ_ELEM_169(_) MSGPACK_PP_SEQ_ELEM_168
+# define MSGPACK_PP_SEQ_ELEM_170(_) MSGPACK_PP_SEQ_ELEM_169
+# define MSGPACK_PP_SEQ_ELEM_171(_) MSGPACK_PP_SEQ_ELEM_170
+# define MSGPACK_PP_SEQ_ELEM_172(_) MSGPACK_PP_SEQ_ELEM_171
+# define MSGPACK_PP_SEQ_ELEM_173(_) MSGPACK_PP_SEQ_ELEM_172
+# define MSGPACK_PP_SEQ_ELEM_174(_) MSGPACK_PP_SEQ_ELEM_173
+# define MSGPACK_PP_SEQ_ELEM_175(_) MSGPACK_PP_SEQ_ELEM_174
+# define MSGPACK_PP_SEQ_ELEM_176(_) MSGPACK_PP_SEQ_ELEM_175
+# define MSGPACK_PP_SEQ_ELEM_177(_) MSGPACK_PP_SEQ_ELEM_176
+# define MSGPACK_PP_SEQ_ELEM_178(_) MSGPACK_PP_SEQ_ELEM_177
+# define MSGPACK_PP_SEQ_ELEM_179(_) MSGPACK_PP_SEQ_ELEM_178
+# define MSGPACK_PP_SEQ_ELEM_180(_) MSGPACK_PP_SEQ_ELEM_179
+# define MSGPACK_PP_SEQ_ELEM_181(_) MSGPACK_PP_SEQ_ELEM_180
+# define MSGPACK_PP_SEQ_ELEM_182(_) MSGPACK_PP_SEQ_ELEM_181
+# define MSGPACK_PP_SEQ_ELEM_183(_) MSGPACK_PP_SEQ_ELEM_182
+# define MSGPACK_PP_SEQ_ELEM_184(_) MSGPACK_PP_SEQ_ELEM_183
+# define MSGPACK_PP_SEQ_ELEM_185(_) MSGPACK_PP_SEQ_ELEM_184
+# define MSGPACK_PP_SEQ_ELEM_186(_) MSGPACK_PP_SEQ_ELEM_185
+# define MSGPACK_PP_SEQ_ELEM_187(_) MSGPACK_PP_SEQ_ELEM_186
+# define MSGPACK_PP_SEQ_ELEM_188(_) MSGPACK_PP_SEQ_ELEM_187
+# define MSGPACK_PP_SEQ_ELEM_189(_) MSGPACK_PP_SEQ_ELEM_188
+# define MSGPACK_PP_SEQ_ELEM_190(_) MSGPACK_PP_SEQ_ELEM_189
+# define MSGPACK_PP_SEQ_ELEM_191(_) MSGPACK_PP_SEQ_ELEM_190
+# define MSGPACK_PP_SEQ_ELEM_192(_) MSGPACK_PP_SEQ_ELEM_191
+# define MSGPACK_PP_SEQ_ELEM_193(_) MSGPACK_PP_SEQ_ELEM_192
+# define MSGPACK_PP_SEQ_ELEM_194(_) MSGPACK_PP_SEQ_ELEM_193
+# define MSGPACK_PP_SEQ_ELEM_195(_) MSGPACK_PP_SEQ_ELEM_194
+# define MSGPACK_PP_SEQ_ELEM_196(_) MSGPACK_PP_SEQ_ELEM_195
+# define MSGPACK_PP_SEQ_ELEM_197(_) MSGPACK_PP_SEQ_ELEM_196
+# define MSGPACK_PP_SEQ_ELEM_198(_) MSGPACK_PP_SEQ_ELEM_197
+# define MSGPACK_PP_SEQ_ELEM_199(_) MSGPACK_PP_SEQ_ELEM_198
+# define MSGPACK_PP_SEQ_ELEM_200(_) MSGPACK_PP_SEQ_ELEM_199
+# define MSGPACK_PP_SEQ_ELEM_201(_) MSGPACK_PP_SEQ_ELEM_200
+# define MSGPACK_PP_SEQ_ELEM_202(_) MSGPACK_PP_SEQ_ELEM_201
+# define MSGPACK_PP_SEQ_ELEM_203(_) MSGPACK_PP_SEQ_ELEM_202
+# define MSGPACK_PP_SEQ_ELEM_204(_) MSGPACK_PP_SEQ_ELEM_203
+# define MSGPACK_PP_SEQ_ELEM_205(_) MSGPACK_PP_SEQ_ELEM_204
+# define MSGPACK_PP_SEQ_ELEM_206(_) MSGPACK_PP_SEQ_ELEM_205
+# define MSGPACK_PP_SEQ_ELEM_207(_) MSGPACK_PP_SEQ_ELEM_206
+# define MSGPACK_PP_SEQ_ELEM_208(_) MSGPACK_PP_SEQ_ELEM_207
+# define MSGPACK_PP_SEQ_ELEM_209(_) MSGPACK_PP_SEQ_ELEM_208
+# define MSGPACK_PP_SEQ_ELEM_210(_) MSGPACK_PP_SEQ_ELEM_209
+# define MSGPACK_PP_SEQ_ELEM_211(_) MSGPACK_PP_SEQ_ELEM_210
+# define MSGPACK_PP_SEQ_ELEM_212(_) MSGPACK_PP_SEQ_ELEM_211
+# define MSGPACK_PP_SEQ_ELEM_213(_) MSGPACK_PP_SEQ_ELEM_212
+# define MSGPACK_PP_SEQ_ELEM_214(_) MSGPACK_PP_SEQ_ELEM_213
+# define MSGPACK_PP_SEQ_ELEM_215(_) MSGPACK_PP_SEQ_ELEM_214
+# define MSGPACK_PP_SEQ_ELEM_216(_) MSGPACK_PP_SEQ_ELEM_215
+# define MSGPACK_PP_SEQ_ELEM_217(_) MSGPACK_PP_SEQ_ELEM_216
+# define MSGPACK_PP_SEQ_ELEM_218(_) MSGPACK_PP_SEQ_ELEM_217
+# define MSGPACK_PP_SEQ_ELEM_219(_) MSGPACK_PP_SEQ_ELEM_218
+# define MSGPACK_PP_SEQ_ELEM_220(_) MSGPACK_PP_SEQ_ELEM_219
+# define MSGPACK_PP_SEQ_ELEM_221(_) MSGPACK_PP_SEQ_ELEM_220
+# define MSGPACK_PP_SEQ_ELEM_222(_) MSGPACK_PP_SEQ_ELEM_221
+# define MSGPACK_PP_SEQ_ELEM_223(_) MSGPACK_PP_SEQ_ELEM_222
+# define MSGPACK_PP_SEQ_ELEM_224(_) MSGPACK_PP_SEQ_ELEM_223
+# define MSGPACK_PP_SEQ_ELEM_225(_) MSGPACK_PP_SEQ_ELEM_224
+# define MSGPACK_PP_SEQ_ELEM_226(_) MSGPACK_PP_SEQ_ELEM_225
+# define MSGPACK_PP_SEQ_ELEM_227(_) MSGPACK_PP_SEQ_ELEM_226
+# define MSGPACK_PP_SEQ_ELEM_228(_) MSGPACK_PP_SEQ_ELEM_227
+# define MSGPACK_PP_SEQ_ELEM_229(_) MSGPACK_PP_SEQ_ELEM_228
+# define MSGPACK_PP_SEQ_ELEM_230(_) MSGPACK_PP_SEQ_ELEM_229
+# define MSGPACK_PP_SEQ_ELEM_231(_) MSGPACK_PP_SEQ_ELEM_230
+# define MSGPACK_PP_SEQ_ELEM_232(_) MSGPACK_PP_SEQ_ELEM_231
+# define MSGPACK_PP_SEQ_ELEM_233(_) MSGPACK_PP_SEQ_ELEM_232
+# define MSGPACK_PP_SEQ_ELEM_234(_) MSGPACK_PP_SEQ_ELEM_233
+# define MSGPACK_PP_SEQ_ELEM_235(_) MSGPACK_PP_SEQ_ELEM_234
+# define MSGPACK_PP_SEQ_ELEM_236(_) MSGPACK_PP_SEQ_ELEM_235
+# define MSGPACK_PP_SEQ_ELEM_237(_) MSGPACK_PP_SEQ_ELEM_236
+# define MSGPACK_PP_SEQ_ELEM_238(_) MSGPACK_PP_SEQ_ELEM_237
+# define MSGPACK_PP_SEQ_ELEM_239(_) MSGPACK_PP_SEQ_ELEM_238
+# define MSGPACK_PP_SEQ_ELEM_240(_) MSGPACK_PP_SEQ_ELEM_239
+# define MSGPACK_PP_SEQ_ELEM_241(_) MSGPACK_PP_SEQ_ELEM_240
+# define MSGPACK_PP_SEQ_ELEM_242(_) MSGPACK_PP_SEQ_ELEM_241
+# define MSGPACK_PP_SEQ_ELEM_243(_) MSGPACK_PP_SEQ_ELEM_242
+# define MSGPACK_PP_SEQ_ELEM_244(_) MSGPACK_PP_SEQ_ELEM_243
+# define MSGPACK_PP_SEQ_ELEM_245(_) MSGPACK_PP_SEQ_ELEM_244
+# define MSGPACK_PP_SEQ_ELEM_246(_) MSGPACK_PP_SEQ_ELEM_245
+# define MSGPACK_PP_SEQ_ELEM_247(_) MSGPACK_PP_SEQ_ELEM_246
+# define MSGPACK_PP_SEQ_ELEM_248(_) MSGPACK_PP_SEQ_ELEM_247
+# define MSGPACK_PP_SEQ_ELEM_249(_) MSGPACK_PP_SEQ_ELEM_248
+# define MSGPACK_PP_SEQ_ELEM_250(_) MSGPACK_PP_SEQ_ELEM_249
+# define MSGPACK_PP_SEQ_ELEM_251(_) MSGPACK_PP_SEQ_ELEM_250
+# define MSGPACK_PP_SEQ_ELEM_252(_) MSGPACK_PP_SEQ_ELEM_251
+# define MSGPACK_PP_SEQ_ELEM_253(_) MSGPACK_PP_SEQ_ELEM_252
+# define MSGPACK_PP_SEQ_ELEM_254(_) MSGPACK_PP_SEQ_ELEM_253
+# define MSGPACK_PP_SEQ_ELEM_255(_) MSGPACK_PP_SEQ_ELEM_254
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/seq/enum.hpp b/third_party/msgpack/include/msgpack/preprocessor/seq/enum.hpp
new file mode 100644
index 0000000000..4db9e92106
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/seq/enum.hpp
@@ -0,0 +1,288 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SEQ_ENUM_HPP
+# define MSGPACK_PREPROCESSOR_SEQ_ENUM_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/seq/size.hpp>
+#
+# /* MSGPACK_PP_SEQ_ENUM */
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_SEQ_ENUM(seq) MSGPACK_PP_SEQ_ENUM_I(seq)
+# define MSGPACK_PP_SEQ_ENUM_I(seq) MSGPACK_PP_CAT(MSGPACK_PP_SEQ_ENUM_, MSGPACK_PP_SEQ_SIZE(seq)) seq
+# elif MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_SEQ_ENUM(seq) MSGPACK_PP_SEQ_ENUM_I(MSGPACK_PP_SEQ_SIZE(seq), seq)
+# define MSGPACK_PP_SEQ_ENUM_I(size, seq) MSGPACK_PP_CAT(MSGPACK_PP_SEQ_ENUM_, size) seq
+# else
+# define MSGPACK_PP_SEQ_ENUM(seq) MSGPACK_PP_CAT(MSGPACK_PP_SEQ_ENUM_, MSGPACK_PP_SEQ_SIZE(seq)) seq
+# endif
+#
+# define MSGPACK_PP_SEQ_ENUM_1(x) x
+# define MSGPACK_PP_SEQ_ENUM_2(x) x, MSGPACK_PP_SEQ_ENUM_1
+# define MSGPACK_PP_SEQ_ENUM_3(x) x, MSGPACK_PP_SEQ_ENUM_2
+# define MSGPACK_PP_SEQ_ENUM_4(x) x, MSGPACK_PP_SEQ_ENUM_3
+# define MSGPACK_PP_SEQ_ENUM_5(x) x, MSGPACK_PP_SEQ_ENUM_4
+# define MSGPACK_PP_SEQ_ENUM_6(x) x, MSGPACK_PP_SEQ_ENUM_5
+# define MSGPACK_PP_SEQ_ENUM_7(x) x, MSGPACK_PP_SEQ_ENUM_6
+# define MSGPACK_PP_SEQ_ENUM_8(x) x, MSGPACK_PP_SEQ_ENUM_7
+# define MSGPACK_PP_SEQ_ENUM_9(x) x, MSGPACK_PP_SEQ_ENUM_8
+# define MSGPACK_PP_SEQ_ENUM_10(x) x, MSGPACK_PP_SEQ_ENUM_9
+# define MSGPACK_PP_SEQ_ENUM_11(x) x, MSGPACK_PP_SEQ_ENUM_10
+# define MSGPACK_PP_SEQ_ENUM_12(x) x, MSGPACK_PP_SEQ_ENUM_11
+# define MSGPACK_PP_SEQ_ENUM_13(x) x, MSGPACK_PP_SEQ_ENUM_12
+# define MSGPACK_PP_SEQ_ENUM_14(x) x, MSGPACK_PP_SEQ_ENUM_13
+# define MSGPACK_PP_SEQ_ENUM_15(x) x, MSGPACK_PP_SEQ_ENUM_14
+# define MSGPACK_PP_SEQ_ENUM_16(x) x, MSGPACK_PP_SEQ_ENUM_15
+# define MSGPACK_PP_SEQ_ENUM_17(x) x, MSGPACK_PP_SEQ_ENUM_16
+# define MSGPACK_PP_SEQ_ENUM_18(x) x, MSGPACK_PP_SEQ_ENUM_17
+# define MSGPACK_PP_SEQ_ENUM_19(x) x, MSGPACK_PP_SEQ_ENUM_18
+# define MSGPACK_PP_SEQ_ENUM_20(x) x, MSGPACK_PP_SEQ_ENUM_19
+# define MSGPACK_PP_SEQ_ENUM_21(x) x, MSGPACK_PP_SEQ_ENUM_20
+# define MSGPACK_PP_SEQ_ENUM_22(x) x, MSGPACK_PP_SEQ_ENUM_21
+# define MSGPACK_PP_SEQ_ENUM_23(x) x, MSGPACK_PP_SEQ_ENUM_22
+# define MSGPACK_PP_SEQ_ENUM_24(x) x, MSGPACK_PP_SEQ_ENUM_23
+# define MSGPACK_PP_SEQ_ENUM_25(x) x, MSGPACK_PP_SEQ_ENUM_24
+# define MSGPACK_PP_SEQ_ENUM_26(x) x, MSGPACK_PP_SEQ_ENUM_25
+# define MSGPACK_PP_SEQ_ENUM_27(x) x, MSGPACK_PP_SEQ_ENUM_26
+# define MSGPACK_PP_SEQ_ENUM_28(x) x, MSGPACK_PP_SEQ_ENUM_27
+# define MSGPACK_PP_SEQ_ENUM_29(x) x, MSGPACK_PP_SEQ_ENUM_28
+# define MSGPACK_PP_SEQ_ENUM_30(x) x, MSGPACK_PP_SEQ_ENUM_29
+# define MSGPACK_PP_SEQ_ENUM_31(x) x, MSGPACK_PP_SEQ_ENUM_30
+# define MSGPACK_PP_SEQ_ENUM_32(x) x, MSGPACK_PP_SEQ_ENUM_31
+# define MSGPACK_PP_SEQ_ENUM_33(x) x, MSGPACK_PP_SEQ_ENUM_32
+# define MSGPACK_PP_SEQ_ENUM_34(x) x, MSGPACK_PP_SEQ_ENUM_33
+# define MSGPACK_PP_SEQ_ENUM_35(x) x, MSGPACK_PP_SEQ_ENUM_34
+# define MSGPACK_PP_SEQ_ENUM_36(x) x, MSGPACK_PP_SEQ_ENUM_35
+# define MSGPACK_PP_SEQ_ENUM_37(x) x, MSGPACK_PP_SEQ_ENUM_36
+# define MSGPACK_PP_SEQ_ENUM_38(x) x, MSGPACK_PP_SEQ_ENUM_37
+# define MSGPACK_PP_SEQ_ENUM_39(x) x, MSGPACK_PP_SEQ_ENUM_38
+# define MSGPACK_PP_SEQ_ENUM_40(x) x, MSGPACK_PP_SEQ_ENUM_39
+# define MSGPACK_PP_SEQ_ENUM_41(x) x, MSGPACK_PP_SEQ_ENUM_40
+# define MSGPACK_PP_SEQ_ENUM_42(x) x, MSGPACK_PP_SEQ_ENUM_41
+# define MSGPACK_PP_SEQ_ENUM_43(x) x, MSGPACK_PP_SEQ_ENUM_42
+# define MSGPACK_PP_SEQ_ENUM_44(x) x, MSGPACK_PP_SEQ_ENUM_43
+# define MSGPACK_PP_SEQ_ENUM_45(x) x, MSGPACK_PP_SEQ_ENUM_44
+# define MSGPACK_PP_SEQ_ENUM_46(x) x, MSGPACK_PP_SEQ_ENUM_45
+# define MSGPACK_PP_SEQ_ENUM_47(x) x, MSGPACK_PP_SEQ_ENUM_46
+# define MSGPACK_PP_SEQ_ENUM_48(x) x, MSGPACK_PP_SEQ_ENUM_47
+# define MSGPACK_PP_SEQ_ENUM_49(x) x, MSGPACK_PP_SEQ_ENUM_48
+# define MSGPACK_PP_SEQ_ENUM_50(x) x, MSGPACK_PP_SEQ_ENUM_49
+# define MSGPACK_PP_SEQ_ENUM_51(x) x, MSGPACK_PP_SEQ_ENUM_50
+# define MSGPACK_PP_SEQ_ENUM_52(x) x, MSGPACK_PP_SEQ_ENUM_51
+# define MSGPACK_PP_SEQ_ENUM_53(x) x, MSGPACK_PP_SEQ_ENUM_52
+# define MSGPACK_PP_SEQ_ENUM_54(x) x, MSGPACK_PP_SEQ_ENUM_53
+# define MSGPACK_PP_SEQ_ENUM_55(x) x, MSGPACK_PP_SEQ_ENUM_54
+# define MSGPACK_PP_SEQ_ENUM_56(x) x, MSGPACK_PP_SEQ_ENUM_55
+# define MSGPACK_PP_SEQ_ENUM_57(x) x, MSGPACK_PP_SEQ_ENUM_56
+# define MSGPACK_PP_SEQ_ENUM_58(x) x, MSGPACK_PP_SEQ_ENUM_57
+# define MSGPACK_PP_SEQ_ENUM_59(x) x, MSGPACK_PP_SEQ_ENUM_58
+# define MSGPACK_PP_SEQ_ENUM_60(x) x, MSGPACK_PP_SEQ_ENUM_59
+# define MSGPACK_PP_SEQ_ENUM_61(x) x, MSGPACK_PP_SEQ_ENUM_60
+# define MSGPACK_PP_SEQ_ENUM_62(x) x, MSGPACK_PP_SEQ_ENUM_61
+# define MSGPACK_PP_SEQ_ENUM_63(x) x, MSGPACK_PP_SEQ_ENUM_62
+# define MSGPACK_PP_SEQ_ENUM_64(x) x, MSGPACK_PP_SEQ_ENUM_63
+# define MSGPACK_PP_SEQ_ENUM_65(x) x, MSGPACK_PP_SEQ_ENUM_64
+# define MSGPACK_PP_SEQ_ENUM_66(x) x, MSGPACK_PP_SEQ_ENUM_65
+# define MSGPACK_PP_SEQ_ENUM_67(x) x, MSGPACK_PP_SEQ_ENUM_66
+# define MSGPACK_PP_SEQ_ENUM_68(x) x, MSGPACK_PP_SEQ_ENUM_67
+# define MSGPACK_PP_SEQ_ENUM_69(x) x, MSGPACK_PP_SEQ_ENUM_68
+# define MSGPACK_PP_SEQ_ENUM_70(x) x, MSGPACK_PP_SEQ_ENUM_69
+# define MSGPACK_PP_SEQ_ENUM_71(x) x, MSGPACK_PP_SEQ_ENUM_70
+# define MSGPACK_PP_SEQ_ENUM_72(x) x, MSGPACK_PP_SEQ_ENUM_71
+# define MSGPACK_PP_SEQ_ENUM_73(x) x, MSGPACK_PP_SEQ_ENUM_72
+# define MSGPACK_PP_SEQ_ENUM_74(x) x, MSGPACK_PP_SEQ_ENUM_73
+# define MSGPACK_PP_SEQ_ENUM_75(x) x, MSGPACK_PP_SEQ_ENUM_74
+# define MSGPACK_PP_SEQ_ENUM_76(x) x, MSGPACK_PP_SEQ_ENUM_75
+# define MSGPACK_PP_SEQ_ENUM_77(x) x, MSGPACK_PP_SEQ_ENUM_76
+# define MSGPACK_PP_SEQ_ENUM_78(x) x, MSGPACK_PP_SEQ_ENUM_77
+# define MSGPACK_PP_SEQ_ENUM_79(x) x, MSGPACK_PP_SEQ_ENUM_78
+# define MSGPACK_PP_SEQ_ENUM_80(x) x, MSGPACK_PP_SEQ_ENUM_79
+# define MSGPACK_PP_SEQ_ENUM_81(x) x, MSGPACK_PP_SEQ_ENUM_80
+# define MSGPACK_PP_SEQ_ENUM_82(x) x, MSGPACK_PP_SEQ_ENUM_81
+# define MSGPACK_PP_SEQ_ENUM_83(x) x, MSGPACK_PP_SEQ_ENUM_82
+# define MSGPACK_PP_SEQ_ENUM_84(x) x, MSGPACK_PP_SEQ_ENUM_83
+# define MSGPACK_PP_SEQ_ENUM_85(x) x, MSGPACK_PP_SEQ_ENUM_84
+# define MSGPACK_PP_SEQ_ENUM_86(x) x, MSGPACK_PP_SEQ_ENUM_85
+# define MSGPACK_PP_SEQ_ENUM_87(x) x, MSGPACK_PP_SEQ_ENUM_86
+# define MSGPACK_PP_SEQ_ENUM_88(x) x, MSGPACK_PP_SEQ_ENUM_87
+# define MSGPACK_PP_SEQ_ENUM_89(x) x, MSGPACK_PP_SEQ_ENUM_88
+# define MSGPACK_PP_SEQ_ENUM_90(x) x, MSGPACK_PP_SEQ_ENUM_89
+# define MSGPACK_PP_SEQ_ENUM_91(x) x, MSGPACK_PP_SEQ_ENUM_90
+# define MSGPACK_PP_SEQ_ENUM_92(x) x, MSGPACK_PP_SEQ_ENUM_91
+# define MSGPACK_PP_SEQ_ENUM_93(x) x, MSGPACK_PP_SEQ_ENUM_92
+# define MSGPACK_PP_SEQ_ENUM_94(x) x, MSGPACK_PP_SEQ_ENUM_93
+# define MSGPACK_PP_SEQ_ENUM_95(x) x, MSGPACK_PP_SEQ_ENUM_94
+# define MSGPACK_PP_SEQ_ENUM_96(x) x, MSGPACK_PP_SEQ_ENUM_95
+# define MSGPACK_PP_SEQ_ENUM_97(x) x, MSGPACK_PP_SEQ_ENUM_96
+# define MSGPACK_PP_SEQ_ENUM_98(x) x, MSGPACK_PP_SEQ_ENUM_97
+# define MSGPACK_PP_SEQ_ENUM_99(x) x, MSGPACK_PP_SEQ_ENUM_98
+# define MSGPACK_PP_SEQ_ENUM_100(x) x, MSGPACK_PP_SEQ_ENUM_99
+# define MSGPACK_PP_SEQ_ENUM_101(x) x, MSGPACK_PP_SEQ_ENUM_100
+# define MSGPACK_PP_SEQ_ENUM_102(x) x, MSGPACK_PP_SEQ_ENUM_101
+# define MSGPACK_PP_SEQ_ENUM_103(x) x, MSGPACK_PP_SEQ_ENUM_102
+# define MSGPACK_PP_SEQ_ENUM_104(x) x, MSGPACK_PP_SEQ_ENUM_103
+# define MSGPACK_PP_SEQ_ENUM_105(x) x, MSGPACK_PP_SEQ_ENUM_104
+# define MSGPACK_PP_SEQ_ENUM_106(x) x, MSGPACK_PP_SEQ_ENUM_105
+# define MSGPACK_PP_SEQ_ENUM_107(x) x, MSGPACK_PP_SEQ_ENUM_106
+# define MSGPACK_PP_SEQ_ENUM_108(x) x, MSGPACK_PP_SEQ_ENUM_107
+# define MSGPACK_PP_SEQ_ENUM_109(x) x, MSGPACK_PP_SEQ_ENUM_108
+# define MSGPACK_PP_SEQ_ENUM_110(x) x, MSGPACK_PP_SEQ_ENUM_109
+# define MSGPACK_PP_SEQ_ENUM_111(x) x, MSGPACK_PP_SEQ_ENUM_110
+# define MSGPACK_PP_SEQ_ENUM_112(x) x, MSGPACK_PP_SEQ_ENUM_111
+# define MSGPACK_PP_SEQ_ENUM_113(x) x, MSGPACK_PP_SEQ_ENUM_112
+# define MSGPACK_PP_SEQ_ENUM_114(x) x, MSGPACK_PP_SEQ_ENUM_113
+# define MSGPACK_PP_SEQ_ENUM_115(x) x, MSGPACK_PP_SEQ_ENUM_114
+# define MSGPACK_PP_SEQ_ENUM_116(x) x, MSGPACK_PP_SEQ_ENUM_115
+# define MSGPACK_PP_SEQ_ENUM_117(x) x, MSGPACK_PP_SEQ_ENUM_116
+# define MSGPACK_PP_SEQ_ENUM_118(x) x, MSGPACK_PP_SEQ_ENUM_117
+# define MSGPACK_PP_SEQ_ENUM_119(x) x, MSGPACK_PP_SEQ_ENUM_118
+# define MSGPACK_PP_SEQ_ENUM_120(x) x, MSGPACK_PP_SEQ_ENUM_119
+# define MSGPACK_PP_SEQ_ENUM_121(x) x, MSGPACK_PP_SEQ_ENUM_120
+# define MSGPACK_PP_SEQ_ENUM_122(x) x, MSGPACK_PP_SEQ_ENUM_121
+# define MSGPACK_PP_SEQ_ENUM_123(x) x, MSGPACK_PP_SEQ_ENUM_122
+# define MSGPACK_PP_SEQ_ENUM_124(x) x, MSGPACK_PP_SEQ_ENUM_123
+# define MSGPACK_PP_SEQ_ENUM_125(x) x, MSGPACK_PP_SEQ_ENUM_124
+# define MSGPACK_PP_SEQ_ENUM_126(x) x, MSGPACK_PP_SEQ_ENUM_125
+# define MSGPACK_PP_SEQ_ENUM_127(x) x, MSGPACK_PP_SEQ_ENUM_126
+# define MSGPACK_PP_SEQ_ENUM_128(x) x, MSGPACK_PP_SEQ_ENUM_127
+# define MSGPACK_PP_SEQ_ENUM_129(x) x, MSGPACK_PP_SEQ_ENUM_128
+# define MSGPACK_PP_SEQ_ENUM_130(x) x, MSGPACK_PP_SEQ_ENUM_129
+# define MSGPACK_PP_SEQ_ENUM_131(x) x, MSGPACK_PP_SEQ_ENUM_130
+# define MSGPACK_PP_SEQ_ENUM_132(x) x, MSGPACK_PP_SEQ_ENUM_131
+# define MSGPACK_PP_SEQ_ENUM_133(x) x, MSGPACK_PP_SEQ_ENUM_132
+# define MSGPACK_PP_SEQ_ENUM_134(x) x, MSGPACK_PP_SEQ_ENUM_133
+# define MSGPACK_PP_SEQ_ENUM_135(x) x, MSGPACK_PP_SEQ_ENUM_134
+# define MSGPACK_PP_SEQ_ENUM_136(x) x, MSGPACK_PP_SEQ_ENUM_135
+# define MSGPACK_PP_SEQ_ENUM_137(x) x, MSGPACK_PP_SEQ_ENUM_136
+# define MSGPACK_PP_SEQ_ENUM_138(x) x, MSGPACK_PP_SEQ_ENUM_137
+# define MSGPACK_PP_SEQ_ENUM_139(x) x, MSGPACK_PP_SEQ_ENUM_138
+# define MSGPACK_PP_SEQ_ENUM_140(x) x, MSGPACK_PP_SEQ_ENUM_139
+# define MSGPACK_PP_SEQ_ENUM_141(x) x, MSGPACK_PP_SEQ_ENUM_140
+# define MSGPACK_PP_SEQ_ENUM_142(x) x, MSGPACK_PP_SEQ_ENUM_141
+# define MSGPACK_PP_SEQ_ENUM_143(x) x, MSGPACK_PP_SEQ_ENUM_142
+# define MSGPACK_PP_SEQ_ENUM_144(x) x, MSGPACK_PP_SEQ_ENUM_143
+# define MSGPACK_PP_SEQ_ENUM_145(x) x, MSGPACK_PP_SEQ_ENUM_144
+# define MSGPACK_PP_SEQ_ENUM_146(x) x, MSGPACK_PP_SEQ_ENUM_145
+# define MSGPACK_PP_SEQ_ENUM_147(x) x, MSGPACK_PP_SEQ_ENUM_146
+# define MSGPACK_PP_SEQ_ENUM_148(x) x, MSGPACK_PP_SEQ_ENUM_147
+# define MSGPACK_PP_SEQ_ENUM_149(x) x, MSGPACK_PP_SEQ_ENUM_148
+# define MSGPACK_PP_SEQ_ENUM_150(x) x, MSGPACK_PP_SEQ_ENUM_149
+# define MSGPACK_PP_SEQ_ENUM_151(x) x, MSGPACK_PP_SEQ_ENUM_150
+# define MSGPACK_PP_SEQ_ENUM_152(x) x, MSGPACK_PP_SEQ_ENUM_151
+# define MSGPACK_PP_SEQ_ENUM_153(x) x, MSGPACK_PP_SEQ_ENUM_152
+# define MSGPACK_PP_SEQ_ENUM_154(x) x, MSGPACK_PP_SEQ_ENUM_153
+# define MSGPACK_PP_SEQ_ENUM_155(x) x, MSGPACK_PP_SEQ_ENUM_154
+# define MSGPACK_PP_SEQ_ENUM_156(x) x, MSGPACK_PP_SEQ_ENUM_155
+# define MSGPACK_PP_SEQ_ENUM_157(x) x, MSGPACK_PP_SEQ_ENUM_156
+# define MSGPACK_PP_SEQ_ENUM_158(x) x, MSGPACK_PP_SEQ_ENUM_157
+# define MSGPACK_PP_SEQ_ENUM_159(x) x, MSGPACK_PP_SEQ_ENUM_158
+# define MSGPACK_PP_SEQ_ENUM_160(x) x, MSGPACK_PP_SEQ_ENUM_159
+# define MSGPACK_PP_SEQ_ENUM_161(x) x, MSGPACK_PP_SEQ_ENUM_160
+# define MSGPACK_PP_SEQ_ENUM_162(x) x, MSGPACK_PP_SEQ_ENUM_161
+# define MSGPACK_PP_SEQ_ENUM_163(x) x, MSGPACK_PP_SEQ_ENUM_162
+# define MSGPACK_PP_SEQ_ENUM_164(x) x, MSGPACK_PP_SEQ_ENUM_163
+# define MSGPACK_PP_SEQ_ENUM_165(x) x, MSGPACK_PP_SEQ_ENUM_164
+# define MSGPACK_PP_SEQ_ENUM_166(x) x, MSGPACK_PP_SEQ_ENUM_165
+# define MSGPACK_PP_SEQ_ENUM_167(x) x, MSGPACK_PP_SEQ_ENUM_166
+# define MSGPACK_PP_SEQ_ENUM_168(x) x, MSGPACK_PP_SEQ_ENUM_167
+# define MSGPACK_PP_SEQ_ENUM_169(x) x, MSGPACK_PP_SEQ_ENUM_168
+# define MSGPACK_PP_SEQ_ENUM_170(x) x, MSGPACK_PP_SEQ_ENUM_169
+# define MSGPACK_PP_SEQ_ENUM_171(x) x, MSGPACK_PP_SEQ_ENUM_170
+# define MSGPACK_PP_SEQ_ENUM_172(x) x, MSGPACK_PP_SEQ_ENUM_171
+# define MSGPACK_PP_SEQ_ENUM_173(x) x, MSGPACK_PP_SEQ_ENUM_172
+# define MSGPACK_PP_SEQ_ENUM_174(x) x, MSGPACK_PP_SEQ_ENUM_173
+# define MSGPACK_PP_SEQ_ENUM_175(x) x, MSGPACK_PP_SEQ_ENUM_174
+# define MSGPACK_PP_SEQ_ENUM_176(x) x, MSGPACK_PP_SEQ_ENUM_175
+# define MSGPACK_PP_SEQ_ENUM_177(x) x, MSGPACK_PP_SEQ_ENUM_176
+# define MSGPACK_PP_SEQ_ENUM_178(x) x, MSGPACK_PP_SEQ_ENUM_177
+# define MSGPACK_PP_SEQ_ENUM_179(x) x, MSGPACK_PP_SEQ_ENUM_178
+# define MSGPACK_PP_SEQ_ENUM_180(x) x, MSGPACK_PP_SEQ_ENUM_179
+# define MSGPACK_PP_SEQ_ENUM_181(x) x, MSGPACK_PP_SEQ_ENUM_180
+# define MSGPACK_PP_SEQ_ENUM_182(x) x, MSGPACK_PP_SEQ_ENUM_181
+# define MSGPACK_PP_SEQ_ENUM_183(x) x, MSGPACK_PP_SEQ_ENUM_182
+# define MSGPACK_PP_SEQ_ENUM_184(x) x, MSGPACK_PP_SEQ_ENUM_183
+# define MSGPACK_PP_SEQ_ENUM_185(x) x, MSGPACK_PP_SEQ_ENUM_184
+# define MSGPACK_PP_SEQ_ENUM_186(x) x, MSGPACK_PP_SEQ_ENUM_185
+# define MSGPACK_PP_SEQ_ENUM_187(x) x, MSGPACK_PP_SEQ_ENUM_186
+# define MSGPACK_PP_SEQ_ENUM_188(x) x, MSGPACK_PP_SEQ_ENUM_187
+# define MSGPACK_PP_SEQ_ENUM_189(x) x, MSGPACK_PP_SEQ_ENUM_188
+# define MSGPACK_PP_SEQ_ENUM_190(x) x, MSGPACK_PP_SEQ_ENUM_189
+# define MSGPACK_PP_SEQ_ENUM_191(x) x, MSGPACK_PP_SEQ_ENUM_190
+# define MSGPACK_PP_SEQ_ENUM_192(x) x, MSGPACK_PP_SEQ_ENUM_191
+# define MSGPACK_PP_SEQ_ENUM_193(x) x, MSGPACK_PP_SEQ_ENUM_192
+# define MSGPACK_PP_SEQ_ENUM_194(x) x, MSGPACK_PP_SEQ_ENUM_193
+# define MSGPACK_PP_SEQ_ENUM_195(x) x, MSGPACK_PP_SEQ_ENUM_194
+# define MSGPACK_PP_SEQ_ENUM_196(x) x, MSGPACK_PP_SEQ_ENUM_195
+# define MSGPACK_PP_SEQ_ENUM_197(x) x, MSGPACK_PP_SEQ_ENUM_196
+# define MSGPACK_PP_SEQ_ENUM_198(x) x, MSGPACK_PP_SEQ_ENUM_197
+# define MSGPACK_PP_SEQ_ENUM_199(x) x, MSGPACK_PP_SEQ_ENUM_198
+# define MSGPACK_PP_SEQ_ENUM_200(x) x, MSGPACK_PP_SEQ_ENUM_199
+# define MSGPACK_PP_SEQ_ENUM_201(x) x, MSGPACK_PP_SEQ_ENUM_200
+# define MSGPACK_PP_SEQ_ENUM_202(x) x, MSGPACK_PP_SEQ_ENUM_201
+# define MSGPACK_PP_SEQ_ENUM_203(x) x, MSGPACK_PP_SEQ_ENUM_202
+# define MSGPACK_PP_SEQ_ENUM_204(x) x, MSGPACK_PP_SEQ_ENUM_203
+# define MSGPACK_PP_SEQ_ENUM_205(x) x, MSGPACK_PP_SEQ_ENUM_204
+# define MSGPACK_PP_SEQ_ENUM_206(x) x, MSGPACK_PP_SEQ_ENUM_205
+# define MSGPACK_PP_SEQ_ENUM_207(x) x, MSGPACK_PP_SEQ_ENUM_206
+# define MSGPACK_PP_SEQ_ENUM_208(x) x, MSGPACK_PP_SEQ_ENUM_207
+# define MSGPACK_PP_SEQ_ENUM_209(x) x, MSGPACK_PP_SEQ_ENUM_208
+# define MSGPACK_PP_SEQ_ENUM_210(x) x, MSGPACK_PP_SEQ_ENUM_209
+# define MSGPACK_PP_SEQ_ENUM_211(x) x, MSGPACK_PP_SEQ_ENUM_210
+# define MSGPACK_PP_SEQ_ENUM_212(x) x, MSGPACK_PP_SEQ_ENUM_211
+# define MSGPACK_PP_SEQ_ENUM_213(x) x, MSGPACK_PP_SEQ_ENUM_212
+# define MSGPACK_PP_SEQ_ENUM_214(x) x, MSGPACK_PP_SEQ_ENUM_213
+# define MSGPACK_PP_SEQ_ENUM_215(x) x, MSGPACK_PP_SEQ_ENUM_214
+# define MSGPACK_PP_SEQ_ENUM_216(x) x, MSGPACK_PP_SEQ_ENUM_215
+# define MSGPACK_PP_SEQ_ENUM_217(x) x, MSGPACK_PP_SEQ_ENUM_216
+# define MSGPACK_PP_SEQ_ENUM_218(x) x, MSGPACK_PP_SEQ_ENUM_217
+# define MSGPACK_PP_SEQ_ENUM_219(x) x, MSGPACK_PP_SEQ_ENUM_218
+# define MSGPACK_PP_SEQ_ENUM_220(x) x, MSGPACK_PP_SEQ_ENUM_219
+# define MSGPACK_PP_SEQ_ENUM_221(x) x, MSGPACK_PP_SEQ_ENUM_220
+# define MSGPACK_PP_SEQ_ENUM_222(x) x, MSGPACK_PP_SEQ_ENUM_221
+# define MSGPACK_PP_SEQ_ENUM_223(x) x, MSGPACK_PP_SEQ_ENUM_222
+# define MSGPACK_PP_SEQ_ENUM_224(x) x, MSGPACK_PP_SEQ_ENUM_223
+# define MSGPACK_PP_SEQ_ENUM_225(x) x, MSGPACK_PP_SEQ_ENUM_224
+# define MSGPACK_PP_SEQ_ENUM_226(x) x, MSGPACK_PP_SEQ_ENUM_225
+# define MSGPACK_PP_SEQ_ENUM_227(x) x, MSGPACK_PP_SEQ_ENUM_226
+# define MSGPACK_PP_SEQ_ENUM_228(x) x, MSGPACK_PP_SEQ_ENUM_227
+# define MSGPACK_PP_SEQ_ENUM_229(x) x, MSGPACK_PP_SEQ_ENUM_228
+# define MSGPACK_PP_SEQ_ENUM_230(x) x, MSGPACK_PP_SEQ_ENUM_229
+# define MSGPACK_PP_SEQ_ENUM_231(x) x, MSGPACK_PP_SEQ_ENUM_230
+# define MSGPACK_PP_SEQ_ENUM_232(x) x, MSGPACK_PP_SEQ_ENUM_231
+# define MSGPACK_PP_SEQ_ENUM_233(x) x, MSGPACK_PP_SEQ_ENUM_232
+# define MSGPACK_PP_SEQ_ENUM_234(x) x, MSGPACK_PP_SEQ_ENUM_233
+# define MSGPACK_PP_SEQ_ENUM_235(x) x, MSGPACK_PP_SEQ_ENUM_234
+# define MSGPACK_PP_SEQ_ENUM_236(x) x, MSGPACK_PP_SEQ_ENUM_235
+# define MSGPACK_PP_SEQ_ENUM_237(x) x, MSGPACK_PP_SEQ_ENUM_236
+# define MSGPACK_PP_SEQ_ENUM_238(x) x, MSGPACK_PP_SEQ_ENUM_237
+# define MSGPACK_PP_SEQ_ENUM_239(x) x, MSGPACK_PP_SEQ_ENUM_238
+# define MSGPACK_PP_SEQ_ENUM_240(x) x, MSGPACK_PP_SEQ_ENUM_239
+# define MSGPACK_PP_SEQ_ENUM_241(x) x, MSGPACK_PP_SEQ_ENUM_240
+# define MSGPACK_PP_SEQ_ENUM_242(x) x, MSGPACK_PP_SEQ_ENUM_241
+# define MSGPACK_PP_SEQ_ENUM_243(x) x, MSGPACK_PP_SEQ_ENUM_242
+# define MSGPACK_PP_SEQ_ENUM_244(x) x, MSGPACK_PP_SEQ_ENUM_243
+# define MSGPACK_PP_SEQ_ENUM_245(x) x, MSGPACK_PP_SEQ_ENUM_244
+# define MSGPACK_PP_SEQ_ENUM_246(x) x, MSGPACK_PP_SEQ_ENUM_245
+# define MSGPACK_PP_SEQ_ENUM_247(x) x, MSGPACK_PP_SEQ_ENUM_246
+# define MSGPACK_PP_SEQ_ENUM_248(x) x, MSGPACK_PP_SEQ_ENUM_247
+# define MSGPACK_PP_SEQ_ENUM_249(x) x, MSGPACK_PP_SEQ_ENUM_248
+# define MSGPACK_PP_SEQ_ENUM_250(x) x, MSGPACK_PP_SEQ_ENUM_249
+# define MSGPACK_PP_SEQ_ENUM_251(x) x, MSGPACK_PP_SEQ_ENUM_250
+# define MSGPACK_PP_SEQ_ENUM_252(x) x, MSGPACK_PP_SEQ_ENUM_251
+# define MSGPACK_PP_SEQ_ENUM_253(x) x, MSGPACK_PP_SEQ_ENUM_252
+# define MSGPACK_PP_SEQ_ENUM_254(x) x, MSGPACK_PP_SEQ_ENUM_253
+# define MSGPACK_PP_SEQ_ENUM_255(x) x, MSGPACK_PP_SEQ_ENUM_254
+# define MSGPACK_PP_SEQ_ENUM_256(x) x, MSGPACK_PP_SEQ_ENUM_255
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/seq/filter.hpp b/third_party/msgpack/include/msgpack/preprocessor/seq/filter.hpp
new file mode 100644
index 0000000000..3caf450a9f
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/seq/filter.hpp
@@ -0,0 +1,54 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SEQ_FILTER_HPP
+# define MSGPACK_PREPROCESSOR_SEQ_FILTER_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/control/expr_if.hpp>
+# include <msgpack/preprocessor/facilities/empty.hpp>
+# include <msgpack/preprocessor/seq/fold_left.hpp>
+# include <msgpack/preprocessor/seq/seq.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+# include <msgpack/preprocessor/tuple/rem.hpp>
+#
+# /* MSGPACK_PP_SEQ_FILTER */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_SEQ_FILTER(pred, data, seq) MSGPACK_PP_SEQ_TAIL(MSGPACK_PP_TUPLE_ELEM(3, 2, MSGPACK_PP_SEQ_FOLD_LEFT(MSGPACK_PP_SEQ_FILTER_O, (pred, data, (nil)), seq)))
+# else
+# define MSGPACK_PP_SEQ_FILTER(pred, data, seq) MSGPACK_PP_SEQ_FILTER_I(pred, data, seq)
+# define MSGPACK_PP_SEQ_FILTER_I(pred, data, seq) MSGPACK_PP_SEQ_TAIL(MSGPACK_PP_TUPLE_ELEM(3, 2, MSGPACK_PP_SEQ_FOLD_LEFT(MSGPACK_PP_SEQ_FILTER_O, (pred, data, (nil)), seq)))
+# endif
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_STRICT()
+# define MSGPACK_PP_SEQ_FILTER_O(s, st, elem) MSGPACK_PP_SEQ_FILTER_O_IM(s, MSGPACK_PP_TUPLE_REM_3 st, elem)
+# define MSGPACK_PP_SEQ_FILTER_O_IM(s, im, elem) MSGPACK_PP_SEQ_FILTER_O_I(s, im, elem)
+# else
+# define MSGPACK_PP_SEQ_FILTER_O(s, st, elem) MSGPACK_PP_SEQ_FILTER_O_I(s, MSGPACK_PP_TUPLE_ELEM(3, 0, st), MSGPACK_PP_TUPLE_ELEM(3, 1, st), MSGPACK_PP_TUPLE_ELEM(3, 2, st), elem)
+# endif
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_DMC()
+# define MSGPACK_PP_SEQ_FILTER_O_I(s, pred, data, res, elem) (pred, data, res MSGPACK_PP_EXPR_IF(pred(s, data, elem), (elem)))
+# else
+# define MSGPACK_PP_SEQ_FILTER_O_I(s, pred, data, res, elem) (pred, data, res MSGPACK_PP_EXPR_IF(pred##(s, data, elem), (elem)))
+# endif
+#
+# /* MSGPACK_PP_SEQ_FILTER_S */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_SEQ_FILTER_S(s, pred, data, seq) MSGPACK_PP_SEQ_TAIL(MSGPACK_PP_TUPLE_ELEM(3, 2, MSGPACK_PP_SEQ_FOLD_LEFT_ ## s(MSGPACK_PP_SEQ_FILTER_O, (pred, data, (nil)), seq)))
+# else
+# define MSGPACK_PP_SEQ_FILTER_S(s, pred, data, seq) MSGPACK_PP_SEQ_FILTER_S_I(s, pred, data, seq)
+# define MSGPACK_PP_SEQ_FILTER_S_I(s, pred, data, seq) MSGPACK_PP_SEQ_TAIL(MSGPACK_PP_TUPLE_ELEM(3, 2, MSGPACK_PP_SEQ_FOLD_LEFT_ ## s(MSGPACK_PP_SEQ_FILTER_O, (pred, data, (nil)), seq)))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/seq/first_n.hpp b/third_party/msgpack/include/msgpack/preprocessor/seq/first_n.hpp
new file mode 100644
index 0000000000..944212b38f
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/seq/first_n.hpp
@@ -0,0 +1,30 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SEQ_FIRST_N_HPP
+# define MSGPACK_PREPROCESSOR_SEQ_FIRST_N_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/control/if.hpp>
+# include <msgpack/preprocessor/seq/detail/split.hpp>
+# include <msgpack/preprocessor/tuple/eat.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+#
+# /* MSGPACK_PP_SEQ_FIRST_N */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_SEQ_FIRST_N(n, seq) MSGPACK_PP_IF(n, MSGPACK_PP_TUPLE_ELEM, MSGPACK_PP_TUPLE_EAT_3)(2, 0, MSGPACK_PP_SEQ_SPLIT(n, seq (nil)))
+# else
+# define MSGPACK_PP_SEQ_FIRST_N(n, seq) MSGPACK_PP_SEQ_FIRST_N_I(n, seq)
+# define MSGPACK_PP_SEQ_FIRST_N_I(n, seq) MSGPACK_PP_IF(n, MSGPACK_PP_TUPLE_ELEM, MSGPACK_PP_TUPLE_EAT_3)(2, 0, MSGPACK_PP_SEQ_SPLIT(n, seq (nil)))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/seq/fold_left.hpp b/third_party/msgpack/include/msgpack/preprocessor/seq/fold_left.hpp
new file mode 100644
index 0000000000..0ce5d16b62
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/seq/fold_left.hpp
@@ -0,0 +1,1070 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SEQ_FOLD_LEFT_HPP
+# define MSGPACK_PREPROCESSOR_SEQ_FOLD_LEFT_HPP
+#
+# include <msgpack/preprocessor/arithmetic/dec.hpp>
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/control/if.hpp>
+# include <msgpack/preprocessor/debug/error.hpp>
+# include <msgpack/preprocessor/detail/auto_rec.hpp>
+# include <msgpack/preprocessor/seq/seq.hpp>
+# include <msgpack/preprocessor/seq/size.hpp>
+#
+# /* MSGPACK_PP_SEQ_FOLD_LEFT */
+#
+# if 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT(op, state, seq) ...
+# endif
+#
+# define MSGPACK_PP_SEQ_FOLD_LEFT MSGPACK_PP_CAT(MSGPACK_PP_SEQ_FOLD_LEFT_, MSGPACK_PP_AUTO_REC(MSGPACK_PP_SEQ_FOLD_LEFT_P, 256))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_P(n) MSGPACK_PP_CAT(MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_, MSGPACK_PP_SEQ_FOLD_LEFT_I_ ## n(MSGPACK_PP_SEQ_FOLD_LEFT_O, MSGPACK_PP_NIL, (nil), 1))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_O(s, st, _) st
+#
+# define MSGPACK_PP_SEQ_FOLD_LEFT_257(op, st, ss) MSGPACK_PP_ERROR(0x0005)
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_257(op, st, ss, sz) MSGPACK_PP_ERROR(0x0005)
+#
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_NIL 1
+#
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_1(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_2(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_3(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_4(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_5(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_6(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_7(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_8(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_9(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_10(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_11(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_12(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_13(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_14(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_15(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_16(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_17(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_18(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_19(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_20(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_21(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_22(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_23(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_24(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_25(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_26(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_27(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_28(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_29(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_30(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_31(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_32(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_33(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_34(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_35(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_36(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_37(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_38(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_39(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_40(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_41(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_42(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_43(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_44(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_45(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_46(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_47(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_48(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_49(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_50(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_51(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_52(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_53(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_54(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_55(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_56(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_57(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_58(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_59(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_60(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_61(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_62(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_63(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_64(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_65(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_66(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_67(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_68(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_69(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_70(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_71(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_72(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_73(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_74(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_75(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_76(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_77(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_78(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_79(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_80(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_81(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_82(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_83(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_84(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_85(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_86(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_87(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_88(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_89(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_90(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_91(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_92(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_93(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_94(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_95(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_96(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_97(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_98(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_99(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_100(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_101(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_102(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_103(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_104(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_105(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_106(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_107(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_108(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_109(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_110(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_111(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_112(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_113(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_114(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_115(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_116(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_117(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_118(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_119(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_120(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_121(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_122(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_123(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_124(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_125(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_126(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_127(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_128(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_129(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_130(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_131(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_132(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_133(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_134(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_135(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_136(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_137(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_138(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_139(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_140(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_141(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_142(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_143(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_144(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_145(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_146(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_147(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_148(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_149(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_150(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_151(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_152(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_153(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_154(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_155(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_156(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_157(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_158(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_159(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_160(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_161(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_162(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_163(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_164(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_165(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_166(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_167(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_168(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_169(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_170(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_171(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_172(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_173(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_174(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_175(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_176(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_177(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_178(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_179(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_180(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_181(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_182(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_183(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_184(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_185(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_186(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_187(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_188(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_189(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_190(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_191(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_192(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_193(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_194(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_195(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_196(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_197(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_198(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_199(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_200(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_201(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_202(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_203(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_204(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_205(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_206(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_207(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_208(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_209(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_210(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_211(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_212(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_213(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_214(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_215(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_216(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_217(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_218(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_219(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_220(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_221(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_222(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_223(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_224(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_225(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_226(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_227(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_228(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_229(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_230(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_231(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_232(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_233(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_234(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_235(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_236(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_237(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_238(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_239(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_240(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_241(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_242(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_243(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_244(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_245(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_246(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_247(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_248(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_249(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_250(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_251(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_252(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_253(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_254(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_255(op, st, ss, sz) 0
+# define MSGPACK_PP_SEQ_FOLD_LEFT_CHECK_MSGPACK_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, sz) 0
+#
+# define MSGPACK_PP_SEQ_FOLD_LEFT_F(op, st, ss, sz) st
+#
+# define MSGPACK_PP_SEQ_FOLD_LEFT_1(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_1(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_2(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_2(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_3(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_3(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_4(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_4(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_5(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_5(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_6(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_6(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_7(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_7(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_8(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_8(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_9(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_9(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_10(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_10(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_11(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_11(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_12(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_12(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_13(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_13(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_14(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_14(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_15(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_15(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_16(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_16(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_17(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_17(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_18(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_18(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_19(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_19(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_20(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_20(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_21(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_21(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_22(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_22(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_23(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_23(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_24(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_24(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_25(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_25(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_26(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_26(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_27(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_27(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_28(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_28(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_29(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_29(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_30(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_30(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_31(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_31(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_32(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_32(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_33(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_33(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_34(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_34(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_35(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_35(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_36(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_36(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_37(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_37(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_38(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_38(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_39(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_39(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_40(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_40(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_41(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_41(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_42(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_42(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_43(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_43(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_44(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_44(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_45(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_45(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_46(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_46(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_47(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_47(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_48(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_48(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_49(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_49(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_50(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_50(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_51(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_51(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_52(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_52(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_53(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_53(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_54(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_54(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_55(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_55(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_56(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_56(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_57(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_57(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_58(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_58(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_59(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_59(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_60(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_60(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_61(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_61(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_62(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_62(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_63(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_63(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_64(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_64(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_65(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_65(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_66(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_66(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_67(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_67(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_68(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_68(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_69(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_69(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_70(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_70(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_71(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_71(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_72(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_72(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_73(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_73(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_74(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_74(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_75(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_75(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_76(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_76(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_77(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_77(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_78(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_78(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_79(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_79(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_80(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_80(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_81(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_81(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_82(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_82(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_83(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_83(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_84(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_84(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_85(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_85(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_86(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_86(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_87(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_87(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_88(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_88(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_89(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_89(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_90(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_90(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_91(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_91(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_92(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_92(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_93(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_93(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_94(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_94(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_95(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_95(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_96(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_96(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_97(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_97(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_98(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_98(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_99(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_99(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_100(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_100(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_101(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_101(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_102(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_102(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_103(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_103(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_104(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_104(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_105(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_105(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_106(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_106(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_107(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_107(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_108(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_108(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_109(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_109(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_110(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_110(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_111(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_111(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_112(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_112(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_113(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_113(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_114(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_114(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_115(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_115(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_116(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_116(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_117(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_117(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_118(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_118(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_119(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_119(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_120(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_120(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_121(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_121(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_122(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_122(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_123(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_123(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_124(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_124(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_125(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_125(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_126(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_126(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_127(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_127(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_128(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_128(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_129(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_129(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_130(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_130(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_131(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_131(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_132(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_132(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_133(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_133(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_134(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_134(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_135(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_135(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_136(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_136(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_137(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_137(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_138(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_138(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_139(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_139(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_140(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_140(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_141(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_141(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_142(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_142(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_143(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_143(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_144(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_144(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_145(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_145(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_146(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_146(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_147(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_147(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_148(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_148(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_149(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_149(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_150(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_150(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_151(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_151(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_152(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_152(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_153(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_153(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_154(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_154(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_155(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_155(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_156(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_156(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_157(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_157(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_158(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_158(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_159(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_159(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_160(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_160(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_161(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_161(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_162(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_162(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_163(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_163(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_164(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_164(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_165(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_165(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_166(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_166(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_167(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_167(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_168(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_168(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_169(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_169(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_170(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_170(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_171(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_171(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_172(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_172(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_173(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_173(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_174(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_174(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_175(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_175(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_176(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_176(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_177(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_177(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_178(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_178(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_179(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_179(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_180(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_180(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_181(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_181(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_182(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_182(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_183(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_183(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_184(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_184(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_185(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_185(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_186(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_186(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_187(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_187(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_188(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_188(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_189(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_189(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_190(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_190(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_191(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_191(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_192(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_192(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_193(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_193(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_194(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_194(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_195(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_195(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_196(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_196(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_197(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_197(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_198(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_198(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_199(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_199(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_200(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_200(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_201(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_201(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_202(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_202(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_203(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_203(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_204(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_204(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_205(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_205(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_206(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_206(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_207(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_207(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_208(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_208(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_209(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_209(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_210(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_210(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_211(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_211(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_212(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_212(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_213(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_213(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_214(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_214(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_215(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_215(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_216(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_216(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_217(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_217(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_218(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_218(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_219(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_219(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_220(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_220(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_221(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_221(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_222(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_222(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_223(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_223(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_224(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_224(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_225(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_225(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_226(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_226(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_227(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_227(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_228(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_228(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_229(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_229(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_230(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_230(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_231(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_231(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_232(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_232(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_233(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_233(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_234(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_234(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_235(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_235(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_236(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_236(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_237(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_237(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_238(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_238(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_239(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_239(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_240(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_240(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_241(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_241(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_242(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_242(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_243(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_243(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_244(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_244(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_245(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_245(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_246(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_246(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_247(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_247(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_248(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_248(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_249(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_249(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_250(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_250(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_251(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_251(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_252(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_252(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_253(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_253(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_254(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_254(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_255(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_255(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_256(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, MSGPACK_PP_SEQ_SIZE(ss))
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_DMC()
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_1(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_2, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(2, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_2(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_3, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(3, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_3(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_4, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(4, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_4(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_5, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(5, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_5(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_6, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(6, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_6(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_7, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(7, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_7(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_8, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(8, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_8(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_9, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(9, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_9(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_10, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(10, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_10(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_11, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(11, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_11(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_12, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(12, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_12(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_13, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(13, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_13(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_14, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(14, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_14(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_15, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(15, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_15(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_16, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(16, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_16(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_17, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(17, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_17(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_18, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(18, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_18(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_19, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(19, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_19(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_20, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(20, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_20(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_21, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(21, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_21(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_22, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(22, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_22(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_23, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(23, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_23(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_24, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(24, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_24(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_25, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(25, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_25(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_26, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(26, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_26(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_27, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(27, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_27(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_28, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(28, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_28(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_29, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(29, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_29(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_30, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(30, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_30(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_31, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(31, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_31(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_32, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(32, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_32(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_33, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(33, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_33(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_34, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(34, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_34(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_35, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(35, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_35(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_36, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(36, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_36(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_37, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(37, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_37(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_38, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(38, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_38(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_39, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(39, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_39(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_40, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(40, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_40(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_41, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(41, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_41(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_42, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(42, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_42(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_43, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(43, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_43(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_44, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(44, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_44(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_45, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(45, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_45(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_46, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(46, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_46(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_47, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(47, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_47(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_48, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(48, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_48(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_49, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(49, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_49(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_50, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(50, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_50(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_51, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(51, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_51(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_52, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(52, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_52(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_53, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(53, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_53(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_54, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(54, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_54(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_55, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(55, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_55(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_56, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(56, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_56(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_57, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(57, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_57(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_58, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(58, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_58(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_59, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(59, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_59(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_60, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(60, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_60(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_61, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(61, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_61(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_62, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(62, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_62(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_63, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(63, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_63(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_64, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(64, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_64(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_65, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(65, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_65(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_66, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(66, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_66(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_67, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(67, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_67(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_68, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(68, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_68(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_69, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(69, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_69(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_70, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(70, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_70(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_71, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(71, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_71(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_72, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(72, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_72(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_73, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(73, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_73(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_74, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(74, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_74(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_75, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(75, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_75(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_76, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(76, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_76(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_77, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(77, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_77(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_78, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(78, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_78(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_79, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(79, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_79(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_80, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(80, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_80(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_81, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(81, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_81(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_82, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(82, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_82(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_83, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(83, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_83(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_84, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(84, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_84(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_85, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(85, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_85(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_86, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(86, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_86(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_87, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(87, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_87(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_88, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(88, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_88(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_89, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(89, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_89(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_90, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(90, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_90(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_91, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(91, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_91(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_92, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(92, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_92(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_93, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(93, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_93(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_94, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(94, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_94(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_95, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(95, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_95(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_96, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(96, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_96(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_97, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(97, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_97(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_98, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(98, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_98(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_99, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(99, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_99(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_100, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(100, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_100(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_101, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(101, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_101(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_102, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(102, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_102(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_103, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(103, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_103(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_104, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(104, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_104(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_105, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(105, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_105(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_106, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(106, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_106(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_107, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(107, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_107(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_108, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(108, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_108(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_109, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(109, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_109(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_110, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(110, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_110(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_111, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(111, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_111(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_112, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(112, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_112(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_113, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(113, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_113(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_114, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(114, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_114(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_115, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(115, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_115(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_116, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(116, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_116(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_117, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(117, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_117(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_118, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(118, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_118(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_119, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(119, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_119(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_120, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(120, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_120(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_121, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(121, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_121(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_122, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(122, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_122(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_123, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(123, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_123(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_124, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(124, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_124(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_125, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(125, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_125(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_126, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(126, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_126(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_127, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(127, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_127(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_128, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(128, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_128(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_129, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(129, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_129(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_130, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(130, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_130(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_131, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(131, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_131(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_132, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(132, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_132(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_133, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(133, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_133(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_134, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(134, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_134(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_135, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(135, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_135(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_136, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(136, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_136(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_137, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(137, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_137(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_138, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(138, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_138(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_139, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(139, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_139(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_140, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(140, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_140(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_141, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(141, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_141(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_142, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(142, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_142(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_143, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(143, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_143(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_144, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(144, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_144(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_145, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(145, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_145(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_146, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(146, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_146(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_147, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(147, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_147(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_148, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(148, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_148(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_149, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(149, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_149(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_150, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(150, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_150(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_151, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(151, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_151(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_152, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(152, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_152(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_153, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(153, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_153(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_154, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(154, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_154(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_155, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(155, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_155(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_156, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(156, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_156(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_157, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(157, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_157(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_158, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(158, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_158(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_159, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(159, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_159(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_160, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(160, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_160(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_161, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(161, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_161(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_162, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(162, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_162(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_163, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(163, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_163(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_164, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(164, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_164(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_165, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(165, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_165(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_166, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(166, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_166(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_167, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(167, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_167(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_168, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(168, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_168(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_169, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(169, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_169(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_170, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(170, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_170(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_171, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(171, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_171(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_172, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(172, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_172(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_173, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(173, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_173(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_174, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(174, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_174(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_175, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(175, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_175(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_176, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(176, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_176(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_177, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(177, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_177(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_178, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(178, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_178(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_179, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(179, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_179(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_180, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(180, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_180(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_181, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(181, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_181(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_182, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(182, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_182(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_183, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(183, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_183(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_184, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(184, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_184(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_185, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(185, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_185(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_186, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(186, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_186(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_187, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(187, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_187(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_188, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(188, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_188(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_189, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(189, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_189(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_190, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(190, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_190(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_191, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(191, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_191(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_192, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(192, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_192(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_193, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(193, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_193(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_194, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(194, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_194(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_195, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(195, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_195(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_196, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(196, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_196(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_197, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(197, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_197(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_198, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(198, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_198(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_199, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(199, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_199(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_200, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(200, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_200(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_201, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(201, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_201(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_202, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(202, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_202(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_203, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(203, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_203(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_204, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(204, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_204(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_205, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(205, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_205(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_206, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(206, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_206(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_207, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(207, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_207(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_208, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(208, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_208(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_209, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(209, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_209(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_210, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(210, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_210(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_211, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(211, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_211(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_212, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(212, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_212(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_213, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(213, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_213(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_214, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(214, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_214(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_215, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(215, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_215(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_216, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(216, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_216(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_217, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(217, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_217(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_218, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(218, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_218(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_219, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(219, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_219(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_220, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(220, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_220(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_221, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(221, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_221(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_222, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(222, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_222(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_223, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(223, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_223(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_224, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(224, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_224(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_225, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(225, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_225(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_226, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(226, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_226(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_227, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(227, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_227(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_228, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(228, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_228(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_229, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(229, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_229(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_230, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(230, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_230(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_231, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(231, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_231(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_232, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(232, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_232(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_233, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(233, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_233(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_234, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(234, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_234(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_235, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(235, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_235(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_236, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(236, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_236(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_237, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(237, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_237(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_238, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(238, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_238(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_239, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(239, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_239(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_240, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(240, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_240(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_241, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(241, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_241(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_242, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(242, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_242(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_243, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(243, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_243(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_244, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(244, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_244(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_245, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(245, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_245(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_246, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(246, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_246(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_247, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(247, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_247(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_248, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(248, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_248(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_249, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(249, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_249(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_250, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(250, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_250(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_251, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(251, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_251(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_252, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(252, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_252(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_253, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(253, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_253(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_254, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(254, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_254(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_255, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(255, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_255(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_256, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(256, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_257, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op(257, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# else
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_1(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_2, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(2, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_2(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_3, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(3, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_3(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_4, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(4, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_4(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_5, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(5, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_5(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_6, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(6, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_6(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_7, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(7, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_7(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_8, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(8, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_8(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_9, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(9, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_9(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_10, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(10, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_10(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_11, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(11, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_11(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_12, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(12, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_12(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_13, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(13, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_13(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_14, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(14, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_14(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_15, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(15, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_15(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_16, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(16, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_16(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_17, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(17, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_17(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_18, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(18, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_18(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_19, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(19, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_19(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_20, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(20, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_20(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_21, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(21, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_21(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_22, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(22, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_22(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_23, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(23, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_23(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_24, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(24, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_24(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_25, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(25, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_25(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_26, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(26, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_26(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_27, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(27, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_27(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_28, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(28, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_28(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_29, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(29, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_29(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_30, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(30, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_30(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_31, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(31, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_31(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_32, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(32, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_32(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_33, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(33, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_33(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_34, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(34, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_34(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_35, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(35, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_35(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_36, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(36, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_36(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_37, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(37, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_37(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_38, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(38, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_38(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_39, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(39, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_39(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_40, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(40, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_40(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_41, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(41, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_41(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_42, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(42, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_42(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_43, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(43, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_43(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_44, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(44, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_44(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_45, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(45, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_45(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_46, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(46, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_46(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_47, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(47, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_47(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_48, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(48, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_48(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_49, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(49, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_49(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_50, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(50, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_50(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_51, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(51, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_51(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_52, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(52, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_52(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_53, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(53, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_53(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_54, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(54, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_54(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_55, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(55, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_55(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_56, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(56, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_56(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_57, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(57, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_57(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_58, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(58, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_58(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_59, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(59, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_59(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_60, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(60, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_60(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_61, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(61, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_61(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_62, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(62, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_62(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_63, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(63, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_63(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_64, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(64, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_64(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_65, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(65, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_65(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_66, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(66, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_66(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_67, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(67, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_67(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_68, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(68, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_68(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_69, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(69, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_69(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_70, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(70, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_70(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_71, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(71, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_71(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_72, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(72, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_72(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_73, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(73, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_73(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_74, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(74, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_74(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_75, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(75, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_75(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_76, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(76, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_76(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_77, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(77, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_77(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_78, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(78, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_78(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_79, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(79, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_79(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_80, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(80, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_80(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_81, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(81, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_81(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_82, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(82, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_82(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_83, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(83, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_83(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_84, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(84, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_84(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_85, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(85, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_85(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_86, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(86, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_86(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_87, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(87, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_87(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_88, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(88, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_88(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_89, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(89, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_89(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_90, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(90, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_90(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_91, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(91, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_91(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_92, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(92, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_92(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_93, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(93, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_93(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_94, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(94, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_94(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_95, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(95, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_95(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_96, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(96, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_96(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_97, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(97, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_97(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_98, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(98, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_98(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_99, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(99, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_99(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_100, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(100, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_100(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_101, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(101, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_101(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_102, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(102, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_102(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_103, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(103, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_103(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_104, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(104, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_104(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_105, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(105, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_105(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_106, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(106, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_106(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_107, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(107, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_107(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_108, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(108, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_108(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_109, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(109, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_109(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_110, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(110, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_110(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_111, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(111, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_111(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_112, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(112, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_112(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_113, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(113, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_113(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_114, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(114, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_114(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_115, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(115, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_115(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_116, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(116, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_116(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_117, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(117, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_117(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_118, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(118, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_118(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_119, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(119, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_119(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_120, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(120, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_120(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_121, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(121, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_121(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_122, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(122, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_122(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_123, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(123, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_123(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_124, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(124, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_124(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_125, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(125, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_125(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_126, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(126, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_126(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_127, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(127, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_127(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_128, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(128, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_128(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_129, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(129, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_129(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_130, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(130, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_130(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_131, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(131, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_131(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_132, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(132, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_132(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_133, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(133, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_133(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_134, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(134, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_134(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_135, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(135, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_135(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_136, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(136, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_136(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_137, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(137, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_137(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_138, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(138, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_138(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_139, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(139, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_139(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_140, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(140, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_140(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_141, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(141, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_141(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_142, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(142, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_142(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_143, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(143, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_143(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_144, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(144, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_144(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_145, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(145, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_145(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_146, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(146, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_146(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_147, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(147, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_147(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_148, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(148, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_148(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_149, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(149, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_149(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_150, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(150, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_150(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_151, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(151, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_151(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_152, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(152, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_152(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_153, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(153, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_153(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_154, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(154, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_154(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_155, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(155, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_155(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_156, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(156, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_156(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_157, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(157, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_157(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_158, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(158, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_158(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_159, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(159, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_159(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_160, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(160, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_160(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_161, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(161, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_161(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_162, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(162, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_162(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_163, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(163, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_163(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_164, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(164, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_164(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_165, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(165, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_165(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_166, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(166, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_166(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_167, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(167, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_167(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_168, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(168, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_168(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_169, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(169, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_169(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_170, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(170, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_170(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_171, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(171, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_171(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_172, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(172, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_172(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_173, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(173, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_173(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_174, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(174, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_174(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_175, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(175, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_175(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_176, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(176, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_176(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_177, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(177, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_177(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_178, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(178, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_178(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_179, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(179, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_179(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_180, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(180, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_180(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_181, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(181, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_181(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_182, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(182, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_182(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_183, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(183, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_183(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_184, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(184, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_184(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_185, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(185, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_185(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_186, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(186, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_186(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_187, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(187, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_187(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_188, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(188, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_188(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_189, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(189, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_189(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_190, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(190, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_190(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_191, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(191, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_191(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_192, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(192, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_192(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_193, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(193, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_193(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_194, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(194, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_194(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_195, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(195, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_195(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_196, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(196, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_196(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_197, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(197, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_197(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_198, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(198, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_198(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_199, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(199, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_199(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_200, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(200, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_200(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_201, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(201, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_201(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_202, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(202, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_202(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_203, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(203, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_203(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_204, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(204, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_204(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_205, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(205, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_205(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_206, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(206, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_206(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_207, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(207, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_207(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_208, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(208, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_208(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_209, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(209, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_209(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_210, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(210, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_210(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_211, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(211, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_211(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_212, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(212, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_212(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_213, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(213, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_213(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_214, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(214, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_214(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_215, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(215, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_215(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_216, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(216, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_216(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_217, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(217, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_217(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_218, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(218, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_218(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_219, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(219, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_219(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_220, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(220, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_220(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_221, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(221, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_221(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_222, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(222, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_222(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_223, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(223, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_223(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_224, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(224, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_224(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_225, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(225, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_225(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_226, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(226, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_226(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_227, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(227, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_227(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_228, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(228, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_228(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_229, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(229, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_229(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_230, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(230, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_230(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_231, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(231, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_231(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_232, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(232, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_232(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_233, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(233, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_233(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_234, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(234, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_234(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_235, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(235, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_235(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_236, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(236, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_236(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_237, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(237, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_237(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_238, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(238, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_238(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_239, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(239, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_239(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_240, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(240, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_240(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_241, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(241, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_241(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_242, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(242, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_242(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_243, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(243, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_243(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_244, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(244, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_244(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_245, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(245, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_245(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_246, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(246, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_246(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_247, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(247, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_247(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_248, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(248, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_248(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_249, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(249, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_249(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_250, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(250, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_250(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_251, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(251, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_251(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_252, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(252, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_252(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_253, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(253, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_253(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_254, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(254, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_254(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_255, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(255, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_255(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_256, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(256, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# define MSGPACK_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, sz) MSGPACK_PP_IF(MSGPACK_PP_DEC(sz), MSGPACK_PP_SEQ_FOLD_LEFT_I_257, MSGPACK_PP_SEQ_FOLD_LEFT_F)(op, op##(257, st, MSGPACK_PP_SEQ_HEAD(ss)), MSGPACK_PP_SEQ_TAIL(ss), MSGPACK_PP_DEC(sz))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/seq/fold_right.hpp b/third_party/msgpack/include/msgpack/preprocessor/seq/fold_right.hpp
new file mode 100644
index 0000000000..b9411562c8
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/seq/fold_right.hpp
@@ -0,0 +1,288 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SEQ_FOLD_RIGHT_HPP
+# define MSGPACK_PREPROCESSOR_SEQ_FOLD_RIGHT_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/detail/auto_rec.hpp>
+# include <msgpack/preprocessor/seq/fold_left.hpp>
+# include <msgpack/preprocessor/seq/reverse.hpp>
+# include <msgpack/preprocessor/seq/seq.hpp>
+#
+# /* MSGPACK_PP_SEQ_FOLD_RIGHT */
+#
+# if 0
+# define MSGPACK_PP_SEQ_FOLD_RIGHT(op, state, seq) ...
+# endif
+#
+# define MSGPACK_PP_SEQ_FOLD_RIGHT MSGPACK_PP_CAT(MSGPACK_PP_SEQ_FOLD_RIGHT_, MSGPACK_PP_AUTO_REC(MSGPACK_PP_SEQ_FOLD_LEFT_P, 256))
+#
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_257(op, st, ss) MSGPACK_PP_ERROR(0x0005)
+#
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_1(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_1(op, st, MSGPACK_PP_SEQ_REVERSE_S(2, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_2(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_2(op, st, MSGPACK_PP_SEQ_REVERSE_S(3, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_3(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_3(op, st, MSGPACK_PP_SEQ_REVERSE_S(4, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_4(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_4(op, st, MSGPACK_PP_SEQ_REVERSE_S(5, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_5(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_5(op, st, MSGPACK_PP_SEQ_REVERSE_S(6, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_6(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_6(op, st, MSGPACK_PP_SEQ_REVERSE_S(7, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_7(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_7(op, st, MSGPACK_PP_SEQ_REVERSE_S(8, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_8(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_8(op, st, MSGPACK_PP_SEQ_REVERSE_S(9, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_9(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_9(op, st, MSGPACK_PP_SEQ_REVERSE_S(10, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_10(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_10(op, st, MSGPACK_PP_SEQ_REVERSE_S(11, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_11(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_11(op, st, MSGPACK_PP_SEQ_REVERSE_S(12, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_12(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_12(op, st, MSGPACK_PP_SEQ_REVERSE_S(13, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_13(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_13(op, st, MSGPACK_PP_SEQ_REVERSE_S(14, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_14(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_14(op, st, MSGPACK_PP_SEQ_REVERSE_S(15, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_15(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_15(op, st, MSGPACK_PP_SEQ_REVERSE_S(16, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_16(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_16(op, st, MSGPACK_PP_SEQ_REVERSE_S(17, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_17(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_17(op, st, MSGPACK_PP_SEQ_REVERSE_S(18, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_18(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_18(op, st, MSGPACK_PP_SEQ_REVERSE_S(19, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_19(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_19(op, st, MSGPACK_PP_SEQ_REVERSE_S(20, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_20(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_20(op, st, MSGPACK_PP_SEQ_REVERSE_S(21, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_21(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_21(op, st, MSGPACK_PP_SEQ_REVERSE_S(22, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_22(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_22(op, st, MSGPACK_PP_SEQ_REVERSE_S(23, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_23(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_23(op, st, MSGPACK_PP_SEQ_REVERSE_S(24, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_24(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_24(op, st, MSGPACK_PP_SEQ_REVERSE_S(25, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_25(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_25(op, st, MSGPACK_PP_SEQ_REVERSE_S(26, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_26(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_26(op, st, MSGPACK_PP_SEQ_REVERSE_S(27, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_27(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_27(op, st, MSGPACK_PP_SEQ_REVERSE_S(28, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_28(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_28(op, st, MSGPACK_PP_SEQ_REVERSE_S(29, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_29(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_29(op, st, MSGPACK_PP_SEQ_REVERSE_S(30, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_30(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_30(op, st, MSGPACK_PP_SEQ_REVERSE_S(31, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_31(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_31(op, st, MSGPACK_PP_SEQ_REVERSE_S(32, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_32(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_32(op, st, MSGPACK_PP_SEQ_REVERSE_S(33, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_33(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_33(op, st, MSGPACK_PP_SEQ_REVERSE_S(34, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_34(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_34(op, st, MSGPACK_PP_SEQ_REVERSE_S(35, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_35(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_35(op, st, MSGPACK_PP_SEQ_REVERSE_S(36, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_36(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_36(op, st, MSGPACK_PP_SEQ_REVERSE_S(37, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_37(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_37(op, st, MSGPACK_PP_SEQ_REVERSE_S(38, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_38(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_38(op, st, MSGPACK_PP_SEQ_REVERSE_S(39, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_39(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_39(op, st, MSGPACK_PP_SEQ_REVERSE_S(40, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_40(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_40(op, st, MSGPACK_PP_SEQ_REVERSE_S(41, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_41(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_41(op, st, MSGPACK_PP_SEQ_REVERSE_S(42, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_42(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_42(op, st, MSGPACK_PP_SEQ_REVERSE_S(43, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_43(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_43(op, st, MSGPACK_PP_SEQ_REVERSE_S(44, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_44(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_44(op, st, MSGPACK_PP_SEQ_REVERSE_S(45, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_45(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_45(op, st, MSGPACK_PP_SEQ_REVERSE_S(46, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_46(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_46(op, st, MSGPACK_PP_SEQ_REVERSE_S(47, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_47(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_47(op, st, MSGPACK_PP_SEQ_REVERSE_S(48, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_48(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_48(op, st, MSGPACK_PP_SEQ_REVERSE_S(49, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_49(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_49(op, st, MSGPACK_PP_SEQ_REVERSE_S(50, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_50(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_50(op, st, MSGPACK_PP_SEQ_REVERSE_S(51, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_51(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_51(op, st, MSGPACK_PP_SEQ_REVERSE_S(52, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_52(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_52(op, st, MSGPACK_PP_SEQ_REVERSE_S(53, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_53(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_53(op, st, MSGPACK_PP_SEQ_REVERSE_S(54, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_54(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_54(op, st, MSGPACK_PP_SEQ_REVERSE_S(55, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_55(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_55(op, st, MSGPACK_PP_SEQ_REVERSE_S(56, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_56(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_56(op, st, MSGPACK_PP_SEQ_REVERSE_S(57, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_57(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_57(op, st, MSGPACK_PP_SEQ_REVERSE_S(58, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_58(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_58(op, st, MSGPACK_PP_SEQ_REVERSE_S(59, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_59(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_59(op, st, MSGPACK_PP_SEQ_REVERSE_S(60, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_60(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_60(op, st, MSGPACK_PP_SEQ_REVERSE_S(61, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_61(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_61(op, st, MSGPACK_PP_SEQ_REVERSE_S(62, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_62(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_62(op, st, MSGPACK_PP_SEQ_REVERSE_S(63, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_63(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_63(op, st, MSGPACK_PP_SEQ_REVERSE_S(64, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_64(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_64(op, st, MSGPACK_PP_SEQ_REVERSE_S(65, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_65(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_65(op, st, MSGPACK_PP_SEQ_REVERSE_S(66, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_66(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_66(op, st, MSGPACK_PP_SEQ_REVERSE_S(67, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_67(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_67(op, st, MSGPACK_PP_SEQ_REVERSE_S(68, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_68(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_68(op, st, MSGPACK_PP_SEQ_REVERSE_S(69, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_69(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_69(op, st, MSGPACK_PP_SEQ_REVERSE_S(70, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_70(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_70(op, st, MSGPACK_PP_SEQ_REVERSE_S(71, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_71(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_71(op, st, MSGPACK_PP_SEQ_REVERSE_S(72, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_72(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_72(op, st, MSGPACK_PP_SEQ_REVERSE_S(73, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_73(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_73(op, st, MSGPACK_PP_SEQ_REVERSE_S(74, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_74(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_74(op, st, MSGPACK_PP_SEQ_REVERSE_S(75, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_75(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_75(op, st, MSGPACK_PP_SEQ_REVERSE_S(76, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_76(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_76(op, st, MSGPACK_PP_SEQ_REVERSE_S(77, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_77(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_77(op, st, MSGPACK_PP_SEQ_REVERSE_S(78, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_78(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_78(op, st, MSGPACK_PP_SEQ_REVERSE_S(79, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_79(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_79(op, st, MSGPACK_PP_SEQ_REVERSE_S(80, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_80(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_80(op, st, MSGPACK_PP_SEQ_REVERSE_S(81, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_81(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_81(op, st, MSGPACK_PP_SEQ_REVERSE_S(82, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_82(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_82(op, st, MSGPACK_PP_SEQ_REVERSE_S(83, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_83(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_83(op, st, MSGPACK_PP_SEQ_REVERSE_S(84, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_84(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_84(op, st, MSGPACK_PP_SEQ_REVERSE_S(85, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_85(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_85(op, st, MSGPACK_PP_SEQ_REVERSE_S(86, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_86(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_86(op, st, MSGPACK_PP_SEQ_REVERSE_S(87, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_87(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_87(op, st, MSGPACK_PP_SEQ_REVERSE_S(88, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_88(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_88(op, st, MSGPACK_PP_SEQ_REVERSE_S(89, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_89(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_89(op, st, MSGPACK_PP_SEQ_REVERSE_S(90, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_90(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_90(op, st, MSGPACK_PP_SEQ_REVERSE_S(91, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_91(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_91(op, st, MSGPACK_PP_SEQ_REVERSE_S(92, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_92(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_92(op, st, MSGPACK_PP_SEQ_REVERSE_S(93, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_93(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_93(op, st, MSGPACK_PP_SEQ_REVERSE_S(94, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_94(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_94(op, st, MSGPACK_PP_SEQ_REVERSE_S(95, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_95(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_95(op, st, MSGPACK_PP_SEQ_REVERSE_S(96, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_96(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_96(op, st, MSGPACK_PP_SEQ_REVERSE_S(97, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_97(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_97(op, st, MSGPACK_PP_SEQ_REVERSE_S(98, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_98(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_98(op, st, MSGPACK_PP_SEQ_REVERSE_S(99, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_99(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_99(op, st, MSGPACK_PP_SEQ_REVERSE_S(100, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_100(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_100(op, st, MSGPACK_PP_SEQ_REVERSE_S(101, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_101(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_101(op, st, MSGPACK_PP_SEQ_REVERSE_S(102, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_102(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_102(op, st, MSGPACK_PP_SEQ_REVERSE_S(103, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_103(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_103(op, st, MSGPACK_PP_SEQ_REVERSE_S(104, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_104(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_104(op, st, MSGPACK_PP_SEQ_REVERSE_S(105, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_105(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_105(op, st, MSGPACK_PP_SEQ_REVERSE_S(106, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_106(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_106(op, st, MSGPACK_PP_SEQ_REVERSE_S(107, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_107(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_107(op, st, MSGPACK_PP_SEQ_REVERSE_S(108, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_108(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_108(op, st, MSGPACK_PP_SEQ_REVERSE_S(109, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_109(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_109(op, st, MSGPACK_PP_SEQ_REVERSE_S(110, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_110(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_110(op, st, MSGPACK_PP_SEQ_REVERSE_S(111, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_111(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_111(op, st, MSGPACK_PP_SEQ_REVERSE_S(112, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_112(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_112(op, st, MSGPACK_PP_SEQ_REVERSE_S(113, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_113(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_113(op, st, MSGPACK_PP_SEQ_REVERSE_S(114, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_114(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_114(op, st, MSGPACK_PP_SEQ_REVERSE_S(115, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_115(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_115(op, st, MSGPACK_PP_SEQ_REVERSE_S(116, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_116(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_116(op, st, MSGPACK_PP_SEQ_REVERSE_S(117, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_117(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_117(op, st, MSGPACK_PP_SEQ_REVERSE_S(118, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_118(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_118(op, st, MSGPACK_PP_SEQ_REVERSE_S(119, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_119(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_119(op, st, MSGPACK_PP_SEQ_REVERSE_S(120, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_120(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_120(op, st, MSGPACK_PP_SEQ_REVERSE_S(121, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_121(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_121(op, st, MSGPACK_PP_SEQ_REVERSE_S(122, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_122(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_122(op, st, MSGPACK_PP_SEQ_REVERSE_S(123, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_123(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_123(op, st, MSGPACK_PP_SEQ_REVERSE_S(124, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_124(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_124(op, st, MSGPACK_PP_SEQ_REVERSE_S(125, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_125(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_125(op, st, MSGPACK_PP_SEQ_REVERSE_S(126, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_126(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_126(op, st, MSGPACK_PP_SEQ_REVERSE_S(127, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_127(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_127(op, st, MSGPACK_PP_SEQ_REVERSE_S(128, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_128(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_128(op, st, MSGPACK_PP_SEQ_REVERSE_S(129, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_129(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_129(op, st, MSGPACK_PP_SEQ_REVERSE_S(130, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_130(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_130(op, st, MSGPACK_PP_SEQ_REVERSE_S(131, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_131(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_131(op, st, MSGPACK_PP_SEQ_REVERSE_S(132, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_132(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_132(op, st, MSGPACK_PP_SEQ_REVERSE_S(133, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_133(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_133(op, st, MSGPACK_PP_SEQ_REVERSE_S(134, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_134(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_134(op, st, MSGPACK_PP_SEQ_REVERSE_S(135, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_135(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_135(op, st, MSGPACK_PP_SEQ_REVERSE_S(136, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_136(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_136(op, st, MSGPACK_PP_SEQ_REVERSE_S(137, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_137(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_137(op, st, MSGPACK_PP_SEQ_REVERSE_S(138, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_138(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_138(op, st, MSGPACK_PP_SEQ_REVERSE_S(139, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_139(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_139(op, st, MSGPACK_PP_SEQ_REVERSE_S(140, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_140(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_140(op, st, MSGPACK_PP_SEQ_REVERSE_S(141, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_141(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_141(op, st, MSGPACK_PP_SEQ_REVERSE_S(142, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_142(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_142(op, st, MSGPACK_PP_SEQ_REVERSE_S(143, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_143(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_143(op, st, MSGPACK_PP_SEQ_REVERSE_S(144, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_144(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_144(op, st, MSGPACK_PP_SEQ_REVERSE_S(145, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_145(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_145(op, st, MSGPACK_PP_SEQ_REVERSE_S(146, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_146(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_146(op, st, MSGPACK_PP_SEQ_REVERSE_S(147, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_147(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_147(op, st, MSGPACK_PP_SEQ_REVERSE_S(148, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_148(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_148(op, st, MSGPACK_PP_SEQ_REVERSE_S(149, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_149(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_149(op, st, MSGPACK_PP_SEQ_REVERSE_S(150, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_150(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_150(op, st, MSGPACK_PP_SEQ_REVERSE_S(151, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_151(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_151(op, st, MSGPACK_PP_SEQ_REVERSE_S(152, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_152(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_152(op, st, MSGPACK_PP_SEQ_REVERSE_S(153, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_153(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_153(op, st, MSGPACK_PP_SEQ_REVERSE_S(154, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_154(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_154(op, st, MSGPACK_PP_SEQ_REVERSE_S(155, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_155(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_155(op, st, MSGPACK_PP_SEQ_REVERSE_S(156, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_156(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_156(op, st, MSGPACK_PP_SEQ_REVERSE_S(157, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_157(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_157(op, st, MSGPACK_PP_SEQ_REVERSE_S(158, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_158(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_158(op, st, MSGPACK_PP_SEQ_REVERSE_S(159, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_159(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_159(op, st, MSGPACK_PP_SEQ_REVERSE_S(160, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_160(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_160(op, st, MSGPACK_PP_SEQ_REVERSE_S(161, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_161(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_161(op, st, MSGPACK_PP_SEQ_REVERSE_S(162, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_162(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_162(op, st, MSGPACK_PP_SEQ_REVERSE_S(163, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_163(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_163(op, st, MSGPACK_PP_SEQ_REVERSE_S(164, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_164(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_164(op, st, MSGPACK_PP_SEQ_REVERSE_S(165, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_165(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_165(op, st, MSGPACK_PP_SEQ_REVERSE_S(166, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_166(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_166(op, st, MSGPACK_PP_SEQ_REVERSE_S(167, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_167(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_167(op, st, MSGPACK_PP_SEQ_REVERSE_S(168, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_168(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_168(op, st, MSGPACK_PP_SEQ_REVERSE_S(169, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_169(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_169(op, st, MSGPACK_PP_SEQ_REVERSE_S(170, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_170(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_170(op, st, MSGPACK_PP_SEQ_REVERSE_S(171, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_171(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_171(op, st, MSGPACK_PP_SEQ_REVERSE_S(172, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_172(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_172(op, st, MSGPACK_PP_SEQ_REVERSE_S(173, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_173(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_173(op, st, MSGPACK_PP_SEQ_REVERSE_S(174, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_174(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_174(op, st, MSGPACK_PP_SEQ_REVERSE_S(175, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_175(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_175(op, st, MSGPACK_PP_SEQ_REVERSE_S(176, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_176(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_176(op, st, MSGPACK_PP_SEQ_REVERSE_S(177, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_177(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_177(op, st, MSGPACK_PP_SEQ_REVERSE_S(178, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_178(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_178(op, st, MSGPACK_PP_SEQ_REVERSE_S(179, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_179(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_179(op, st, MSGPACK_PP_SEQ_REVERSE_S(180, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_180(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_180(op, st, MSGPACK_PP_SEQ_REVERSE_S(181, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_181(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_181(op, st, MSGPACK_PP_SEQ_REVERSE_S(182, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_182(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_182(op, st, MSGPACK_PP_SEQ_REVERSE_S(183, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_183(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_183(op, st, MSGPACK_PP_SEQ_REVERSE_S(184, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_184(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_184(op, st, MSGPACK_PP_SEQ_REVERSE_S(185, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_185(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_185(op, st, MSGPACK_PP_SEQ_REVERSE_S(186, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_186(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_186(op, st, MSGPACK_PP_SEQ_REVERSE_S(187, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_187(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_187(op, st, MSGPACK_PP_SEQ_REVERSE_S(188, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_188(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_188(op, st, MSGPACK_PP_SEQ_REVERSE_S(189, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_189(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_189(op, st, MSGPACK_PP_SEQ_REVERSE_S(190, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_190(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_190(op, st, MSGPACK_PP_SEQ_REVERSE_S(191, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_191(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_191(op, st, MSGPACK_PP_SEQ_REVERSE_S(192, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_192(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_192(op, st, MSGPACK_PP_SEQ_REVERSE_S(193, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_193(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_193(op, st, MSGPACK_PP_SEQ_REVERSE_S(194, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_194(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_194(op, st, MSGPACK_PP_SEQ_REVERSE_S(195, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_195(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_195(op, st, MSGPACK_PP_SEQ_REVERSE_S(196, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_196(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_196(op, st, MSGPACK_PP_SEQ_REVERSE_S(197, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_197(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_197(op, st, MSGPACK_PP_SEQ_REVERSE_S(198, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_198(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_198(op, st, MSGPACK_PP_SEQ_REVERSE_S(199, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_199(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_199(op, st, MSGPACK_PP_SEQ_REVERSE_S(200, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_200(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_200(op, st, MSGPACK_PP_SEQ_REVERSE_S(201, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_201(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_201(op, st, MSGPACK_PP_SEQ_REVERSE_S(202, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_202(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_202(op, st, MSGPACK_PP_SEQ_REVERSE_S(203, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_203(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_203(op, st, MSGPACK_PP_SEQ_REVERSE_S(204, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_204(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_204(op, st, MSGPACK_PP_SEQ_REVERSE_S(205, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_205(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_205(op, st, MSGPACK_PP_SEQ_REVERSE_S(206, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_206(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_206(op, st, MSGPACK_PP_SEQ_REVERSE_S(207, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_207(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_207(op, st, MSGPACK_PP_SEQ_REVERSE_S(208, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_208(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_208(op, st, MSGPACK_PP_SEQ_REVERSE_S(209, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_209(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_209(op, st, MSGPACK_PP_SEQ_REVERSE_S(210, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_210(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_210(op, st, MSGPACK_PP_SEQ_REVERSE_S(211, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_211(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_211(op, st, MSGPACK_PP_SEQ_REVERSE_S(212, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_212(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_212(op, st, MSGPACK_PP_SEQ_REVERSE_S(213, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_213(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_213(op, st, MSGPACK_PP_SEQ_REVERSE_S(214, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_214(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_214(op, st, MSGPACK_PP_SEQ_REVERSE_S(215, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_215(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_215(op, st, MSGPACK_PP_SEQ_REVERSE_S(216, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_216(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_216(op, st, MSGPACK_PP_SEQ_REVERSE_S(217, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_217(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_217(op, st, MSGPACK_PP_SEQ_REVERSE_S(218, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_218(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_218(op, st, MSGPACK_PP_SEQ_REVERSE_S(219, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_219(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_219(op, st, MSGPACK_PP_SEQ_REVERSE_S(220, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_220(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_220(op, st, MSGPACK_PP_SEQ_REVERSE_S(221, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_221(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_221(op, st, MSGPACK_PP_SEQ_REVERSE_S(222, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_222(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_222(op, st, MSGPACK_PP_SEQ_REVERSE_S(223, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_223(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_223(op, st, MSGPACK_PP_SEQ_REVERSE_S(224, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_224(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_224(op, st, MSGPACK_PP_SEQ_REVERSE_S(225, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_225(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_225(op, st, MSGPACK_PP_SEQ_REVERSE_S(226, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_226(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_226(op, st, MSGPACK_PP_SEQ_REVERSE_S(227, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_227(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_227(op, st, MSGPACK_PP_SEQ_REVERSE_S(228, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_228(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_228(op, st, MSGPACK_PP_SEQ_REVERSE_S(229, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_229(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_229(op, st, MSGPACK_PP_SEQ_REVERSE_S(230, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_230(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_230(op, st, MSGPACK_PP_SEQ_REVERSE_S(231, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_231(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_231(op, st, MSGPACK_PP_SEQ_REVERSE_S(232, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_232(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_232(op, st, MSGPACK_PP_SEQ_REVERSE_S(233, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_233(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_233(op, st, MSGPACK_PP_SEQ_REVERSE_S(234, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_234(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_234(op, st, MSGPACK_PP_SEQ_REVERSE_S(235, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_235(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_235(op, st, MSGPACK_PP_SEQ_REVERSE_S(236, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_236(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_236(op, st, MSGPACK_PP_SEQ_REVERSE_S(237, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_237(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_237(op, st, MSGPACK_PP_SEQ_REVERSE_S(238, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_238(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_238(op, st, MSGPACK_PP_SEQ_REVERSE_S(239, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_239(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_239(op, st, MSGPACK_PP_SEQ_REVERSE_S(240, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_240(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_240(op, st, MSGPACK_PP_SEQ_REVERSE_S(241, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_241(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_241(op, st, MSGPACK_PP_SEQ_REVERSE_S(242, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_242(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_242(op, st, MSGPACK_PP_SEQ_REVERSE_S(243, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_243(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_243(op, st, MSGPACK_PP_SEQ_REVERSE_S(244, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_244(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_244(op, st, MSGPACK_PP_SEQ_REVERSE_S(245, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_245(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_245(op, st, MSGPACK_PP_SEQ_REVERSE_S(246, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_246(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_246(op, st, MSGPACK_PP_SEQ_REVERSE_S(247, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_247(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_247(op, st, MSGPACK_PP_SEQ_REVERSE_S(248, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_248(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_248(op, st, MSGPACK_PP_SEQ_REVERSE_S(249, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_249(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_249(op, st, MSGPACK_PP_SEQ_REVERSE_S(250, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_250(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_250(op, st, MSGPACK_PP_SEQ_REVERSE_S(251, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_251(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_251(op, st, MSGPACK_PP_SEQ_REVERSE_S(252, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_252(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_252(op, st, MSGPACK_PP_SEQ_REVERSE_S(253, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_253(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_253(op, st, MSGPACK_PP_SEQ_REVERSE_S(254, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_254(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_254(op, st, MSGPACK_PP_SEQ_REVERSE_S(255, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_255(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_255(op, st, MSGPACK_PP_SEQ_REVERSE_S(256, ss), MSGPACK_PP_SEQ_SIZE(ss))
+# define MSGPACK_PP_SEQ_FOLD_RIGHT_256(op, st, ss) MSGPACK_PP_SEQ_FOLD_LEFT_I_256(op, st, MSGPACK_PP_SEQ_REVERSE_S(257, ss), MSGPACK_PP_SEQ_SIZE(ss))
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/seq/for_each.hpp b/third_party/msgpack/include/msgpack/preprocessor/seq/for_each.hpp
new file mode 100644
index 0000000000..6c678a14ea
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/seq/for_each.hpp
@@ -0,0 +1,107 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SEQ_FOR_EACH_HPP
+# define MSGPACK_PREPROCESSOR_SEQ_FOR_EACH_HPP
+#
+# include <msgpack/preprocessor/arithmetic/dec.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/control/if.hpp>
+# include <msgpack/preprocessor/control/iif.hpp>
+# include <msgpack/preprocessor/repetition/for.hpp>
+# include <msgpack/preprocessor/seq/seq.hpp>
+# include <msgpack/preprocessor/seq/size.hpp>
+# include <msgpack/preprocessor/seq/detail/is_empty.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+# include <msgpack/preprocessor/tuple/rem.hpp>
+#
+# /* MSGPACK_PP_SEQ_FOR_EACH */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_SEQ_FOR_EACH(macro, data, seq) MSGPACK_PP_SEQ_FOR_EACH_DETAIL_CHECK(macro, data, seq)
+# else
+# define MSGPACK_PP_SEQ_FOR_EACH(macro, data, seq) MSGPACK_PP_SEQ_FOR_EACH_D(macro, data, seq)
+# define MSGPACK_PP_SEQ_FOR_EACH_D(macro, data, seq) MSGPACK_PP_SEQ_FOR_EACH_DETAIL_CHECK(macro, data, seq)
+# endif
+#
+# define MSGPACK_PP_SEQ_FOR_EACH_DETAIL_CHECK_EXEC(macro, data, seq) MSGPACK_PP_FOR((macro, data, seq, MSGPACK_PP_SEQ_SIZE(seq)), MSGPACK_PP_SEQ_FOR_EACH_P, MSGPACK_PP_SEQ_FOR_EACH_O, MSGPACK_PP_SEQ_FOR_EACH_M)
+# define MSGPACK_PP_SEQ_FOR_EACH_DETAIL_CHECK_EMPTY(macro, data, seq)
+#
+# define MSGPACK_PP_SEQ_FOR_EACH_DETAIL_CHECK(macro, data, seq) \
+ MSGPACK_PP_IIF \
+ ( \
+ MSGPACK_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq), \
+ MSGPACK_PP_SEQ_FOR_EACH_DETAIL_CHECK_EXEC, \
+ MSGPACK_PP_SEQ_FOR_EACH_DETAIL_CHECK_EMPTY \
+ ) \
+ (macro, data, seq) \
+/**/
+#
+# define MSGPACK_PP_SEQ_FOR_EACH_P(r, x) MSGPACK_PP_TUPLE_ELEM(4, 3, x)
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_STRICT()
+# define MSGPACK_PP_SEQ_FOR_EACH_O(r, x) MSGPACK_PP_SEQ_FOR_EACH_O_I x
+# else
+# define MSGPACK_PP_SEQ_FOR_EACH_O(r, x) MSGPACK_PP_SEQ_FOR_EACH_O_I(MSGPACK_PP_TUPLE_ELEM(4, 0, x), MSGPACK_PP_TUPLE_ELEM(4, 1, x), MSGPACK_PP_TUPLE_ELEM(4, 2, x), MSGPACK_PP_TUPLE_ELEM(4, 3, x))
+# endif
+#
+# define MSGPACK_PP_SEQ_FOR_EACH_O_I(macro, data, seq, sz) \
+ MSGPACK_PP_SEQ_FOR_EACH_O_I_DEC(macro, data, seq, MSGPACK_PP_DEC(sz)) \
+/**/
+# define MSGPACK_PP_SEQ_FOR_EACH_O_I_DEC(macro, data, seq, sz) \
+ ( \
+ macro, \
+ data, \
+ MSGPACK_PP_IF \
+ ( \
+ sz, \
+ MSGPACK_PP_SEQ_FOR_EACH_O_I_TAIL, \
+ MSGPACK_PP_SEQ_FOR_EACH_O_I_NIL \
+ ) \
+ (seq), \
+ sz \
+ ) \
+/**/
+# define MSGPACK_PP_SEQ_FOR_EACH_O_I_TAIL(seq) MSGPACK_PP_SEQ_TAIL(seq)
+# define MSGPACK_PP_SEQ_FOR_EACH_O_I_NIL(seq) MSGPACK_PP_NIL
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_STRICT()
+# define MSGPACK_PP_SEQ_FOR_EACH_M(r, x) MSGPACK_PP_SEQ_FOR_EACH_M_IM(r, MSGPACK_PP_TUPLE_REM_4 x)
+# define MSGPACK_PP_SEQ_FOR_EACH_M_IM(r, im) MSGPACK_PP_SEQ_FOR_EACH_M_I(r, im)
+# else
+# define MSGPACK_PP_SEQ_FOR_EACH_M(r, x) MSGPACK_PP_SEQ_FOR_EACH_M_I(r, MSGPACK_PP_TUPLE_ELEM(4, 0, x), MSGPACK_PP_TUPLE_ELEM(4, 1, x), MSGPACK_PP_TUPLE_ELEM(4, 2, x), MSGPACK_PP_TUPLE_ELEM(4, 3, x))
+# endif
+#
+# define MSGPACK_PP_SEQ_FOR_EACH_M_I(r, macro, data, seq, sz) macro(r, data, MSGPACK_PP_SEQ_HEAD(seq))
+#
+# /* MSGPACK_PP_SEQ_FOR_EACH_R */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_SEQ_FOR_EACH_R(r, macro, data, seq) MSGPACK_PP_SEQ_FOR_EACH_DETAIL_CHECK_R(r, macro, data, seq)
+# else
+# define MSGPACK_PP_SEQ_FOR_EACH_R(r, macro, data, seq) MSGPACK_PP_SEQ_FOR_EACH_R_I(r, macro, data, seq)
+# define MSGPACK_PP_SEQ_FOR_EACH_R_I(r, macro, data, seq) MSGPACK_PP_SEQ_FOR_EACH_DETAIL_CHECK_R(r, macro, data, seq)
+# endif
+#
+# define MSGPACK_PP_SEQ_FOR_EACH_DETAIL_CHECK_EXEC_R(r, macro, data, seq) MSGPACK_PP_FOR_ ## r((macro, data, seq, MSGPACK_PP_SEQ_SIZE(seq)), MSGPACK_PP_SEQ_FOR_EACH_P, MSGPACK_PP_SEQ_FOR_EACH_O, MSGPACK_PP_SEQ_FOR_EACH_M)
+# define MSGPACK_PP_SEQ_FOR_EACH_DETAIL_CHECK_EMPTY_R(r, macro, data, seq)
+#
+# define MSGPACK_PP_SEQ_FOR_EACH_DETAIL_CHECK_R(r, macro, data, seq) \
+ MSGPACK_PP_IIF \
+ ( \
+ MSGPACK_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq), \
+ MSGPACK_PP_SEQ_FOR_EACH_DETAIL_CHECK_EXEC_R, \
+ MSGPACK_PP_SEQ_FOR_EACH_DETAIL_CHECK_EMPTY_R \
+ ) \
+ (r, macro, data, seq) \
+/**/
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/seq/for_each_i.hpp b/third_party/msgpack/include/msgpack/preprocessor/seq/for_each_i.hpp
new file mode 100644
index 0000000000..9828c4d20e
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/seq/for_each_i.hpp
@@ -0,0 +1,109 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SEQ_FOR_EACH_I_HPP
+# define MSGPACK_PREPROCESSOR_SEQ_FOR_EACH_I_HPP
+#
+# include <msgpack/preprocessor/arithmetic/dec.hpp>
+# include <msgpack/preprocessor/arithmetic/inc.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/control/if.hpp>
+# include <msgpack/preprocessor/control/iif.hpp>
+# include <msgpack/preprocessor/repetition/for.hpp>
+# include <msgpack/preprocessor/seq/seq.hpp>
+# include <msgpack/preprocessor/seq/size.hpp>
+# include <msgpack/preprocessor/seq/detail/is_empty.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+# include <msgpack/preprocessor/tuple/rem.hpp>
+#
+# /* MSGPACK_PP_SEQ_FOR_EACH_I */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_SEQ_FOR_EACH_I(macro, data, seq) MSGPACK_PP_SEQ_FOR_EACH_I_DETAIL_CHECK(macro, data, seq)
+# else
+# define MSGPACK_PP_SEQ_FOR_EACH_I(macro, data, seq) MSGPACK_PP_SEQ_FOR_EACH_I_I(macro, data, seq)
+# define MSGPACK_PP_SEQ_FOR_EACH_I_I(macro, data, seq) MSGPACK_PP_SEQ_FOR_EACH_I_DETAIL_CHECK(macro, data, seq)
+# endif
+#
+# define MSGPACK_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EXEC(macro, data, seq) MSGPACK_PP_FOR((macro, data, seq, 0, MSGPACK_PP_SEQ_SIZE(seq)), MSGPACK_PP_SEQ_FOR_EACH_I_P, MSGPACK_PP_SEQ_FOR_EACH_I_O, MSGPACK_PP_SEQ_FOR_EACH_I_M)
+# define MSGPACK_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EMPTY(macro, data, seq)
+#
+# define MSGPACK_PP_SEQ_FOR_EACH_I_DETAIL_CHECK(macro, data, seq) \
+ MSGPACK_PP_IIF \
+ ( \
+ MSGPACK_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq), \
+ MSGPACK_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EXEC, \
+ MSGPACK_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EMPTY \
+ ) \
+ (macro, data, seq) \
+/**/
+#
+# define MSGPACK_PP_SEQ_FOR_EACH_I_P(r, x) MSGPACK_PP_TUPLE_ELEM(5, 4, x)
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_STRICT()
+# define MSGPACK_PP_SEQ_FOR_EACH_I_O(r, x) MSGPACK_PP_SEQ_FOR_EACH_I_O_I x
+# else
+# define MSGPACK_PP_SEQ_FOR_EACH_I_O(r, x) MSGPACK_PP_SEQ_FOR_EACH_I_O_I(MSGPACK_PP_TUPLE_ELEM(5, 0, x), MSGPACK_PP_TUPLE_ELEM(5, 1, x), MSGPACK_PP_TUPLE_ELEM(5, 2, x), MSGPACK_PP_TUPLE_ELEM(5, 3, x), MSGPACK_PP_TUPLE_ELEM(5, 4, x))
+# endif
+#
+# define MSGPACK_PP_SEQ_FOR_EACH_I_O_I(macro, data, seq, i, sz) \
+ MSGPACK_PP_SEQ_FOR_EACH_I_O_I_DEC(macro, data, seq, i, MSGPACK_PP_DEC(sz)) \
+/**/
+# define MSGPACK_PP_SEQ_FOR_EACH_I_O_I_DEC(macro, data, seq, i, sz) \
+ ( \
+ macro, \
+ data, \
+ MSGPACK_PP_IF \
+ ( \
+ sz, \
+ MSGPACK_PP_SEQ_FOR_EACH_I_O_I_TAIL, \
+ MSGPACK_PP_SEQ_FOR_EACH_I_O_I_NIL \
+ ) \
+ (seq), \
+ MSGPACK_PP_INC(i), \
+ sz \
+ ) \
+/**/
+# define MSGPACK_PP_SEQ_FOR_EACH_I_O_I_TAIL(seq) MSGPACK_PP_SEQ_TAIL(seq)
+# define MSGPACK_PP_SEQ_FOR_EACH_I_O_I_NIL(seq) MSGPACK_PP_NIL
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_STRICT()
+# define MSGPACK_PP_SEQ_FOR_EACH_I_M(r, x) MSGPACK_PP_SEQ_FOR_EACH_I_M_IM(r, MSGPACK_PP_TUPLE_REM_5 x)
+# define MSGPACK_PP_SEQ_FOR_EACH_I_M_IM(r, im) MSGPACK_PP_SEQ_FOR_EACH_I_M_I(r, im)
+# else
+# define MSGPACK_PP_SEQ_FOR_EACH_I_M(r, x) MSGPACK_PP_SEQ_FOR_EACH_I_M_I(r, MSGPACK_PP_TUPLE_ELEM(5, 0, x), MSGPACK_PP_TUPLE_ELEM(5, 1, x), MSGPACK_PP_TUPLE_ELEM(5, 2, x), MSGPACK_PP_TUPLE_ELEM(5, 3, x), MSGPACK_PP_TUPLE_ELEM(5, 4, x))
+# endif
+#
+# define MSGPACK_PP_SEQ_FOR_EACH_I_M_I(r, macro, data, seq, i, sz) macro(r, data, i, MSGPACK_PP_SEQ_HEAD(seq))
+#
+# /* MSGPACK_PP_SEQ_FOR_EACH_I_R */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_SEQ_FOR_EACH_I_R(r, macro, data, seq) MSGPACK_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK(r, macro, data, seq)
+# else
+# define MSGPACK_PP_SEQ_FOR_EACH_I_R(r, macro, data, seq) MSGPACK_PP_SEQ_FOR_EACH_I_R_I(r, macro, data, seq)
+# define MSGPACK_PP_SEQ_FOR_EACH_I_R_I(r, macro, data, seq) MSGPACK_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK(r, macro, data, seq)
+# endif
+#
+# define MSGPACK_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK_EXEC(r, macro, data, seq) MSGPACK_PP_FOR_ ## r((macro, data, seq, 0, MSGPACK_PP_SEQ_SIZE(seq)), MSGPACK_PP_SEQ_FOR_EACH_I_P, MSGPACK_PP_SEQ_FOR_EACH_I_O, MSGPACK_PP_SEQ_FOR_EACH_I_M)
+# define MSGPACK_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK_EMPTY(r, macro, data, seq)
+#
+# define MSGPACK_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK(r, macro, data, seq) \
+ MSGPACK_PP_IIF \
+ ( \
+ MSGPACK_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq), \
+ MSGPACK_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK_EXEC, \
+ MSGPACK_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK_EMPTY \
+ ) \
+ (r, macro, data, seq) \
+/**/
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/seq/for_each_product.hpp b/third_party/msgpack/include/msgpack/preprocessor/seq/for_each_product.hpp
new file mode 100644
index 0000000000..0b297e22b1
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/seq/for_each_product.hpp
@@ -0,0 +1,126 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SEQ_FOR_EACH_PRODUCT_HPP
+# define MSGPACK_PREPROCESSOR_SEQ_FOR_EACH_PRODUCT_HPP
+#
+# include <msgpack/preprocessor/arithmetic/dec.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/control/if.hpp>
+# include <msgpack/preprocessor/repetition/for.hpp>
+# include <msgpack/preprocessor/seq/seq.hpp>
+# include <msgpack/preprocessor/seq/size.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+# include <msgpack/preprocessor/tuple/rem.hpp>
+#
+# /* MSGPACK_PP_SEQ_FOR_EACH_PRODUCT */
+#
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT(macro, sets) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_E(MSGPACK_PP_FOR, macro, sets)
+#
+# /* MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_R */
+#
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_R(r, macro, sets) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_E(MSGPACK_PP_FOR_ ## r, macro, sets)
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_E(impl, macro, sets) impl((MSGPACK_PP_SEQ_HEAD(sets)(nil), MSGPACK_PP_SEQ_TAIL(sets)(nil), (nil), macro), MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_0)
+# else
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_E(impl, macro, sets) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_E_I(impl, macro, sets)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_E_I(impl, macro, sets) impl((MSGPACK_PP_SEQ_HEAD(sets)(nil), MSGPACK_PP_SEQ_TAIL(sets)(nil), (nil), macro), MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_0)
+# endif
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_STRICT()
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P(r, data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P_I data
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P_I(cset, rset, res, macro) MSGPACK_PP_DEC(MSGPACK_PP_SEQ_SIZE(cset))
+# else
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P(r, data) MSGPACK_PP_DEC(MSGPACK_PP_SEQ_SIZE(MSGPACK_PP_TUPLE_ELEM(4, 0, data)))
+# endif
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O(r, data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O_I data
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O_I(cset, rset, res, macro) (MSGPACK_PP_SEQ_TAIL(cset), rset, res, macro)
+# else
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O(r, data) (MSGPACK_PP_SEQ_TAIL(MSGPACK_PP_TUPLE_ELEM(4, 0, data)), MSGPACK_PP_TUPLE_ELEM(4, 1, data), MSGPACK_PP_TUPLE_ELEM(4, 2, data), MSGPACK_PP_TUPLE_ELEM(4, 3, data))
+# endif
+#
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_C(data, i) MSGPACK_PP_IF(MSGPACK_PP_DEC(MSGPACK_PP_SEQ_SIZE(MSGPACK_PP_TUPLE_ELEM(4, 1, data))), MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_N_ ## i, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_I)
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_I(r, data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_I_I(r, MSGPACK_PP_TUPLE_ELEM(4, 0, data), MSGPACK_PP_TUPLE_ELEM(4, 1, data), MSGPACK_PP_TUPLE_ELEM(4, 2, data), MSGPACK_PP_TUPLE_ELEM(4, 3, data))
+# else
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_I(r, data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_I_IM(r, MSGPACK_PP_TUPLE_REM_4 data)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_I_IM(r, im) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_I_I(r, im)
+# endif
+#
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_I_I(r, cset, rset, res, macro) macro(r, MSGPACK_PP_SEQ_TAIL(res (MSGPACK_PP_SEQ_HEAD(cset))))
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_H(data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_H_I data
+# else
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_H(data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_H_I(MSGPACK_PP_TUPLE_ELEM(4, 0, data), MSGPACK_PP_TUPLE_ELEM(4, 1, data), MSGPACK_PP_TUPLE_ELEM(4, 2, data), MSGPACK_PP_TUPLE_ELEM(4, 3, data))
+# endif
+#
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_H_I(cset, rset, res, macro) (MSGPACK_PP_SEQ_HEAD(rset)(nil), MSGPACK_PP_SEQ_TAIL(rset), res (MSGPACK_PP_SEQ_HEAD(cset)), macro)
+#
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_0(r, data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_C(data, 0)(r, data)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_1(r, data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_C(data, 1)(r, data)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_2(r, data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_C(data, 2)(r, data)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_3(r, data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_C(data, 3)(r, data)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_4(r, data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_C(data, 4)(r, data)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_5(r, data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_C(data, 5)(r, data)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_6(r, data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_C(data, 6)(r, data)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_7(r, data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_C(data, 7)(r, data)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_8(r, data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_C(data, 8)(r, data)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_9(r, data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_C(data, 9)(r, data)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_10(r, data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_C(data, 10)(r, data)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_11(r, data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_C(data, 11)(r, data)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_12(r, data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_C(data, 12)(r, data)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_13(r, data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_C(data, 13)(r, data)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_14(r, data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_C(data, 14)(r, data)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_15(r, data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_C(data, 15)(r, data)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_16(r, data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_C(data, 16)(r, data)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_17(r, data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_C(data, 17)(r, data)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_18(r, data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_C(data, 18)(r, data)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_19(r, data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_C(data, 19)(r, data)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_20(r, data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_C(data, 20)(r, data)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_21(r, data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_C(data, 21)(r, data)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_22(r, data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_C(data, 22)(r, data)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_23(r, data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_C(data, 23)(r, data)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_24(r, data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_C(data, 24)(r, data)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_25(r, data) MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_C(data, 25)(r, data)
+#
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_N_0(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_1)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_N_1(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_2)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_N_2(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_3)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_N_3(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_4)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_N_4(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_5)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_N_5(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_6)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_N_6(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_7)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_N_7(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_8)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_N_8(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_9)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_N_9(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_10)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_N_10(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_11)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_N_11(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_12)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_N_12(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_13)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_N_13(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_14)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_N_14(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_15)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_N_15(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_16)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_N_16(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_17)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_N_17(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_18)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_N_18(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_19)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_N_19(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_20)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_N_20(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_21)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_N_21(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_22)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_N_22(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_23)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_N_23(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_24)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_N_24(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_25)
+# define MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_N_25(r, data) MSGPACK_PP_FOR_ ## r(MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_H(data), MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_P, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_O, MSGPACK_PP_SEQ_FOR_EACH_PRODUCT_M_26)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/seq/insert.hpp b/third_party/msgpack/include/msgpack/preprocessor/seq/insert.hpp
new file mode 100644
index 0000000000..afe3244c86
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/seq/insert.hpp
@@ -0,0 +1,28 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SEQ_INSERT_HPP
+# define MSGPACK_PREPROCESSOR_SEQ_INSERT_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/seq/first_n.hpp>
+# include <msgpack/preprocessor/seq/rest_n.hpp>
+#
+# /* MSGPACK_PP_SEQ_INSERT */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_SEQ_INSERT(seq, i, elem) MSGPACK_PP_SEQ_FIRST_N(i, seq) (elem) MSGPACK_PP_SEQ_REST_N(i, seq)
+# else
+# define MSGPACK_PP_SEQ_INSERT(seq, i, elem) MSGPACK_PP_SEQ_INSERT_I(seq, i, elem)
+# define MSGPACK_PP_SEQ_INSERT_I(seq, i, elem) MSGPACK_PP_SEQ_FIRST_N(i, seq) (elem) MSGPACK_PP_SEQ_REST_N(i, seq)
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/seq/pop_back.hpp b/third_party/msgpack/include/msgpack/preprocessor/seq/pop_back.hpp
new file mode 100644
index 0000000000..838c02ffb0
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/seq/pop_back.hpp
@@ -0,0 +1,29 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SEQ_POP_BACK_HPP
+# define MSGPACK_PREPROCESSOR_SEQ_POP_BACK_HPP
+#
+# include <msgpack/preprocessor/arithmetic/dec.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/seq/first_n.hpp>
+# include <msgpack/preprocessor/seq/size.hpp>
+#
+# /* MSGPACK_PP_SEQ_POP_BACK */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_SEQ_POP_BACK(seq) MSGPACK_PP_SEQ_FIRST_N(MSGPACK_PP_DEC(MSGPACK_PP_SEQ_SIZE(seq)), seq)
+# else
+# define MSGPACK_PP_SEQ_POP_BACK(seq) MSGPACK_PP_SEQ_POP_BACK_I(seq)
+# define MSGPACK_PP_SEQ_POP_BACK_I(seq) MSGPACK_PP_SEQ_FIRST_N(MSGPACK_PP_DEC(MSGPACK_PP_SEQ_SIZE(seq)), seq)
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/seq/pop_front.hpp b/third_party/msgpack/include/msgpack/preprocessor/seq/pop_front.hpp
new file mode 100644
index 0000000000..2ae59a5c9c
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/seq/pop_front.hpp
@@ -0,0 +1,27 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SEQ_POP_FRONT_HPP
+# define MSGPACK_PREPROCESSOR_SEQ_POP_FRONT_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/seq/seq.hpp>
+#
+# /* MSGPACK_PP_SEQ_POP_FRONT */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_SEQ_POP_FRONT(seq) MSGPACK_PP_SEQ_TAIL(seq)
+# else
+# define MSGPACK_PP_SEQ_POP_FRONT(seq) MSGPACK_PP_SEQ_POP_FRONT_I(seq)
+# define MSGPACK_PP_SEQ_POP_FRONT_I(seq) MSGPACK_PP_SEQ_TAIL(seq)
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/seq/push_back.hpp b/third_party/msgpack/include/msgpack/preprocessor/seq/push_back.hpp
new file mode 100644
index 0000000000..873db65959
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/seq/push_back.hpp
@@ -0,0 +1,19 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SEQ_PUSH_BACK_HPP
+# define MSGPACK_PREPROCESSOR_SEQ_PUSH_BACK_HPP
+#
+# /* MSGPACK_PP_SEQ_PUSH_BACK */
+#
+# define MSGPACK_PP_SEQ_PUSH_BACK(seq, elem) seq(elem)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/seq/push_front.hpp b/third_party/msgpack/include/msgpack/preprocessor/seq/push_front.hpp
new file mode 100644
index 0000000000..a8148f04ea
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/seq/push_front.hpp
@@ -0,0 +1,19 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SEQ_PUSH_FRONT_HPP
+# define MSGPACK_PREPROCESSOR_SEQ_PUSH_FRONT_HPP
+#
+# /* MSGPACK_PP_SEQ_PUSH_FRONT */
+#
+# define MSGPACK_PP_SEQ_PUSH_FRONT(seq, elem) (elem)seq
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/seq/remove.hpp b/third_party/msgpack/include/msgpack/preprocessor/seq/remove.hpp
new file mode 100644
index 0000000000..a87331ed67
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/seq/remove.hpp
@@ -0,0 +1,29 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SEQ_REMOVE_HPP
+# define MSGPACK_PREPROCESSOR_SEQ_REMOVE_HPP
+#
+# include <msgpack/preprocessor/arithmetic/inc.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/seq/first_n.hpp>
+# include <msgpack/preprocessor/seq/rest_n.hpp>
+#
+# /* MSGPACK_PP_SEQ_REMOVE */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_SEQ_REMOVE(seq, i) MSGPACK_PP_SEQ_FIRST_N(i, seq) MSGPACK_PP_SEQ_REST_N(MSGPACK_PP_INC(i), seq)
+# else
+# define MSGPACK_PP_SEQ_REMOVE(seq, i) MSGPACK_PP_SEQ_REMOVE_I(seq, i)
+# define MSGPACK_PP_SEQ_REMOVE_I(seq, i) MSGPACK_PP_SEQ_FIRST_N(i, seq) MSGPACK_PP_SEQ_REST_N(MSGPACK_PP_INC(i), seq)
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/seq/replace.hpp b/third_party/msgpack/include/msgpack/preprocessor/seq/replace.hpp
new file mode 100644
index 0000000000..697a62c4df
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/seq/replace.hpp
@@ -0,0 +1,45 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SEQ_REPLACE_HPP
+# define MSGPACK_PREPROCESSOR_SEQ_REPLACE_HPP
+#
+# include <msgpack/preprocessor/arithmetic/dec.hpp>
+# include <msgpack/preprocessor/arithmetic/inc.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/comparison/equal.hpp>
+# include <msgpack/preprocessor/control/iif.hpp>
+# include <msgpack/preprocessor/seq/first_n.hpp>
+# include <msgpack/preprocessor/seq/rest_n.hpp>
+# include <msgpack/preprocessor/seq/size.hpp>
+#
+# /* MSGPACK_PP_SEQ_REPLACE */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_SEQ_REPLACE(seq, i, elem) MSGPACK_PP_SEQ_FIRST_N(i, seq) (elem) MSGPACK_PP_SEQ_REPLACE_DETAIL_REST(seq, i)
+# else
+# define MSGPACK_PP_SEQ_REPLACE(seq, i, elem) MSGPACK_PP_SEQ_REPLACE_I(seq, i, elem)
+# define MSGPACK_PP_SEQ_REPLACE_I(seq, i, elem) MSGPACK_PP_SEQ_FIRST_N(i, seq) (elem) MSGPACK_PP_SEQ_REPLACE_DETAIL_REST(seq, i)
+# endif
+#
+# define MSGPACK_PP_SEQ_REPLACE_DETAIL_REST_EMPTY(seq, i)
+# define MSGPACK_PP_SEQ_REPLACE_DETAIL_REST_VALID(seq, i) MSGPACK_PP_SEQ_REST_N(MSGPACK_PP_INC(i), seq)
+# define MSGPACK_PP_SEQ_REPLACE_DETAIL_REST(seq, i) \
+ MSGPACK_PP_IIF \
+ ( \
+ MSGPACK_PP_EQUAL(i,MSGPACK_PP_DEC(MSGPACK_PP_SEQ_SIZE(seq))), \
+ MSGPACK_PP_SEQ_REPLACE_DETAIL_REST_EMPTY, \
+ MSGPACK_PP_SEQ_REPLACE_DETAIL_REST_VALID \
+ ) \
+ (seq, i) \
+/**/
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/seq/rest_n.hpp b/third_party/msgpack/include/msgpack/preprocessor/seq/rest_n.hpp
new file mode 100644
index 0000000000..f8aac0b882
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/seq/rest_n.hpp
@@ -0,0 +1,46 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SEQ_REST_N_HPP
+# define MSGPACK_PREPROCESSOR_SEQ_REST_N_HPP
+#
+# include <msgpack/preprocessor/arithmetic/inc.hpp>
+# include <msgpack/preprocessor/comparison/not_equal.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/control/expr_iif.hpp>
+# include <msgpack/preprocessor/facilities/identity.hpp>
+# include <msgpack/preprocessor/logical/bitand.hpp>
+# include <msgpack/preprocessor/seq/detail/is_empty.hpp>
+# include <msgpack/preprocessor/seq/detail/split.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+#
+# /* MSGPACK_PP_SEQ_REST_N */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_SEQ_REST_N(n, seq) MSGPACK_PP_SEQ_REST_N_DETAIL_EXEC(n, seq, MSGPACK_PP_SEQ_DETAIL_EMPTY_SIZE(seq))
+# else
+# define MSGPACK_PP_SEQ_REST_N(n, seq) MSGPACK_PP_SEQ_REST_N_I(n, seq)
+# define MSGPACK_PP_SEQ_REST_N_I(n, seq) MSGPACK_PP_SEQ_REST_N_DETAIL_EXEC(n, seq, MSGPACK_PP_SEQ_DETAIL_EMPTY_SIZE(seq))
+# endif
+#
+# define MSGPACK_PP_SEQ_REST_N_DETAIL_EXEC(n, seq, size) \
+ MSGPACK_PP_EXPR_IIF \
+ ( \
+ MSGPACK_PP_BITAND \
+ ( \
+ MSGPACK_PP_SEQ_DETAIL_IS_NOT_EMPTY_SIZE(size), \
+ MSGPACK_PP_NOT_EQUAL(n,size) \
+ ), \
+ MSGPACK_PP_TUPLE_ELEM(2, 1, MSGPACK_PP_SEQ_SPLIT(MSGPACK_PP_INC(n), MSGPACK_PP_IDENTITY( (nil) seq )))() \
+ ) \
+/**/
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/seq/reverse.hpp b/third_party/msgpack/include/msgpack/preprocessor/seq/reverse.hpp
new file mode 100644
index 0000000000..9beba27ef9
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/seq/reverse.hpp
@@ -0,0 +1,39 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SEQ_REVERSE_HPP
+# define MSGPACK_PREPROCESSOR_SEQ_REVERSE_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/facilities/empty.hpp>
+# include <msgpack/preprocessor/seq/fold_left.hpp>
+#
+# /* MSGPACK_PP_SEQ_REVERSE */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_SEQ_REVERSE(seq) MSGPACK_PP_SEQ_FOLD_LEFT(MSGPACK_PP_SEQ_REVERSE_O, MSGPACK_PP_EMPTY, seq)()
+# else
+# define MSGPACK_PP_SEQ_REVERSE(seq) MSGPACK_PP_SEQ_REVERSE_I(seq)
+# define MSGPACK_PP_SEQ_REVERSE_I(seq) MSGPACK_PP_SEQ_FOLD_LEFT(MSGPACK_PP_SEQ_REVERSE_O, MSGPACK_PP_EMPTY, seq)()
+# endif
+#
+# define MSGPACK_PP_SEQ_REVERSE_O(s, state, elem) (elem) state
+#
+# /* MSGPACK_PP_SEQ_REVERSE_S */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_SEQ_REVERSE_S(s, seq) MSGPACK_PP_SEQ_FOLD_LEFT_ ## s(MSGPACK_PP_SEQ_REVERSE_O, MSGPACK_PP_EMPTY, seq)()
+# else
+# define MSGPACK_PP_SEQ_REVERSE_S(s, seq) MSGPACK_PP_SEQ_REVERSE_S_I(s, seq)
+# define MSGPACK_PP_SEQ_REVERSE_S_I(s, seq) MSGPACK_PP_SEQ_FOLD_LEFT_ ## s(MSGPACK_PP_SEQ_REVERSE_O, MSGPACK_PP_EMPTY, seq)()
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/seq/seq.hpp b/third_party/msgpack/include/msgpack/preprocessor/seq/seq.hpp
new file mode 100644
index 0000000000..c789c2cc03
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/seq/seq.hpp
@@ -0,0 +1,44 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SEQ_SEQ_HPP
+# define MSGPACK_PREPROCESSOR_SEQ_SEQ_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/seq/elem.hpp>
+#
+# /* MSGPACK_PP_SEQ_HEAD */
+#
+# define MSGPACK_PP_SEQ_HEAD(seq) MSGPACK_PP_SEQ_ELEM(0, seq)
+#
+# /* MSGPACK_PP_SEQ_TAIL */
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_SEQ_TAIL(seq) MSGPACK_PP_SEQ_TAIL_1((seq))
+# define MSGPACK_PP_SEQ_TAIL_1(par) MSGPACK_PP_SEQ_TAIL_2 ## par
+# define MSGPACK_PP_SEQ_TAIL_2(seq) MSGPACK_PP_SEQ_TAIL_I ## seq
+# elif MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MSVC()
+# define MSGPACK_PP_SEQ_TAIL(seq) MSGPACK_PP_SEQ_TAIL_ID(MSGPACK_PP_SEQ_TAIL_I seq)
+# define MSGPACK_PP_SEQ_TAIL_ID(id) id
+# elif MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_SEQ_TAIL(seq) MSGPACK_PP_SEQ_TAIL_D(seq)
+# define MSGPACK_PP_SEQ_TAIL_D(seq) MSGPACK_PP_SEQ_TAIL_I seq
+# else
+# define MSGPACK_PP_SEQ_TAIL(seq) MSGPACK_PP_SEQ_TAIL_I seq
+# endif
+#
+# define MSGPACK_PP_SEQ_TAIL_I(x)
+#
+# /* MSGPACK_PP_SEQ_NIL */
+#
+# define MSGPACK_PP_SEQ_NIL(x) (x)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/seq/size.hpp b/third_party/msgpack/include/msgpack/preprocessor/seq/size.hpp
new file mode 100644
index 0000000000..0e04baf42a
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/seq/size.hpp
@@ -0,0 +1,548 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SEQ_SIZE_HPP
+# define MSGPACK_PREPROCESSOR_SEQ_SIZE_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_SEQ_SIZE(seq) MSGPACK_PP_SEQ_SIZE_I((seq))
+# define MSGPACK_PP_SEQ_SIZE_I(par) MSGPACK_PP_SEQ_SIZE_II ## par
+# define MSGPACK_PP_SEQ_SIZE_II(seq) MSGPACK_PP_CAT(MSGPACK_PP_SEQ_SIZE_, MSGPACK_PP_SEQ_SIZE_0 ## seq)
+# elif MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG() || MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MSVC()
+# define MSGPACK_PP_SEQ_SIZE(seq) MSGPACK_PP_SEQ_SIZE_I(seq)
+# define MSGPACK_PP_SEQ_SIZE_I(seq) MSGPACK_PP_CAT(MSGPACK_PP_SEQ_SIZE_, MSGPACK_PP_SEQ_SIZE_0 seq)
+# elif defined(__IBMC__) || defined(__IBMCPP__)
+# define MSGPACK_PP_SEQ_SIZE(seq) MSGPACK_PP_CAT(MSGPACK_PP_SEQ_SIZE_, MSGPACK_PP_CAT(MSGPACK_PP_SEQ_SIZE_0, seq))
+# else
+# define MSGPACK_PP_SEQ_SIZE(seq) MSGPACK_PP_CAT(MSGPACK_PP_SEQ_SIZE_, MSGPACK_PP_SEQ_SIZE_0 seq)
+# endif
+#
+# define MSGPACK_PP_SEQ_SIZE_0(_) MSGPACK_PP_SEQ_SIZE_1
+# define MSGPACK_PP_SEQ_SIZE_1(_) MSGPACK_PP_SEQ_SIZE_2
+# define MSGPACK_PP_SEQ_SIZE_2(_) MSGPACK_PP_SEQ_SIZE_3
+# define MSGPACK_PP_SEQ_SIZE_3(_) MSGPACK_PP_SEQ_SIZE_4
+# define MSGPACK_PP_SEQ_SIZE_4(_) MSGPACK_PP_SEQ_SIZE_5
+# define MSGPACK_PP_SEQ_SIZE_5(_) MSGPACK_PP_SEQ_SIZE_6
+# define MSGPACK_PP_SEQ_SIZE_6(_) MSGPACK_PP_SEQ_SIZE_7
+# define MSGPACK_PP_SEQ_SIZE_7(_) MSGPACK_PP_SEQ_SIZE_8
+# define MSGPACK_PP_SEQ_SIZE_8(_) MSGPACK_PP_SEQ_SIZE_9
+# define MSGPACK_PP_SEQ_SIZE_9(_) MSGPACK_PP_SEQ_SIZE_10
+# define MSGPACK_PP_SEQ_SIZE_10(_) MSGPACK_PP_SEQ_SIZE_11
+# define MSGPACK_PP_SEQ_SIZE_11(_) MSGPACK_PP_SEQ_SIZE_12
+# define MSGPACK_PP_SEQ_SIZE_12(_) MSGPACK_PP_SEQ_SIZE_13
+# define MSGPACK_PP_SEQ_SIZE_13(_) MSGPACK_PP_SEQ_SIZE_14
+# define MSGPACK_PP_SEQ_SIZE_14(_) MSGPACK_PP_SEQ_SIZE_15
+# define MSGPACK_PP_SEQ_SIZE_15(_) MSGPACK_PP_SEQ_SIZE_16
+# define MSGPACK_PP_SEQ_SIZE_16(_) MSGPACK_PP_SEQ_SIZE_17
+# define MSGPACK_PP_SEQ_SIZE_17(_) MSGPACK_PP_SEQ_SIZE_18
+# define MSGPACK_PP_SEQ_SIZE_18(_) MSGPACK_PP_SEQ_SIZE_19
+# define MSGPACK_PP_SEQ_SIZE_19(_) MSGPACK_PP_SEQ_SIZE_20
+# define MSGPACK_PP_SEQ_SIZE_20(_) MSGPACK_PP_SEQ_SIZE_21
+# define MSGPACK_PP_SEQ_SIZE_21(_) MSGPACK_PP_SEQ_SIZE_22
+# define MSGPACK_PP_SEQ_SIZE_22(_) MSGPACK_PP_SEQ_SIZE_23
+# define MSGPACK_PP_SEQ_SIZE_23(_) MSGPACK_PP_SEQ_SIZE_24
+# define MSGPACK_PP_SEQ_SIZE_24(_) MSGPACK_PP_SEQ_SIZE_25
+# define MSGPACK_PP_SEQ_SIZE_25(_) MSGPACK_PP_SEQ_SIZE_26
+# define MSGPACK_PP_SEQ_SIZE_26(_) MSGPACK_PP_SEQ_SIZE_27
+# define MSGPACK_PP_SEQ_SIZE_27(_) MSGPACK_PP_SEQ_SIZE_28
+# define MSGPACK_PP_SEQ_SIZE_28(_) MSGPACK_PP_SEQ_SIZE_29
+# define MSGPACK_PP_SEQ_SIZE_29(_) MSGPACK_PP_SEQ_SIZE_30
+# define MSGPACK_PP_SEQ_SIZE_30(_) MSGPACK_PP_SEQ_SIZE_31
+# define MSGPACK_PP_SEQ_SIZE_31(_) MSGPACK_PP_SEQ_SIZE_32
+# define MSGPACK_PP_SEQ_SIZE_32(_) MSGPACK_PP_SEQ_SIZE_33
+# define MSGPACK_PP_SEQ_SIZE_33(_) MSGPACK_PP_SEQ_SIZE_34
+# define MSGPACK_PP_SEQ_SIZE_34(_) MSGPACK_PP_SEQ_SIZE_35
+# define MSGPACK_PP_SEQ_SIZE_35(_) MSGPACK_PP_SEQ_SIZE_36
+# define MSGPACK_PP_SEQ_SIZE_36(_) MSGPACK_PP_SEQ_SIZE_37
+# define MSGPACK_PP_SEQ_SIZE_37(_) MSGPACK_PP_SEQ_SIZE_38
+# define MSGPACK_PP_SEQ_SIZE_38(_) MSGPACK_PP_SEQ_SIZE_39
+# define MSGPACK_PP_SEQ_SIZE_39(_) MSGPACK_PP_SEQ_SIZE_40
+# define MSGPACK_PP_SEQ_SIZE_40(_) MSGPACK_PP_SEQ_SIZE_41
+# define MSGPACK_PP_SEQ_SIZE_41(_) MSGPACK_PP_SEQ_SIZE_42
+# define MSGPACK_PP_SEQ_SIZE_42(_) MSGPACK_PP_SEQ_SIZE_43
+# define MSGPACK_PP_SEQ_SIZE_43(_) MSGPACK_PP_SEQ_SIZE_44
+# define MSGPACK_PP_SEQ_SIZE_44(_) MSGPACK_PP_SEQ_SIZE_45
+# define MSGPACK_PP_SEQ_SIZE_45(_) MSGPACK_PP_SEQ_SIZE_46
+# define MSGPACK_PP_SEQ_SIZE_46(_) MSGPACK_PP_SEQ_SIZE_47
+# define MSGPACK_PP_SEQ_SIZE_47(_) MSGPACK_PP_SEQ_SIZE_48
+# define MSGPACK_PP_SEQ_SIZE_48(_) MSGPACK_PP_SEQ_SIZE_49
+# define MSGPACK_PP_SEQ_SIZE_49(_) MSGPACK_PP_SEQ_SIZE_50
+# define MSGPACK_PP_SEQ_SIZE_50(_) MSGPACK_PP_SEQ_SIZE_51
+# define MSGPACK_PP_SEQ_SIZE_51(_) MSGPACK_PP_SEQ_SIZE_52
+# define MSGPACK_PP_SEQ_SIZE_52(_) MSGPACK_PP_SEQ_SIZE_53
+# define MSGPACK_PP_SEQ_SIZE_53(_) MSGPACK_PP_SEQ_SIZE_54
+# define MSGPACK_PP_SEQ_SIZE_54(_) MSGPACK_PP_SEQ_SIZE_55
+# define MSGPACK_PP_SEQ_SIZE_55(_) MSGPACK_PP_SEQ_SIZE_56
+# define MSGPACK_PP_SEQ_SIZE_56(_) MSGPACK_PP_SEQ_SIZE_57
+# define MSGPACK_PP_SEQ_SIZE_57(_) MSGPACK_PP_SEQ_SIZE_58
+# define MSGPACK_PP_SEQ_SIZE_58(_) MSGPACK_PP_SEQ_SIZE_59
+# define MSGPACK_PP_SEQ_SIZE_59(_) MSGPACK_PP_SEQ_SIZE_60
+# define MSGPACK_PP_SEQ_SIZE_60(_) MSGPACK_PP_SEQ_SIZE_61
+# define MSGPACK_PP_SEQ_SIZE_61(_) MSGPACK_PP_SEQ_SIZE_62
+# define MSGPACK_PP_SEQ_SIZE_62(_) MSGPACK_PP_SEQ_SIZE_63
+# define MSGPACK_PP_SEQ_SIZE_63(_) MSGPACK_PP_SEQ_SIZE_64
+# define MSGPACK_PP_SEQ_SIZE_64(_) MSGPACK_PP_SEQ_SIZE_65
+# define MSGPACK_PP_SEQ_SIZE_65(_) MSGPACK_PP_SEQ_SIZE_66
+# define MSGPACK_PP_SEQ_SIZE_66(_) MSGPACK_PP_SEQ_SIZE_67
+# define MSGPACK_PP_SEQ_SIZE_67(_) MSGPACK_PP_SEQ_SIZE_68
+# define MSGPACK_PP_SEQ_SIZE_68(_) MSGPACK_PP_SEQ_SIZE_69
+# define MSGPACK_PP_SEQ_SIZE_69(_) MSGPACK_PP_SEQ_SIZE_70
+# define MSGPACK_PP_SEQ_SIZE_70(_) MSGPACK_PP_SEQ_SIZE_71
+# define MSGPACK_PP_SEQ_SIZE_71(_) MSGPACK_PP_SEQ_SIZE_72
+# define MSGPACK_PP_SEQ_SIZE_72(_) MSGPACK_PP_SEQ_SIZE_73
+# define MSGPACK_PP_SEQ_SIZE_73(_) MSGPACK_PP_SEQ_SIZE_74
+# define MSGPACK_PP_SEQ_SIZE_74(_) MSGPACK_PP_SEQ_SIZE_75
+# define MSGPACK_PP_SEQ_SIZE_75(_) MSGPACK_PP_SEQ_SIZE_76
+# define MSGPACK_PP_SEQ_SIZE_76(_) MSGPACK_PP_SEQ_SIZE_77
+# define MSGPACK_PP_SEQ_SIZE_77(_) MSGPACK_PP_SEQ_SIZE_78
+# define MSGPACK_PP_SEQ_SIZE_78(_) MSGPACK_PP_SEQ_SIZE_79
+# define MSGPACK_PP_SEQ_SIZE_79(_) MSGPACK_PP_SEQ_SIZE_80
+# define MSGPACK_PP_SEQ_SIZE_80(_) MSGPACK_PP_SEQ_SIZE_81
+# define MSGPACK_PP_SEQ_SIZE_81(_) MSGPACK_PP_SEQ_SIZE_82
+# define MSGPACK_PP_SEQ_SIZE_82(_) MSGPACK_PP_SEQ_SIZE_83
+# define MSGPACK_PP_SEQ_SIZE_83(_) MSGPACK_PP_SEQ_SIZE_84
+# define MSGPACK_PP_SEQ_SIZE_84(_) MSGPACK_PP_SEQ_SIZE_85
+# define MSGPACK_PP_SEQ_SIZE_85(_) MSGPACK_PP_SEQ_SIZE_86
+# define MSGPACK_PP_SEQ_SIZE_86(_) MSGPACK_PP_SEQ_SIZE_87
+# define MSGPACK_PP_SEQ_SIZE_87(_) MSGPACK_PP_SEQ_SIZE_88
+# define MSGPACK_PP_SEQ_SIZE_88(_) MSGPACK_PP_SEQ_SIZE_89
+# define MSGPACK_PP_SEQ_SIZE_89(_) MSGPACK_PP_SEQ_SIZE_90
+# define MSGPACK_PP_SEQ_SIZE_90(_) MSGPACK_PP_SEQ_SIZE_91
+# define MSGPACK_PP_SEQ_SIZE_91(_) MSGPACK_PP_SEQ_SIZE_92
+# define MSGPACK_PP_SEQ_SIZE_92(_) MSGPACK_PP_SEQ_SIZE_93
+# define MSGPACK_PP_SEQ_SIZE_93(_) MSGPACK_PP_SEQ_SIZE_94
+# define MSGPACK_PP_SEQ_SIZE_94(_) MSGPACK_PP_SEQ_SIZE_95
+# define MSGPACK_PP_SEQ_SIZE_95(_) MSGPACK_PP_SEQ_SIZE_96
+# define MSGPACK_PP_SEQ_SIZE_96(_) MSGPACK_PP_SEQ_SIZE_97
+# define MSGPACK_PP_SEQ_SIZE_97(_) MSGPACK_PP_SEQ_SIZE_98
+# define MSGPACK_PP_SEQ_SIZE_98(_) MSGPACK_PP_SEQ_SIZE_99
+# define MSGPACK_PP_SEQ_SIZE_99(_) MSGPACK_PP_SEQ_SIZE_100
+# define MSGPACK_PP_SEQ_SIZE_100(_) MSGPACK_PP_SEQ_SIZE_101
+# define MSGPACK_PP_SEQ_SIZE_101(_) MSGPACK_PP_SEQ_SIZE_102
+# define MSGPACK_PP_SEQ_SIZE_102(_) MSGPACK_PP_SEQ_SIZE_103
+# define MSGPACK_PP_SEQ_SIZE_103(_) MSGPACK_PP_SEQ_SIZE_104
+# define MSGPACK_PP_SEQ_SIZE_104(_) MSGPACK_PP_SEQ_SIZE_105
+# define MSGPACK_PP_SEQ_SIZE_105(_) MSGPACK_PP_SEQ_SIZE_106
+# define MSGPACK_PP_SEQ_SIZE_106(_) MSGPACK_PP_SEQ_SIZE_107
+# define MSGPACK_PP_SEQ_SIZE_107(_) MSGPACK_PP_SEQ_SIZE_108
+# define MSGPACK_PP_SEQ_SIZE_108(_) MSGPACK_PP_SEQ_SIZE_109
+# define MSGPACK_PP_SEQ_SIZE_109(_) MSGPACK_PP_SEQ_SIZE_110
+# define MSGPACK_PP_SEQ_SIZE_110(_) MSGPACK_PP_SEQ_SIZE_111
+# define MSGPACK_PP_SEQ_SIZE_111(_) MSGPACK_PP_SEQ_SIZE_112
+# define MSGPACK_PP_SEQ_SIZE_112(_) MSGPACK_PP_SEQ_SIZE_113
+# define MSGPACK_PP_SEQ_SIZE_113(_) MSGPACK_PP_SEQ_SIZE_114
+# define MSGPACK_PP_SEQ_SIZE_114(_) MSGPACK_PP_SEQ_SIZE_115
+# define MSGPACK_PP_SEQ_SIZE_115(_) MSGPACK_PP_SEQ_SIZE_116
+# define MSGPACK_PP_SEQ_SIZE_116(_) MSGPACK_PP_SEQ_SIZE_117
+# define MSGPACK_PP_SEQ_SIZE_117(_) MSGPACK_PP_SEQ_SIZE_118
+# define MSGPACK_PP_SEQ_SIZE_118(_) MSGPACK_PP_SEQ_SIZE_119
+# define MSGPACK_PP_SEQ_SIZE_119(_) MSGPACK_PP_SEQ_SIZE_120
+# define MSGPACK_PP_SEQ_SIZE_120(_) MSGPACK_PP_SEQ_SIZE_121
+# define MSGPACK_PP_SEQ_SIZE_121(_) MSGPACK_PP_SEQ_SIZE_122
+# define MSGPACK_PP_SEQ_SIZE_122(_) MSGPACK_PP_SEQ_SIZE_123
+# define MSGPACK_PP_SEQ_SIZE_123(_) MSGPACK_PP_SEQ_SIZE_124
+# define MSGPACK_PP_SEQ_SIZE_124(_) MSGPACK_PP_SEQ_SIZE_125
+# define MSGPACK_PP_SEQ_SIZE_125(_) MSGPACK_PP_SEQ_SIZE_126
+# define MSGPACK_PP_SEQ_SIZE_126(_) MSGPACK_PP_SEQ_SIZE_127
+# define MSGPACK_PP_SEQ_SIZE_127(_) MSGPACK_PP_SEQ_SIZE_128
+# define MSGPACK_PP_SEQ_SIZE_128(_) MSGPACK_PP_SEQ_SIZE_129
+# define MSGPACK_PP_SEQ_SIZE_129(_) MSGPACK_PP_SEQ_SIZE_130
+# define MSGPACK_PP_SEQ_SIZE_130(_) MSGPACK_PP_SEQ_SIZE_131
+# define MSGPACK_PP_SEQ_SIZE_131(_) MSGPACK_PP_SEQ_SIZE_132
+# define MSGPACK_PP_SEQ_SIZE_132(_) MSGPACK_PP_SEQ_SIZE_133
+# define MSGPACK_PP_SEQ_SIZE_133(_) MSGPACK_PP_SEQ_SIZE_134
+# define MSGPACK_PP_SEQ_SIZE_134(_) MSGPACK_PP_SEQ_SIZE_135
+# define MSGPACK_PP_SEQ_SIZE_135(_) MSGPACK_PP_SEQ_SIZE_136
+# define MSGPACK_PP_SEQ_SIZE_136(_) MSGPACK_PP_SEQ_SIZE_137
+# define MSGPACK_PP_SEQ_SIZE_137(_) MSGPACK_PP_SEQ_SIZE_138
+# define MSGPACK_PP_SEQ_SIZE_138(_) MSGPACK_PP_SEQ_SIZE_139
+# define MSGPACK_PP_SEQ_SIZE_139(_) MSGPACK_PP_SEQ_SIZE_140
+# define MSGPACK_PP_SEQ_SIZE_140(_) MSGPACK_PP_SEQ_SIZE_141
+# define MSGPACK_PP_SEQ_SIZE_141(_) MSGPACK_PP_SEQ_SIZE_142
+# define MSGPACK_PP_SEQ_SIZE_142(_) MSGPACK_PP_SEQ_SIZE_143
+# define MSGPACK_PP_SEQ_SIZE_143(_) MSGPACK_PP_SEQ_SIZE_144
+# define MSGPACK_PP_SEQ_SIZE_144(_) MSGPACK_PP_SEQ_SIZE_145
+# define MSGPACK_PP_SEQ_SIZE_145(_) MSGPACK_PP_SEQ_SIZE_146
+# define MSGPACK_PP_SEQ_SIZE_146(_) MSGPACK_PP_SEQ_SIZE_147
+# define MSGPACK_PP_SEQ_SIZE_147(_) MSGPACK_PP_SEQ_SIZE_148
+# define MSGPACK_PP_SEQ_SIZE_148(_) MSGPACK_PP_SEQ_SIZE_149
+# define MSGPACK_PP_SEQ_SIZE_149(_) MSGPACK_PP_SEQ_SIZE_150
+# define MSGPACK_PP_SEQ_SIZE_150(_) MSGPACK_PP_SEQ_SIZE_151
+# define MSGPACK_PP_SEQ_SIZE_151(_) MSGPACK_PP_SEQ_SIZE_152
+# define MSGPACK_PP_SEQ_SIZE_152(_) MSGPACK_PP_SEQ_SIZE_153
+# define MSGPACK_PP_SEQ_SIZE_153(_) MSGPACK_PP_SEQ_SIZE_154
+# define MSGPACK_PP_SEQ_SIZE_154(_) MSGPACK_PP_SEQ_SIZE_155
+# define MSGPACK_PP_SEQ_SIZE_155(_) MSGPACK_PP_SEQ_SIZE_156
+# define MSGPACK_PP_SEQ_SIZE_156(_) MSGPACK_PP_SEQ_SIZE_157
+# define MSGPACK_PP_SEQ_SIZE_157(_) MSGPACK_PP_SEQ_SIZE_158
+# define MSGPACK_PP_SEQ_SIZE_158(_) MSGPACK_PP_SEQ_SIZE_159
+# define MSGPACK_PP_SEQ_SIZE_159(_) MSGPACK_PP_SEQ_SIZE_160
+# define MSGPACK_PP_SEQ_SIZE_160(_) MSGPACK_PP_SEQ_SIZE_161
+# define MSGPACK_PP_SEQ_SIZE_161(_) MSGPACK_PP_SEQ_SIZE_162
+# define MSGPACK_PP_SEQ_SIZE_162(_) MSGPACK_PP_SEQ_SIZE_163
+# define MSGPACK_PP_SEQ_SIZE_163(_) MSGPACK_PP_SEQ_SIZE_164
+# define MSGPACK_PP_SEQ_SIZE_164(_) MSGPACK_PP_SEQ_SIZE_165
+# define MSGPACK_PP_SEQ_SIZE_165(_) MSGPACK_PP_SEQ_SIZE_166
+# define MSGPACK_PP_SEQ_SIZE_166(_) MSGPACK_PP_SEQ_SIZE_167
+# define MSGPACK_PP_SEQ_SIZE_167(_) MSGPACK_PP_SEQ_SIZE_168
+# define MSGPACK_PP_SEQ_SIZE_168(_) MSGPACK_PP_SEQ_SIZE_169
+# define MSGPACK_PP_SEQ_SIZE_169(_) MSGPACK_PP_SEQ_SIZE_170
+# define MSGPACK_PP_SEQ_SIZE_170(_) MSGPACK_PP_SEQ_SIZE_171
+# define MSGPACK_PP_SEQ_SIZE_171(_) MSGPACK_PP_SEQ_SIZE_172
+# define MSGPACK_PP_SEQ_SIZE_172(_) MSGPACK_PP_SEQ_SIZE_173
+# define MSGPACK_PP_SEQ_SIZE_173(_) MSGPACK_PP_SEQ_SIZE_174
+# define MSGPACK_PP_SEQ_SIZE_174(_) MSGPACK_PP_SEQ_SIZE_175
+# define MSGPACK_PP_SEQ_SIZE_175(_) MSGPACK_PP_SEQ_SIZE_176
+# define MSGPACK_PP_SEQ_SIZE_176(_) MSGPACK_PP_SEQ_SIZE_177
+# define MSGPACK_PP_SEQ_SIZE_177(_) MSGPACK_PP_SEQ_SIZE_178
+# define MSGPACK_PP_SEQ_SIZE_178(_) MSGPACK_PP_SEQ_SIZE_179
+# define MSGPACK_PP_SEQ_SIZE_179(_) MSGPACK_PP_SEQ_SIZE_180
+# define MSGPACK_PP_SEQ_SIZE_180(_) MSGPACK_PP_SEQ_SIZE_181
+# define MSGPACK_PP_SEQ_SIZE_181(_) MSGPACK_PP_SEQ_SIZE_182
+# define MSGPACK_PP_SEQ_SIZE_182(_) MSGPACK_PP_SEQ_SIZE_183
+# define MSGPACK_PP_SEQ_SIZE_183(_) MSGPACK_PP_SEQ_SIZE_184
+# define MSGPACK_PP_SEQ_SIZE_184(_) MSGPACK_PP_SEQ_SIZE_185
+# define MSGPACK_PP_SEQ_SIZE_185(_) MSGPACK_PP_SEQ_SIZE_186
+# define MSGPACK_PP_SEQ_SIZE_186(_) MSGPACK_PP_SEQ_SIZE_187
+# define MSGPACK_PP_SEQ_SIZE_187(_) MSGPACK_PP_SEQ_SIZE_188
+# define MSGPACK_PP_SEQ_SIZE_188(_) MSGPACK_PP_SEQ_SIZE_189
+# define MSGPACK_PP_SEQ_SIZE_189(_) MSGPACK_PP_SEQ_SIZE_190
+# define MSGPACK_PP_SEQ_SIZE_190(_) MSGPACK_PP_SEQ_SIZE_191
+# define MSGPACK_PP_SEQ_SIZE_191(_) MSGPACK_PP_SEQ_SIZE_192
+# define MSGPACK_PP_SEQ_SIZE_192(_) MSGPACK_PP_SEQ_SIZE_193
+# define MSGPACK_PP_SEQ_SIZE_193(_) MSGPACK_PP_SEQ_SIZE_194
+# define MSGPACK_PP_SEQ_SIZE_194(_) MSGPACK_PP_SEQ_SIZE_195
+# define MSGPACK_PP_SEQ_SIZE_195(_) MSGPACK_PP_SEQ_SIZE_196
+# define MSGPACK_PP_SEQ_SIZE_196(_) MSGPACK_PP_SEQ_SIZE_197
+# define MSGPACK_PP_SEQ_SIZE_197(_) MSGPACK_PP_SEQ_SIZE_198
+# define MSGPACK_PP_SEQ_SIZE_198(_) MSGPACK_PP_SEQ_SIZE_199
+# define MSGPACK_PP_SEQ_SIZE_199(_) MSGPACK_PP_SEQ_SIZE_200
+# define MSGPACK_PP_SEQ_SIZE_200(_) MSGPACK_PP_SEQ_SIZE_201
+# define MSGPACK_PP_SEQ_SIZE_201(_) MSGPACK_PP_SEQ_SIZE_202
+# define MSGPACK_PP_SEQ_SIZE_202(_) MSGPACK_PP_SEQ_SIZE_203
+# define MSGPACK_PP_SEQ_SIZE_203(_) MSGPACK_PP_SEQ_SIZE_204
+# define MSGPACK_PP_SEQ_SIZE_204(_) MSGPACK_PP_SEQ_SIZE_205
+# define MSGPACK_PP_SEQ_SIZE_205(_) MSGPACK_PP_SEQ_SIZE_206
+# define MSGPACK_PP_SEQ_SIZE_206(_) MSGPACK_PP_SEQ_SIZE_207
+# define MSGPACK_PP_SEQ_SIZE_207(_) MSGPACK_PP_SEQ_SIZE_208
+# define MSGPACK_PP_SEQ_SIZE_208(_) MSGPACK_PP_SEQ_SIZE_209
+# define MSGPACK_PP_SEQ_SIZE_209(_) MSGPACK_PP_SEQ_SIZE_210
+# define MSGPACK_PP_SEQ_SIZE_210(_) MSGPACK_PP_SEQ_SIZE_211
+# define MSGPACK_PP_SEQ_SIZE_211(_) MSGPACK_PP_SEQ_SIZE_212
+# define MSGPACK_PP_SEQ_SIZE_212(_) MSGPACK_PP_SEQ_SIZE_213
+# define MSGPACK_PP_SEQ_SIZE_213(_) MSGPACK_PP_SEQ_SIZE_214
+# define MSGPACK_PP_SEQ_SIZE_214(_) MSGPACK_PP_SEQ_SIZE_215
+# define MSGPACK_PP_SEQ_SIZE_215(_) MSGPACK_PP_SEQ_SIZE_216
+# define MSGPACK_PP_SEQ_SIZE_216(_) MSGPACK_PP_SEQ_SIZE_217
+# define MSGPACK_PP_SEQ_SIZE_217(_) MSGPACK_PP_SEQ_SIZE_218
+# define MSGPACK_PP_SEQ_SIZE_218(_) MSGPACK_PP_SEQ_SIZE_219
+# define MSGPACK_PP_SEQ_SIZE_219(_) MSGPACK_PP_SEQ_SIZE_220
+# define MSGPACK_PP_SEQ_SIZE_220(_) MSGPACK_PP_SEQ_SIZE_221
+# define MSGPACK_PP_SEQ_SIZE_221(_) MSGPACK_PP_SEQ_SIZE_222
+# define MSGPACK_PP_SEQ_SIZE_222(_) MSGPACK_PP_SEQ_SIZE_223
+# define MSGPACK_PP_SEQ_SIZE_223(_) MSGPACK_PP_SEQ_SIZE_224
+# define MSGPACK_PP_SEQ_SIZE_224(_) MSGPACK_PP_SEQ_SIZE_225
+# define MSGPACK_PP_SEQ_SIZE_225(_) MSGPACK_PP_SEQ_SIZE_226
+# define MSGPACK_PP_SEQ_SIZE_226(_) MSGPACK_PP_SEQ_SIZE_227
+# define MSGPACK_PP_SEQ_SIZE_227(_) MSGPACK_PP_SEQ_SIZE_228
+# define MSGPACK_PP_SEQ_SIZE_228(_) MSGPACK_PP_SEQ_SIZE_229
+# define MSGPACK_PP_SEQ_SIZE_229(_) MSGPACK_PP_SEQ_SIZE_230
+# define MSGPACK_PP_SEQ_SIZE_230(_) MSGPACK_PP_SEQ_SIZE_231
+# define MSGPACK_PP_SEQ_SIZE_231(_) MSGPACK_PP_SEQ_SIZE_232
+# define MSGPACK_PP_SEQ_SIZE_232(_) MSGPACK_PP_SEQ_SIZE_233
+# define MSGPACK_PP_SEQ_SIZE_233(_) MSGPACK_PP_SEQ_SIZE_234
+# define MSGPACK_PP_SEQ_SIZE_234(_) MSGPACK_PP_SEQ_SIZE_235
+# define MSGPACK_PP_SEQ_SIZE_235(_) MSGPACK_PP_SEQ_SIZE_236
+# define MSGPACK_PP_SEQ_SIZE_236(_) MSGPACK_PP_SEQ_SIZE_237
+# define MSGPACK_PP_SEQ_SIZE_237(_) MSGPACK_PP_SEQ_SIZE_238
+# define MSGPACK_PP_SEQ_SIZE_238(_) MSGPACK_PP_SEQ_SIZE_239
+# define MSGPACK_PP_SEQ_SIZE_239(_) MSGPACK_PP_SEQ_SIZE_240
+# define MSGPACK_PP_SEQ_SIZE_240(_) MSGPACK_PP_SEQ_SIZE_241
+# define MSGPACK_PP_SEQ_SIZE_241(_) MSGPACK_PP_SEQ_SIZE_242
+# define MSGPACK_PP_SEQ_SIZE_242(_) MSGPACK_PP_SEQ_SIZE_243
+# define MSGPACK_PP_SEQ_SIZE_243(_) MSGPACK_PP_SEQ_SIZE_244
+# define MSGPACK_PP_SEQ_SIZE_244(_) MSGPACK_PP_SEQ_SIZE_245
+# define MSGPACK_PP_SEQ_SIZE_245(_) MSGPACK_PP_SEQ_SIZE_246
+# define MSGPACK_PP_SEQ_SIZE_246(_) MSGPACK_PP_SEQ_SIZE_247
+# define MSGPACK_PP_SEQ_SIZE_247(_) MSGPACK_PP_SEQ_SIZE_248
+# define MSGPACK_PP_SEQ_SIZE_248(_) MSGPACK_PP_SEQ_SIZE_249
+# define MSGPACK_PP_SEQ_SIZE_249(_) MSGPACK_PP_SEQ_SIZE_250
+# define MSGPACK_PP_SEQ_SIZE_250(_) MSGPACK_PP_SEQ_SIZE_251
+# define MSGPACK_PP_SEQ_SIZE_251(_) MSGPACK_PP_SEQ_SIZE_252
+# define MSGPACK_PP_SEQ_SIZE_252(_) MSGPACK_PP_SEQ_SIZE_253
+# define MSGPACK_PP_SEQ_SIZE_253(_) MSGPACK_PP_SEQ_SIZE_254
+# define MSGPACK_PP_SEQ_SIZE_254(_) MSGPACK_PP_SEQ_SIZE_255
+# define MSGPACK_PP_SEQ_SIZE_255(_) MSGPACK_PP_SEQ_SIZE_256
+# define MSGPACK_PP_SEQ_SIZE_256(_) MSGPACK_PP_SEQ_SIZE_257
+#
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_0 0
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_1 1
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_2 2
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_3 3
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_4 4
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_5 5
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_6 6
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_7 7
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_8 8
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_9 9
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_10 10
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_11 11
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_12 12
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_13 13
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_14 14
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_15 15
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_16 16
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_17 17
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_18 18
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_19 19
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_20 20
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_21 21
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_22 22
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_23 23
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_24 24
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_25 25
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_26 26
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_27 27
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_28 28
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_29 29
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_30 30
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_31 31
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_32 32
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_33 33
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_34 34
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_35 35
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_36 36
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_37 37
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_38 38
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_39 39
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_40 40
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_41 41
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_42 42
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_43 43
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_44 44
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_45 45
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_46 46
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_47 47
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_48 48
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_49 49
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_50 50
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_51 51
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_52 52
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_53 53
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_54 54
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_55 55
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_56 56
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_57 57
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_58 58
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_59 59
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_60 60
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_61 61
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_62 62
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_63 63
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_64 64
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_65 65
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_66 66
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_67 67
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_68 68
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_69 69
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_70 70
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_71 71
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_72 72
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_73 73
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_74 74
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_75 75
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_76 76
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_77 77
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_78 78
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_79 79
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_80 80
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_81 81
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_82 82
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_83 83
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_84 84
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_85 85
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_86 86
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_87 87
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_88 88
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_89 89
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_90 90
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_91 91
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_92 92
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_93 93
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_94 94
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_95 95
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_96 96
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_97 97
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_98 98
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_99 99
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_100 100
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_101 101
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_102 102
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_103 103
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_104 104
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_105 105
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_106 106
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_107 107
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_108 108
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_109 109
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_110 110
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_111 111
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_112 112
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_113 113
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_114 114
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_115 115
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_116 116
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_117 117
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_118 118
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_119 119
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_120 120
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_121 121
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_122 122
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_123 123
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_124 124
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_125 125
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_126 126
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_127 127
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_128 128
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_129 129
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_130 130
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_131 131
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_132 132
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_133 133
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_134 134
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_135 135
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_136 136
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_137 137
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_138 138
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_139 139
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_140 140
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_141 141
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_142 142
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_143 143
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_144 144
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_145 145
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_146 146
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_147 147
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_148 148
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_149 149
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_150 150
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_151 151
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_152 152
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_153 153
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_154 154
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_155 155
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_156 156
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_157 157
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_158 158
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_159 159
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_160 160
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_161 161
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_162 162
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_163 163
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_164 164
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_165 165
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_166 166
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_167 167
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_168 168
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_169 169
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_170 170
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_171 171
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_172 172
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_173 173
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_174 174
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_175 175
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_176 176
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_177 177
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_178 178
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_179 179
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_180 180
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_181 181
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_182 182
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_183 183
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_184 184
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_185 185
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_186 186
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_187 187
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_188 188
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_189 189
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_190 190
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_191 191
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_192 192
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_193 193
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_194 194
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_195 195
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_196 196
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_197 197
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_198 198
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_199 199
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_200 200
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_201 201
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_202 202
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_203 203
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_204 204
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_205 205
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_206 206
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_207 207
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_208 208
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_209 209
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_210 210
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_211 211
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_212 212
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_213 213
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_214 214
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_215 215
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_216 216
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_217 217
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_218 218
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_219 219
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_220 220
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_221 221
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_222 222
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_223 223
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_224 224
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_225 225
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_226 226
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_227 227
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_228 228
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_229 229
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_230 230
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_231 231
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_232 232
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_233 233
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_234 234
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_235 235
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_236 236
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_237 237
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_238 238
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_239 239
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_240 240
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_241 241
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_242 242
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_243 243
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_244 244
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_245 245
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_246 246
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_247 247
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_248 248
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_249 249
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_250 250
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_251 251
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_252 252
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_253 253
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_254 254
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_255 255
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_256 256
+# define MSGPACK_PP_SEQ_SIZE_MSGPACK_PP_SEQ_SIZE_257 257
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/seq/subseq.hpp b/third_party/msgpack/include/msgpack/preprocessor/seq/subseq.hpp
new file mode 100644
index 0000000000..5941478481
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/seq/subseq.hpp
@@ -0,0 +1,28 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SEQ_SUBSEQ_HPP
+# define MSGPACK_PREPROCESSOR_SEQ_SUBSEQ_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/seq/first_n.hpp>
+# include <msgpack/preprocessor/seq/rest_n.hpp>
+#
+# /* MSGPACK_PP_SEQ_SUBSEQ */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_SEQ_SUBSEQ(seq, i, len) MSGPACK_PP_SEQ_FIRST_N(len, MSGPACK_PP_SEQ_REST_N(i, seq))
+# else
+# define MSGPACK_PP_SEQ_SUBSEQ(seq, i, len) MSGPACK_PP_SEQ_SUBSEQ_I(seq, i, len)
+# define MSGPACK_PP_SEQ_SUBSEQ_I(seq, i, len) MSGPACK_PP_SEQ_FIRST_N(len, MSGPACK_PP_SEQ_REST_N(i, seq))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/seq/to_array.hpp b/third_party/msgpack/include/msgpack/preprocessor/seq/to_array.hpp
new file mode 100644
index 0000000000..c63cd86aa4
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/seq/to_array.hpp
@@ -0,0 +1,28 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SEQ_TO_ARRAY_HPP
+# define MSGPACK_PREPROCESSOR_SEQ_TO_ARRAY_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/seq/enum.hpp>
+# include <msgpack/preprocessor/seq/size.hpp>
+#
+# /* MSGPACK_PP_SEQ_TO_ARRAY */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_SEQ_TO_ARRAY(seq) (MSGPACK_PP_SEQ_SIZE(seq), (MSGPACK_PP_SEQ_ENUM(seq)))
+# else
+# define MSGPACK_PP_SEQ_TO_ARRAY(seq) MSGPACK_PP_SEQ_TO_ARRAY_I(seq)
+# define MSGPACK_PP_SEQ_TO_ARRAY_I(seq) (MSGPACK_PP_SEQ_SIZE(seq), (MSGPACK_PP_SEQ_ENUM(seq)))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/seq/to_list.hpp b/third_party/msgpack/include/msgpack/preprocessor/seq/to_list.hpp
new file mode 100644
index 0000000000..e40866be2b
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/seq/to_list.hpp
@@ -0,0 +1,29 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2011. *
+# * (C) Copyright Edward Diener 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SEQ_TO_LIST_HPP
+# define MSGPACK_PREPROCESSOR_SEQ_TO_LIST_HPP
+#
+# include <msgpack/preprocessor/punctuation/comma.hpp>
+# include <msgpack/preprocessor/punctuation/paren.hpp>
+# include <msgpack/preprocessor/seq/detail/binary_transform.hpp>
+#
+# /* MSGPACK_PP_SEQ_TO_LIST */
+#
+# define MSGPACK_PP_SEQ_TO_LIST(seq) MSGPACK_PP_SEQ_TO_LIST_I(MSGPACK_PP_SEQ_BINARY_TRANSFORM(seq))
+# define MSGPACK_PP_SEQ_TO_LIST_I(bseq) MSGPACK_PP_SEQ_TO_LIST_A bseq MSGPACK_PP_NIL MSGPACK_PP_SEQ_TO_LIST_B bseq
+# define MSGPACK_PP_SEQ_TO_LIST_A(m, e) m(MSGPACK_PP_LPAREN() e MSGPACK_PP_COMMA() MSGPACK_PP_SEQ_TO_LIST_A_ID)
+# define MSGPACK_PP_SEQ_TO_LIST_A_ID() MSGPACK_PP_SEQ_TO_LIST_A
+# define MSGPACK_PP_SEQ_TO_LIST_B(m, e) m(MSGPACK_PP_RPAREN() MSGPACK_PP_SEQ_TO_LIST_B_ID)
+# define MSGPACK_PP_SEQ_TO_LIST_B_ID() MSGPACK_PP_SEQ_TO_LIST_B
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/seq/to_tuple.hpp b/third_party/msgpack/include/msgpack/preprocessor/seq/to_tuple.hpp
new file mode 100644
index 0000000000..b15a00cc53
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/seq/to_tuple.hpp
@@ -0,0 +1,27 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SEQ_TO_TUPLE_HPP
+# define MSGPACK_PREPROCESSOR_SEQ_TO_TUPLE_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/seq/enum.hpp>
+#
+# /* MSGPACK_PP_SEQ_TO_TUPLE */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_SEQ_TO_TUPLE(seq) (MSGPACK_PP_SEQ_ENUM(seq))
+# else
+# define MSGPACK_PP_SEQ_TO_TUPLE(seq) MSGPACK_PP_SEQ_TO_TUPLE_I(seq)
+# define MSGPACK_PP_SEQ_TO_TUPLE_I(seq) (MSGPACK_PP_SEQ_ENUM(seq))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/seq/transform.hpp b/third_party/msgpack/include/msgpack/preprocessor/seq/transform.hpp
new file mode 100644
index 0000000000..e589938d79
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/seq/transform.hpp
@@ -0,0 +1,48 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SEQ_TRANSFORM_HPP
+# define MSGPACK_PREPROCESSOR_SEQ_TRANSFORM_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/seq/fold_left.hpp>
+# include <msgpack/preprocessor/seq/seq.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+# include <msgpack/preprocessor/tuple/rem.hpp>
+#
+# /* MSGPACK_PP_SEQ_TRANSFORM */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_SEQ_TRANSFORM(op, data, seq) MSGPACK_PP_SEQ_TAIL(MSGPACK_PP_TUPLE_ELEM(3, 2, MSGPACK_PP_SEQ_FOLD_LEFT(MSGPACK_PP_SEQ_TRANSFORM_O, (op, data, (nil)), seq)))
+# else
+# define MSGPACK_PP_SEQ_TRANSFORM(op, data, seq) MSGPACK_PP_SEQ_TRANSFORM_I(op, data, seq)
+# define MSGPACK_PP_SEQ_TRANSFORM_I(op, data, seq) MSGPACK_PP_SEQ_TAIL(MSGPACK_PP_TUPLE_ELEM(3, 2, MSGPACK_PP_SEQ_FOLD_LEFT(MSGPACK_PP_SEQ_TRANSFORM_O, (op, data, (nil)), seq)))
+# endif
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_STRICT()
+# define MSGPACK_PP_SEQ_TRANSFORM_O(s, state, elem) MSGPACK_PP_SEQ_TRANSFORM_O_IM(s, MSGPACK_PP_TUPLE_REM_3 state, elem)
+# define MSGPACK_PP_SEQ_TRANSFORM_O_IM(s, im, elem) MSGPACK_PP_SEQ_TRANSFORM_O_I(s, im, elem)
+# else
+# define MSGPACK_PP_SEQ_TRANSFORM_O(s, state, elem) MSGPACK_PP_SEQ_TRANSFORM_O_I(s, MSGPACK_PP_TUPLE_ELEM(3, 0, state), MSGPACK_PP_TUPLE_ELEM(3, 1, state), MSGPACK_PP_TUPLE_ELEM(3, 2, state), elem)
+# endif
+#
+# define MSGPACK_PP_SEQ_TRANSFORM_O_I(s, op, data, res, elem) (op, data, res (op(s, data, elem)))
+#
+# /* MSGPACK_PP_SEQ_TRANSFORM_S */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_SEQ_TRANSFORM_S(s, op, data, seq) MSGPACK_PP_SEQ_TAIL(MSGPACK_PP_TUPLE_ELEM(3, 2, MSGPACK_PP_SEQ_FOLD_LEFT_ ## s(MSGPACK_PP_SEQ_TRANSFORM_O, (op, data, (nil)), seq)))
+# else
+# define MSGPACK_PP_SEQ_TRANSFORM_S(s, op, data, seq) MSGPACK_PP_SEQ_TRANSFORM_S_I(s, op, data, seq)
+# define MSGPACK_PP_SEQ_TRANSFORM_S_I(s, op, data, seq) MSGPACK_PP_SEQ_TAIL(MSGPACK_PP_TUPLE_ELEM(3, 2, MSGPACK_PP_SEQ_FOLD_LEFT_ ## s(MSGPACK_PP_SEQ_TRANSFORM_O, (op, data, (nil)), seq)))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/seq/variadic_seq_to_seq.hpp b/third_party/msgpack/include/msgpack/preprocessor/seq/variadic_seq_to_seq.hpp
new file mode 100644
index 0000000000..55f8f81d15
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/seq/variadic_seq_to_seq.hpp
@@ -0,0 +1,28 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2012. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SEQ_VARIADIC_SEQ_TO_SEQ_HPP
+# define MSGPACK_PREPROCESSOR_SEQ_VARIADIC_SEQ_TO_SEQ_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# /* MSGPACK_PP_VARIADIC_SEQ_TO_SEQ */
+#
+# if MSGPACK_PP_VARIADICS
+# define MSGPACK_PP_VARIADIC_SEQ_TO_SEQ(vseq) MSGPACK_PP_CAT(MSGPACK_PP_VARIADIC_SEQ_TO_SEQ_A vseq, 0)
+# define MSGPACK_PP_VARIADIC_SEQ_TO_SEQ_A(...) ((__VA_ARGS__)) MSGPACK_PP_VARIADIC_SEQ_TO_SEQ_B
+# define MSGPACK_PP_VARIADIC_SEQ_TO_SEQ_B(...) ((__VA_ARGS__)) MSGPACK_PP_VARIADIC_SEQ_TO_SEQ_A
+# define MSGPACK_PP_VARIADIC_SEQ_TO_SEQ_A0
+# define MSGPACK_PP_VARIADIC_SEQ_TO_SEQ_B0
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/slot.hpp b/third_party/msgpack/include/msgpack/preprocessor/slot.hpp
new file mode 100644
index 0000000000..10ac97ffee
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/slot.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SLOT_HPP
+# define MSGPACK_PREPROCESSOR_SLOT_HPP
+#
+# include <msgpack/preprocessor/slot/slot.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/slot/counter.hpp b/third_party/msgpack/include/msgpack/preprocessor/slot/counter.hpp
new file mode 100644
index 0000000000..e1fbd8ba87
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/slot/counter.hpp
@@ -0,0 +1,25 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2005. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SLOT_COUNTER_HPP
+# define MSGPACK_PREPROCESSOR_SLOT_COUNTER_HPP
+#
+# include <msgpack/preprocessor/slot/detail/def.hpp>
+#
+# /* MSGPACK_PP_COUNTER */
+#
+# define MSGPACK_PP_COUNTER 0
+#
+# /* MSGPACK_PP_UPDATE_COUNTER */
+#
+# define MSGPACK_PP_UPDATE_COUNTER() <msgpack/preprocessor/slot/detail/counter.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/slot/detail/counter.hpp b/third_party/msgpack/include/msgpack/preprocessor/slot/detail/counter.hpp
new file mode 100644
index 0000000000..d62f778def
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/slot/detail/counter.hpp
@@ -0,0 +1,269 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2005. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# define MSGPACK_PP_VALUE MSGPACK_PP_COUNTER + 1
+#
+# include <msgpack/preprocessor/slot/detail/shared.hpp>
+#
+# undef MSGPACK_PP_COUNTER
+#
+# undef MSGPACK_PP_COUNTER_DIGIT_1
+# undef MSGPACK_PP_COUNTER_DIGIT_2
+# undef MSGPACK_PP_COUNTER_DIGIT_3
+# undef MSGPACK_PP_COUNTER_DIGIT_4
+# undef MSGPACK_PP_COUNTER_DIGIT_5
+# undef MSGPACK_PP_COUNTER_DIGIT_6
+# undef MSGPACK_PP_COUNTER_DIGIT_7
+# undef MSGPACK_PP_COUNTER_DIGIT_8
+# undef MSGPACK_PP_COUNTER_DIGIT_9
+# undef MSGPACK_PP_COUNTER_DIGIT_10
+#
+# if MSGPACK_PP_SLOT_TEMP_10 == 0
+# define MSGPACK_PP_COUNTER_DIGIT_10 0
+# elif MSGPACK_PP_SLOT_TEMP_10 == 1
+# define MSGPACK_PP_COUNTER_DIGIT_10 1
+# elif MSGPACK_PP_SLOT_TEMP_10 == 2
+# define MSGPACK_PP_COUNTER_DIGIT_10 2
+# elif MSGPACK_PP_SLOT_TEMP_10 == 3
+# define MSGPACK_PP_COUNTER_DIGIT_10 3
+# elif MSGPACK_PP_SLOT_TEMP_10 == 4
+# define MSGPACK_PP_COUNTER_DIGIT_10 4
+# elif MSGPACK_PP_SLOT_TEMP_10 == 5
+# define MSGPACK_PP_COUNTER_DIGIT_10 5
+# elif MSGPACK_PP_SLOT_TEMP_10 == 6
+# define MSGPACK_PP_COUNTER_DIGIT_10 6
+# elif MSGPACK_PP_SLOT_TEMP_10 == 7
+# define MSGPACK_PP_COUNTER_DIGIT_10 7
+# elif MSGPACK_PP_SLOT_TEMP_10 == 8
+# define MSGPACK_PP_COUNTER_DIGIT_10 8
+# elif MSGPACK_PP_SLOT_TEMP_10 == 9
+# define MSGPACK_PP_COUNTER_DIGIT_10 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_9 == 0
+# define MSGPACK_PP_COUNTER_DIGIT_9 0
+# elif MSGPACK_PP_SLOT_TEMP_9 == 1
+# define MSGPACK_PP_COUNTER_DIGIT_9 1
+# elif MSGPACK_PP_SLOT_TEMP_9 == 2
+# define MSGPACK_PP_COUNTER_DIGIT_9 2
+# elif MSGPACK_PP_SLOT_TEMP_9 == 3
+# define MSGPACK_PP_COUNTER_DIGIT_9 3
+# elif MSGPACK_PP_SLOT_TEMP_9 == 4
+# define MSGPACK_PP_COUNTER_DIGIT_9 4
+# elif MSGPACK_PP_SLOT_TEMP_9 == 5
+# define MSGPACK_PP_COUNTER_DIGIT_9 5
+# elif MSGPACK_PP_SLOT_TEMP_9 == 6
+# define MSGPACK_PP_COUNTER_DIGIT_9 6
+# elif MSGPACK_PP_SLOT_TEMP_9 == 7
+# define MSGPACK_PP_COUNTER_DIGIT_9 7
+# elif MSGPACK_PP_SLOT_TEMP_9 == 8
+# define MSGPACK_PP_COUNTER_DIGIT_9 8
+# elif MSGPACK_PP_SLOT_TEMP_9 == 9
+# define MSGPACK_PP_COUNTER_DIGIT_9 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_8 == 0
+# define MSGPACK_PP_COUNTER_DIGIT_8 0
+# elif MSGPACK_PP_SLOT_TEMP_8 == 1
+# define MSGPACK_PP_COUNTER_DIGIT_8 1
+# elif MSGPACK_PP_SLOT_TEMP_8 == 2
+# define MSGPACK_PP_COUNTER_DIGIT_8 2
+# elif MSGPACK_PP_SLOT_TEMP_8 == 3
+# define MSGPACK_PP_COUNTER_DIGIT_8 3
+# elif MSGPACK_PP_SLOT_TEMP_8 == 4
+# define MSGPACK_PP_COUNTER_DIGIT_8 4
+# elif MSGPACK_PP_SLOT_TEMP_8 == 5
+# define MSGPACK_PP_COUNTER_DIGIT_8 5
+# elif MSGPACK_PP_SLOT_TEMP_8 == 6
+# define MSGPACK_PP_COUNTER_DIGIT_8 6
+# elif MSGPACK_PP_SLOT_TEMP_8 == 7
+# define MSGPACK_PP_COUNTER_DIGIT_8 7
+# elif MSGPACK_PP_SLOT_TEMP_8 == 8
+# define MSGPACK_PP_COUNTER_DIGIT_8 8
+# elif MSGPACK_PP_SLOT_TEMP_8 == 9
+# define MSGPACK_PP_COUNTER_DIGIT_8 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_7 == 0
+# define MSGPACK_PP_COUNTER_DIGIT_7 0
+# elif MSGPACK_PP_SLOT_TEMP_7 == 1
+# define MSGPACK_PP_COUNTER_DIGIT_7 1
+# elif MSGPACK_PP_SLOT_TEMP_7 == 2
+# define MSGPACK_PP_COUNTER_DIGIT_7 2
+# elif MSGPACK_PP_SLOT_TEMP_7 == 3
+# define MSGPACK_PP_COUNTER_DIGIT_7 3
+# elif MSGPACK_PP_SLOT_TEMP_7 == 4
+# define MSGPACK_PP_COUNTER_DIGIT_7 4
+# elif MSGPACK_PP_SLOT_TEMP_7 == 5
+# define MSGPACK_PP_COUNTER_DIGIT_7 5
+# elif MSGPACK_PP_SLOT_TEMP_7 == 6
+# define MSGPACK_PP_COUNTER_DIGIT_7 6
+# elif MSGPACK_PP_SLOT_TEMP_7 == 7
+# define MSGPACK_PP_COUNTER_DIGIT_7 7
+# elif MSGPACK_PP_SLOT_TEMP_7 == 8
+# define MSGPACK_PP_COUNTER_DIGIT_7 8
+# elif MSGPACK_PP_SLOT_TEMP_7 == 9
+# define MSGPACK_PP_COUNTER_DIGIT_7 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_6 == 0
+# define MSGPACK_PP_COUNTER_DIGIT_6 0
+# elif MSGPACK_PP_SLOT_TEMP_6 == 1
+# define MSGPACK_PP_COUNTER_DIGIT_6 1
+# elif MSGPACK_PP_SLOT_TEMP_6 == 2
+# define MSGPACK_PP_COUNTER_DIGIT_6 2
+# elif MSGPACK_PP_SLOT_TEMP_6 == 3
+# define MSGPACK_PP_COUNTER_DIGIT_6 3
+# elif MSGPACK_PP_SLOT_TEMP_6 == 4
+# define MSGPACK_PP_COUNTER_DIGIT_6 4
+# elif MSGPACK_PP_SLOT_TEMP_6 == 5
+# define MSGPACK_PP_COUNTER_DIGIT_6 5
+# elif MSGPACK_PP_SLOT_TEMP_6 == 6
+# define MSGPACK_PP_COUNTER_DIGIT_6 6
+# elif MSGPACK_PP_SLOT_TEMP_6 == 7
+# define MSGPACK_PP_COUNTER_DIGIT_6 7
+# elif MSGPACK_PP_SLOT_TEMP_6 == 8
+# define MSGPACK_PP_COUNTER_DIGIT_6 8
+# elif MSGPACK_PP_SLOT_TEMP_6 == 9
+# define MSGPACK_PP_COUNTER_DIGIT_6 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_5 == 0
+# define MSGPACK_PP_COUNTER_DIGIT_5 0
+# elif MSGPACK_PP_SLOT_TEMP_5 == 1
+# define MSGPACK_PP_COUNTER_DIGIT_5 1
+# elif MSGPACK_PP_SLOT_TEMP_5 == 2
+# define MSGPACK_PP_COUNTER_DIGIT_5 2
+# elif MSGPACK_PP_SLOT_TEMP_5 == 3
+# define MSGPACK_PP_COUNTER_DIGIT_5 3
+# elif MSGPACK_PP_SLOT_TEMP_5 == 4
+# define MSGPACK_PP_COUNTER_DIGIT_5 4
+# elif MSGPACK_PP_SLOT_TEMP_5 == 5
+# define MSGPACK_PP_COUNTER_DIGIT_5 5
+# elif MSGPACK_PP_SLOT_TEMP_5 == 6
+# define MSGPACK_PP_COUNTER_DIGIT_5 6
+# elif MSGPACK_PP_SLOT_TEMP_5 == 7
+# define MSGPACK_PP_COUNTER_DIGIT_5 7
+# elif MSGPACK_PP_SLOT_TEMP_5 == 8
+# define MSGPACK_PP_COUNTER_DIGIT_5 8
+# elif MSGPACK_PP_SLOT_TEMP_5 == 9
+# define MSGPACK_PP_COUNTER_DIGIT_5 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_4 == 0
+# define MSGPACK_PP_COUNTER_DIGIT_4 0
+# elif MSGPACK_PP_SLOT_TEMP_4 == 1
+# define MSGPACK_PP_COUNTER_DIGIT_4 1
+# elif MSGPACK_PP_SLOT_TEMP_4 == 2
+# define MSGPACK_PP_COUNTER_DIGIT_4 2
+# elif MSGPACK_PP_SLOT_TEMP_4 == 3
+# define MSGPACK_PP_COUNTER_DIGIT_4 3
+# elif MSGPACK_PP_SLOT_TEMP_4 == 4
+# define MSGPACK_PP_COUNTER_DIGIT_4 4
+# elif MSGPACK_PP_SLOT_TEMP_4 == 5
+# define MSGPACK_PP_COUNTER_DIGIT_4 5
+# elif MSGPACK_PP_SLOT_TEMP_4 == 6
+# define MSGPACK_PP_COUNTER_DIGIT_4 6
+# elif MSGPACK_PP_SLOT_TEMP_4 == 7
+# define MSGPACK_PP_COUNTER_DIGIT_4 7
+# elif MSGPACK_PP_SLOT_TEMP_4 == 8
+# define MSGPACK_PP_COUNTER_DIGIT_4 8
+# elif MSGPACK_PP_SLOT_TEMP_4 == 9
+# define MSGPACK_PP_COUNTER_DIGIT_4 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_3 == 0
+# define MSGPACK_PP_COUNTER_DIGIT_3 0
+# elif MSGPACK_PP_SLOT_TEMP_3 == 1
+# define MSGPACK_PP_COUNTER_DIGIT_3 1
+# elif MSGPACK_PP_SLOT_TEMP_3 == 2
+# define MSGPACK_PP_COUNTER_DIGIT_3 2
+# elif MSGPACK_PP_SLOT_TEMP_3 == 3
+# define MSGPACK_PP_COUNTER_DIGIT_3 3
+# elif MSGPACK_PP_SLOT_TEMP_3 == 4
+# define MSGPACK_PP_COUNTER_DIGIT_3 4
+# elif MSGPACK_PP_SLOT_TEMP_3 == 5
+# define MSGPACK_PP_COUNTER_DIGIT_3 5
+# elif MSGPACK_PP_SLOT_TEMP_3 == 6
+# define MSGPACK_PP_COUNTER_DIGIT_3 6
+# elif MSGPACK_PP_SLOT_TEMP_3 == 7
+# define MSGPACK_PP_COUNTER_DIGIT_3 7
+# elif MSGPACK_PP_SLOT_TEMP_3 == 8
+# define MSGPACK_PP_COUNTER_DIGIT_3 8
+# elif MSGPACK_PP_SLOT_TEMP_3 == 9
+# define MSGPACK_PP_COUNTER_DIGIT_3 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_2 == 0
+# define MSGPACK_PP_COUNTER_DIGIT_2 0
+# elif MSGPACK_PP_SLOT_TEMP_2 == 1
+# define MSGPACK_PP_COUNTER_DIGIT_2 1
+# elif MSGPACK_PP_SLOT_TEMP_2 == 2
+# define MSGPACK_PP_COUNTER_DIGIT_2 2
+# elif MSGPACK_PP_SLOT_TEMP_2 == 3
+# define MSGPACK_PP_COUNTER_DIGIT_2 3
+# elif MSGPACK_PP_SLOT_TEMP_2 == 4
+# define MSGPACK_PP_COUNTER_DIGIT_2 4
+# elif MSGPACK_PP_SLOT_TEMP_2 == 5
+# define MSGPACK_PP_COUNTER_DIGIT_2 5
+# elif MSGPACK_PP_SLOT_TEMP_2 == 6
+# define MSGPACK_PP_COUNTER_DIGIT_2 6
+# elif MSGPACK_PP_SLOT_TEMP_2 == 7
+# define MSGPACK_PP_COUNTER_DIGIT_2 7
+# elif MSGPACK_PP_SLOT_TEMP_2 == 8
+# define MSGPACK_PP_COUNTER_DIGIT_2 8
+# elif MSGPACK_PP_SLOT_TEMP_2 == 9
+# define MSGPACK_PP_COUNTER_DIGIT_2 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_1 == 0
+# define MSGPACK_PP_COUNTER_DIGIT_1 0
+# elif MSGPACK_PP_SLOT_TEMP_1 == 1
+# define MSGPACK_PP_COUNTER_DIGIT_1 1
+# elif MSGPACK_PP_SLOT_TEMP_1 == 2
+# define MSGPACK_PP_COUNTER_DIGIT_1 2
+# elif MSGPACK_PP_SLOT_TEMP_1 == 3
+# define MSGPACK_PP_COUNTER_DIGIT_1 3
+# elif MSGPACK_PP_SLOT_TEMP_1 == 4
+# define MSGPACK_PP_COUNTER_DIGIT_1 4
+# elif MSGPACK_PP_SLOT_TEMP_1 == 5
+# define MSGPACK_PP_COUNTER_DIGIT_1 5
+# elif MSGPACK_PP_SLOT_TEMP_1 == 6
+# define MSGPACK_PP_COUNTER_DIGIT_1 6
+# elif MSGPACK_PP_SLOT_TEMP_1 == 7
+# define MSGPACK_PP_COUNTER_DIGIT_1 7
+# elif MSGPACK_PP_SLOT_TEMP_1 == 8
+# define MSGPACK_PP_COUNTER_DIGIT_1 8
+# elif MSGPACK_PP_SLOT_TEMP_1 == 9
+# define MSGPACK_PP_COUNTER_DIGIT_1 9
+# endif
+#
+# if MSGPACK_PP_COUNTER_DIGIT_10
+# define MSGPACK_PP_COUNTER MSGPACK_PP_SLOT_CC_10(MSGPACK_PP_COUNTER_DIGIT_10, MSGPACK_PP_COUNTER_DIGIT_9, MSGPACK_PP_COUNTER_DIGIT_8, MSGPACK_PP_COUNTER_DIGIT_7, MSGPACK_PP_COUNTER_DIGIT_6, MSGPACK_PP_COUNTER_DIGIT_5, MSGPACK_PP_COUNTER_DIGIT_4, MSGPACK_PP_COUNTER_DIGIT_3, MSGPACK_PP_COUNTER_DIGIT_2, MSGPACK_PP_COUNTER_DIGIT_1)
+# elif MSGPACK_PP_COUNTER_DIGIT_9
+# define MSGPACK_PP_COUNTER MSGPACK_PP_SLOT_CC_9(MSGPACK_PP_COUNTER_DIGIT_9, MSGPACK_PP_COUNTER_DIGIT_8, MSGPACK_PP_COUNTER_DIGIT_7, MSGPACK_PP_COUNTER_DIGIT_6, MSGPACK_PP_COUNTER_DIGIT_5, MSGPACK_PP_COUNTER_DIGIT_4, MSGPACK_PP_COUNTER_DIGIT_3, MSGPACK_PP_COUNTER_DIGIT_2, MSGPACK_PP_COUNTER_DIGIT_1)
+# elif MSGPACK_PP_COUNTER_DIGIT_8
+# define MSGPACK_PP_COUNTER MSGPACK_PP_SLOT_CC_8(MSGPACK_PP_COUNTER_DIGIT_8, MSGPACK_PP_COUNTER_DIGIT_7, MSGPACK_PP_COUNTER_DIGIT_6, MSGPACK_PP_COUNTER_DIGIT_5, MSGPACK_PP_COUNTER_DIGIT_4, MSGPACK_PP_COUNTER_DIGIT_3, MSGPACK_PP_COUNTER_DIGIT_2, MSGPACK_PP_COUNTER_DIGIT_1)
+# elif MSGPACK_PP_COUNTER_DIGIT_7
+# define MSGPACK_PP_COUNTER MSGPACK_PP_SLOT_CC_7(MSGPACK_PP_COUNTER_DIGIT_7, MSGPACK_PP_COUNTER_DIGIT_6, MSGPACK_PP_COUNTER_DIGIT_5, MSGPACK_PP_COUNTER_DIGIT_4, MSGPACK_PP_COUNTER_DIGIT_3, MSGPACK_PP_COUNTER_DIGIT_2, MSGPACK_PP_COUNTER_DIGIT_1)
+# elif MSGPACK_PP_COUNTER_DIGIT_6
+# define MSGPACK_PP_COUNTER MSGPACK_PP_SLOT_CC_6(MSGPACK_PP_COUNTER_DIGIT_6, MSGPACK_PP_COUNTER_DIGIT_5, MSGPACK_PP_COUNTER_DIGIT_4, MSGPACK_PP_COUNTER_DIGIT_3, MSGPACK_PP_COUNTER_DIGIT_2, MSGPACK_PP_COUNTER_DIGIT_1)
+# elif MSGPACK_PP_COUNTER_DIGIT_5
+# define MSGPACK_PP_COUNTER MSGPACK_PP_SLOT_CC_5(MSGPACK_PP_COUNTER_DIGIT_5, MSGPACK_PP_COUNTER_DIGIT_4, MSGPACK_PP_COUNTER_DIGIT_3, MSGPACK_PP_COUNTER_DIGIT_2, MSGPACK_PP_COUNTER_DIGIT_1)
+# elif MSGPACK_PP_COUNTER_DIGIT_4
+# define MSGPACK_PP_COUNTER MSGPACK_PP_SLOT_CC_4(MSGPACK_PP_COUNTER_DIGIT_4, MSGPACK_PP_COUNTER_DIGIT_3, MSGPACK_PP_COUNTER_DIGIT_2, MSGPACK_PP_COUNTER_DIGIT_1)
+# elif MSGPACK_PP_COUNTER_DIGIT_3
+# define MSGPACK_PP_COUNTER MSGPACK_PP_SLOT_CC_3(MSGPACK_PP_COUNTER_DIGIT_3, MSGPACK_PP_COUNTER_DIGIT_2, MSGPACK_PP_COUNTER_DIGIT_1)
+# elif MSGPACK_PP_COUNTER_DIGIT_2
+# define MSGPACK_PP_COUNTER MSGPACK_PP_SLOT_CC_2(MSGPACK_PP_COUNTER_DIGIT_2, MSGPACK_PP_COUNTER_DIGIT_1)
+# else
+# define MSGPACK_PP_COUNTER MSGPACK_PP_COUNTER_DIGIT_1
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/slot/detail/def.hpp b/third_party/msgpack/include/msgpack/preprocessor/slot/detail/def.hpp
new file mode 100644
index 0000000000..e9053f4550
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/slot/detail/def.hpp
@@ -0,0 +1,49 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SLOT_DETAIL_DEF_HPP
+# define MSGPACK_PREPROCESSOR_SLOT_DETAIL_DEF_HPP
+#
+# /* MSGPACK_PP_SLOT_OFFSET_x */
+#
+# define MSGPACK_PP_SLOT_OFFSET_10(x) (x) % 1000000000UL
+# define MSGPACK_PP_SLOT_OFFSET_9(x) MSGPACK_PP_SLOT_OFFSET_10(x) % 100000000UL
+# define MSGPACK_PP_SLOT_OFFSET_8(x) MSGPACK_PP_SLOT_OFFSET_9(x) % 10000000UL
+# define MSGPACK_PP_SLOT_OFFSET_7(x) MSGPACK_PP_SLOT_OFFSET_8(x) % 1000000UL
+# define MSGPACK_PP_SLOT_OFFSET_6(x) MSGPACK_PP_SLOT_OFFSET_7(x) % 100000UL
+# define MSGPACK_PP_SLOT_OFFSET_5(x) MSGPACK_PP_SLOT_OFFSET_6(x) % 10000UL
+# define MSGPACK_PP_SLOT_OFFSET_4(x) MSGPACK_PP_SLOT_OFFSET_5(x) % 1000UL
+# define MSGPACK_PP_SLOT_OFFSET_3(x) MSGPACK_PP_SLOT_OFFSET_4(x) % 100UL
+# define MSGPACK_PP_SLOT_OFFSET_2(x) MSGPACK_PP_SLOT_OFFSET_3(x) % 10UL
+#
+# /* MSGPACK_PP_SLOT_CC_x */
+#
+# define MSGPACK_PP_SLOT_CC_2(a, b) MSGPACK_PP_SLOT_CC_2_D(a, b)
+# define MSGPACK_PP_SLOT_CC_3(a, b, c) MSGPACK_PP_SLOT_CC_3_D(a, b, c)
+# define MSGPACK_PP_SLOT_CC_4(a, b, c, d) MSGPACK_PP_SLOT_CC_4_D(a, b, c, d)
+# define MSGPACK_PP_SLOT_CC_5(a, b, c, d, e) MSGPACK_PP_SLOT_CC_5_D(a, b, c, d, e)
+# define MSGPACK_PP_SLOT_CC_6(a, b, c, d, e, f) MSGPACK_PP_SLOT_CC_6_D(a, b, c, d, e, f)
+# define MSGPACK_PP_SLOT_CC_7(a, b, c, d, e, f, g) MSGPACK_PP_SLOT_CC_7_D(a, b, c, d, e, f, g)
+# define MSGPACK_PP_SLOT_CC_8(a, b, c, d, e, f, g, h) MSGPACK_PP_SLOT_CC_8_D(a, b, c, d, e, f, g, h)
+# define MSGPACK_PP_SLOT_CC_9(a, b, c, d, e, f, g, h, i) MSGPACK_PP_SLOT_CC_9_D(a, b, c, d, e, f, g, h, i)
+# define MSGPACK_PP_SLOT_CC_10(a, b, c, d, e, f, g, h, i, j) MSGPACK_PP_SLOT_CC_10_D(a, b, c, d, e, f, g, h, i, j)
+#
+# define MSGPACK_PP_SLOT_CC_2_D(a, b) a ## b
+# define MSGPACK_PP_SLOT_CC_3_D(a, b, c) a ## b ## c
+# define MSGPACK_PP_SLOT_CC_4_D(a, b, c, d) a ## b ## c ## d
+# define MSGPACK_PP_SLOT_CC_5_D(a, b, c, d, e) a ## b ## c ## d ## e
+# define MSGPACK_PP_SLOT_CC_6_D(a, b, c, d, e, f) a ## b ## c ## d ## e ## f
+# define MSGPACK_PP_SLOT_CC_7_D(a, b, c, d, e, f, g) a ## b ## c ## d ## e ## f ## g
+# define MSGPACK_PP_SLOT_CC_8_D(a, b, c, d, e, f, g, h) a ## b ## c ## d ## e ## f ## g ## h
+# define MSGPACK_PP_SLOT_CC_9_D(a, b, c, d, e, f, g, h, i) a ## b ## c ## d ## e ## f ## g ## h ## i
+# define MSGPACK_PP_SLOT_CC_10_D(a, b, c, d, e, f, g, h, i, j) a ## b ## c ## d ## e ## f ## g ## h ## i ## j
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/slot/detail/shared.hpp b/third_party/msgpack/include/msgpack/preprocessor/slot/detail/shared.hpp
new file mode 100644
index 0000000000..b635c9160e
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/slot/detail/shared.hpp
@@ -0,0 +1,247 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PP_VALUE
+# error MSGPACK_PP_ERROR: MSGPACK_PP_VALUE is not defined
+# endif
+#
+# undef MSGPACK_PP_SLOT_TEMP_1
+# undef MSGPACK_PP_SLOT_TEMP_2
+# undef MSGPACK_PP_SLOT_TEMP_3
+# undef MSGPACK_PP_SLOT_TEMP_4
+# undef MSGPACK_PP_SLOT_TEMP_5
+# undef MSGPACK_PP_SLOT_TEMP_6
+# undef MSGPACK_PP_SLOT_TEMP_7
+# undef MSGPACK_PP_SLOT_TEMP_8
+# undef MSGPACK_PP_SLOT_TEMP_9
+# undef MSGPACK_PP_SLOT_TEMP_10
+#
+# if (MSGPACK_PP_VALUE) / 1000000000UL == 0
+# define MSGPACK_PP_SLOT_TEMP_10 0
+# elif (MSGPACK_PP_VALUE) / 1000000000UL == 1
+# define MSGPACK_PP_SLOT_TEMP_10 1
+# elif (MSGPACK_PP_VALUE) / 1000000000UL == 2
+# define MSGPACK_PP_SLOT_TEMP_10 2
+# elif (MSGPACK_PP_VALUE) / 1000000000UL == 3
+# define MSGPACK_PP_SLOT_TEMP_10 3
+# elif (MSGPACK_PP_VALUE) / 1000000000UL == 4
+# define MSGPACK_PP_SLOT_TEMP_10 4
+# elif (MSGPACK_PP_VALUE) / 1000000000UL == 5
+# define MSGPACK_PP_SLOT_TEMP_10 5
+# elif (MSGPACK_PP_VALUE) / 1000000000UL == 6
+# define MSGPACK_PP_SLOT_TEMP_10 6
+# elif (MSGPACK_PP_VALUE) / 1000000000UL == 7
+# define MSGPACK_PP_SLOT_TEMP_10 7
+# elif (MSGPACK_PP_VALUE) / 1000000000UL == 8
+# define MSGPACK_PP_SLOT_TEMP_10 8
+# elif (MSGPACK_PP_VALUE) / 1000000000UL == 9
+# define MSGPACK_PP_SLOT_TEMP_10 9
+# endif
+#
+# if MSGPACK_PP_SLOT_OFFSET_10(MSGPACK_PP_VALUE) / 100000000UL == 0
+# define MSGPACK_PP_SLOT_TEMP_9 0
+# elif MSGPACK_PP_SLOT_OFFSET_10(MSGPACK_PP_VALUE) / 100000000UL == 1
+# define MSGPACK_PP_SLOT_TEMP_9 1
+# elif MSGPACK_PP_SLOT_OFFSET_10(MSGPACK_PP_VALUE) / 100000000UL == 2
+# define MSGPACK_PP_SLOT_TEMP_9 2
+# elif MSGPACK_PP_SLOT_OFFSET_10(MSGPACK_PP_VALUE) / 100000000UL == 3
+# define MSGPACK_PP_SLOT_TEMP_9 3
+# elif MSGPACK_PP_SLOT_OFFSET_10(MSGPACK_PP_VALUE) / 100000000UL == 4
+# define MSGPACK_PP_SLOT_TEMP_9 4
+# elif MSGPACK_PP_SLOT_OFFSET_10(MSGPACK_PP_VALUE) / 100000000UL == 5
+# define MSGPACK_PP_SLOT_TEMP_9 5
+# elif MSGPACK_PP_SLOT_OFFSET_10(MSGPACK_PP_VALUE) / 100000000UL == 6
+# define MSGPACK_PP_SLOT_TEMP_9 6
+# elif MSGPACK_PP_SLOT_OFFSET_10(MSGPACK_PP_VALUE) / 100000000UL == 7
+# define MSGPACK_PP_SLOT_TEMP_9 7
+# elif MSGPACK_PP_SLOT_OFFSET_10(MSGPACK_PP_VALUE) / 100000000UL == 8
+# define MSGPACK_PP_SLOT_TEMP_9 8
+# elif MSGPACK_PP_SLOT_OFFSET_10(MSGPACK_PP_VALUE) / 100000000UL == 9
+# define MSGPACK_PP_SLOT_TEMP_9 9
+# endif
+#
+# if MSGPACK_PP_SLOT_OFFSET_9(MSGPACK_PP_VALUE) / 10000000UL == 0
+# define MSGPACK_PP_SLOT_TEMP_8 0
+# elif MSGPACK_PP_SLOT_OFFSET_9(MSGPACK_PP_VALUE) / 10000000UL == 1
+# define MSGPACK_PP_SLOT_TEMP_8 1
+# elif MSGPACK_PP_SLOT_OFFSET_9(MSGPACK_PP_VALUE) / 10000000UL == 2
+# define MSGPACK_PP_SLOT_TEMP_8 2
+# elif MSGPACK_PP_SLOT_OFFSET_9(MSGPACK_PP_VALUE) / 10000000UL == 3
+# define MSGPACK_PP_SLOT_TEMP_8 3
+# elif MSGPACK_PP_SLOT_OFFSET_9(MSGPACK_PP_VALUE) / 10000000UL == 4
+# define MSGPACK_PP_SLOT_TEMP_8 4
+# elif MSGPACK_PP_SLOT_OFFSET_9(MSGPACK_PP_VALUE) / 10000000UL == 5
+# define MSGPACK_PP_SLOT_TEMP_8 5
+# elif MSGPACK_PP_SLOT_OFFSET_9(MSGPACK_PP_VALUE) / 10000000UL == 6
+# define MSGPACK_PP_SLOT_TEMP_8 6
+# elif MSGPACK_PP_SLOT_OFFSET_9(MSGPACK_PP_VALUE) / 10000000UL == 7
+# define MSGPACK_PP_SLOT_TEMP_8 7
+# elif MSGPACK_PP_SLOT_OFFSET_9(MSGPACK_PP_VALUE) / 10000000UL == 8
+# define MSGPACK_PP_SLOT_TEMP_8 8
+# elif MSGPACK_PP_SLOT_OFFSET_9(MSGPACK_PP_VALUE) / 10000000UL == 9
+# define MSGPACK_PP_SLOT_TEMP_8 9
+# endif
+#
+# if MSGPACK_PP_SLOT_OFFSET_8(MSGPACK_PP_VALUE) / 1000000UL == 0
+# define MSGPACK_PP_SLOT_TEMP_7 0
+# elif MSGPACK_PP_SLOT_OFFSET_8(MSGPACK_PP_VALUE) / 1000000UL == 1
+# define MSGPACK_PP_SLOT_TEMP_7 1
+# elif MSGPACK_PP_SLOT_OFFSET_8(MSGPACK_PP_VALUE) / 1000000UL == 2
+# define MSGPACK_PP_SLOT_TEMP_7 2
+# elif MSGPACK_PP_SLOT_OFFSET_8(MSGPACK_PP_VALUE) / 1000000UL == 3
+# define MSGPACK_PP_SLOT_TEMP_7 3
+# elif MSGPACK_PP_SLOT_OFFSET_8(MSGPACK_PP_VALUE) / 1000000UL == 4
+# define MSGPACK_PP_SLOT_TEMP_7 4
+# elif MSGPACK_PP_SLOT_OFFSET_8(MSGPACK_PP_VALUE) / 1000000UL == 5
+# define MSGPACK_PP_SLOT_TEMP_7 5
+# elif MSGPACK_PP_SLOT_OFFSET_8(MSGPACK_PP_VALUE) / 1000000UL == 6
+# define MSGPACK_PP_SLOT_TEMP_7 6
+# elif MSGPACK_PP_SLOT_OFFSET_8(MSGPACK_PP_VALUE) / 1000000UL == 7
+# define MSGPACK_PP_SLOT_TEMP_7 7
+# elif MSGPACK_PP_SLOT_OFFSET_8(MSGPACK_PP_VALUE) / 1000000UL == 8
+# define MSGPACK_PP_SLOT_TEMP_7 8
+# elif MSGPACK_PP_SLOT_OFFSET_8(MSGPACK_PP_VALUE) / 1000000UL == 9
+# define MSGPACK_PP_SLOT_TEMP_7 9
+# endif
+#
+# if MSGPACK_PP_SLOT_OFFSET_7(MSGPACK_PP_VALUE) / 100000UL == 0
+# define MSGPACK_PP_SLOT_TEMP_6 0
+# elif MSGPACK_PP_SLOT_OFFSET_7(MSGPACK_PP_VALUE) / 100000UL == 1
+# define MSGPACK_PP_SLOT_TEMP_6 1
+# elif MSGPACK_PP_SLOT_OFFSET_7(MSGPACK_PP_VALUE) / 100000UL == 2
+# define MSGPACK_PP_SLOT_TEMP_6 2
+# elif MSGPACK_PP_SLOT_OFFSET_7(MSGPACK_PP_VALUE) / 100000UL == 3
+# define MSGPACK_PP_SLOT_TEMP_6 3
+# elif MSGPACK_PP_SLOT_OFFSET_7(MSGPACK_PP_VALUE) / 100000UL == 4
+# define MSGPACK_PP_SLOT_TEMP_6 4
+# elif MSGPACK_PP_SLOT_OFFSET_7(MSGPACK_PP_VALUE) / 100000UL == 5
+# define MSGPACK_PP_SLOT_TEMP_6 5
+# elif MSGPACK_PP_SLOT_OFFSET_7(MSGPACK_PP_VALUE) / 100000UL == 6
+# define MSGPACK_PP_SLOT_TEMP_6 6
+# elif MSGPACK_PP_SLOT_OFFSET_7(MSGPACK_PP_VALUE) / 100000UL == 7
+# define MSGPACK_PP_SLOT_TEMP_6 7
+# elif MSGPACK_PP_SLOT_OFFSET_7(MSGPACK_PP_VALUE) / 100000UL == 8
+# define MSGPACK_PP_SLOT_TEMP_6 8
+# elif MSGPACK_PP_SLOT_OFFSET_7(MSGPACK_PP_VALUE) / 100000UL == 9
+# define MSGPACK_PP_SLOT_TEMP_6 9
+# endif
+#
+# if MSGPACK_PP_SLOT_OFFSET_6(MSGPACK_PP_VALUE) / 10000UL == 0
+# define MSGPACK_PP_SLOT_TEMP_5 0
+# elif MSGPACK_PP_SLOT_OFFSET_6(MSGPACK_PP_VALUE) / 10000UL == 1
+# define MSGPACK_PP_SLOT_TEMP_5 1
+# elif MSGPACK_PP_SLOT_OFFSET_6(MSGPACK_PP_VALUE) / 10000UL == 2
+# define MSGPACK_PP_SLOT_TEMP_5 2
+# elif MSGPACK_PP_SLOT_OFFSET_6(MSGPACK_PP_VALUE) / 10000UL == 3
+# define MSGPACK_PP_SLOT_TEMP_5 3
+# elif MSGPACK_PP_SLOT_OFFSET_6(MSGPACK_PP_VALUE) / 10000UL == 4
+# define MSGPACK_PP_SLOT_TEMP_5 4
+# elif MSGPACK_PP_SLOT_OFFSET_6(MSGPACK_PP_VALUE) / 10000UL == 5
+# define MSGPACK_PP_SLOT_TEMP_5 5
+# elif MSGPACK_PP_SLOT_OFFSET_6(MSGPACK_PP_VALUE) / 10000UL == 6
+# define MSGPACK_PP_SLOT_TEMP_5 6
+# elif MSGPACK_PP_SLOT_OFFSET_6(MSGPACK_PP_VALUE) / 10000UL == 7
+# define MSGPACK_PP_SLOT_TEMP_5 7
+# elif MSGPACK_PP_SLOT_OFFSET_6(MSGPACK_PP_VALUE) / 10000UL == 8
+# define MSGPACK_PP_SLOT_TEMP_5 8
+# elif MSGPACK_PP_SLOT_OFFSET_6(MSGPACK_PP_VALUE) / 10000UL == 9
+# define MSGPACK_PP_SLOT_TEMP_5 9
+# endif
+#
+# if MSGPACK_PP_SLOT_OFFSET_5(MSGPACK_PP_VALUE) / 1000UL == 0
+# define MSGPACK_PP_SLOT_TEMP_4 0
+# elif MSGPACK_PP_SLOT_OFFSET_5(MSGPACK_PP_VALUE) / 1000UL == 1
+# define MSGPACK_PP_SLOT_TEMP_4 1
+# elif MSGPACK_PP_SLOT_OFFSET_5(MSGPACK_PP_VALUE) / 1000UL == 2
+# define MSGPACK_PP_SLOT_TEMP_4 2
+# elif MSGPACK_PP_SLOT_OFFSET_5(MSGPACK_PP_VALUE) / 1000UL == 3
+# define MSGPACK_PP_SLOT_TEMP_4 3
+# elif MSGPACK_PP_SLOT_OFFSET_5(MSGPACK_PP_VALUE) / 1000UL == 4
+# define MSGPACK_PP_SLOT_TEMP_4 4
+# elif MSGPACK_PP_SLOT_OFFSET_5(MSGPACK_PP_VALUE) / 1000UL == 5
+# define MSGPACK_PP_SLOT_TEMP_4 5
+# elif MSGPACK_PP_SLOT_OFFSET_5(MSGPACK_PP_VALUE) / 1000UL == 6
+# define MSGPACK_PP_SLOT_TEMP_4 6
+# elif MSGPACK_PP_SLOT_OFFSET_5(MSGPACK_PP_VALUE) / 1000UL == 7
+# define MSGPACK_PP_SLOT_TEMP_4 7
+# elif MSGPACK_PP_SLOT_OFFSET_5(MSGPACK_PP_VALUE) / 1000UL == 8
+# define MSGPACK_PP_SLOT_TEMP_4 8
+# elif MSGPACK_PP_SLOT_OFFSET_5(MSGPACK_PP_VALUE) / 1000UL == 9
+# define MSGPACK_PP_SLOT_TEMP_4 9
+# endif
+#
+# if MSGPACK_PP_SLOT_OFFSET_4(MSGPACK_PP_VALUE) / 100UL == 0
+# define MSGPACK_PP_SLOT_TEMP_3 0
+# elif MSGPACK_PP_SLOT_OFFSET_4(MSGPACK_PP_VALUE) / 100UL == 1
+# define MSGPACK_PP_SLOT_TEMP_3 1
+# elif MSGPACK_PP_SLOT_OFFSET_4(MSGPACK_PP_VALUE) / 100UL == 2
+# define MSGPACK_PP_SLOT_TEMP_3 2
+# elif MSGPACK_PP_SLOT_OFFSET_4(MSGPACK_PP_VALUE) / 100UL == 3
+# define MSGPACK_PP_SLOT_TEMP_3 3
+# elif MSGPACK_PP_SLOT_OFFSET_4(MSGPACK_PP_VALUE) / 100UL == 4
+# define MSGPACK_PP_SLOT_TEMP_3 4
+# elif MSGPACK_PP_SLOT_OFFSET_4(MSGPACK_PP_VALUE) / 100UL == 5
+# define MSGPACK_PP_SLOT_TEMP_3 5
+# elif MSGPACK_PP_SLOT_OFFSET_4(MSGPACK_PP_VALUE) / 100UL == 6
+# define MSGPACK_PP_SLOT_TEMP_3 6
+# elif MSGPACK_PP_SLOT_OFFSET_4(MSGPACK_PP_VALUE) / 100UL == 7
+# define MSGPACK_PP_SLOT_TEMP_3 7
+# elif MSGPACK_PP_SLOT_OFFSET_4(MSGPACK_PP_VALUE) / 100UL == 8
+# define MSGPACK_PP_SLOT_TEMP_3 8
+# elif MSGPACK_PP_SLOT_OFFSET_4(MSGPACK_PP_VALUE) / 100UL == 9
+# define MSGPACK_PP_SLOT_TEMP_3 9
+# endif
+#
+# if MSGPACK_PP_SLOT_OFFSET_3(MSGPACK_PP_VALUE) / 10UL == 0
+# define MSGPACK_PP_SLOT_TEMP_2 0
+# elif MSGPACK_PP_SLOT_OFFSET_3(MSGPACK_PP_VALUE) / 10UL == 1
+# define MSGPACK_PP_SLOT_TEMP_2 1
+# elif MSGPACK_PP_SLOT_OFFSET_3(MSGPACK_PP_VALUE) / 10UL == 2
+# define MSGPACK_PP_SLOT_TEMP_2 2
+# elif MSGPACK_PP_SLOT_OFFSET_3(MSGPACK_PP_VALUE) / 10UL == 3
+# define MSGPACK_PP_SLOT_TEMP_2 3
+# elif MSGPACK_PP_SLOT_OFFSET_3(MSGPACK_PP_VALUE) / 10UL == 4
+# define MSGPACK_PP_SLOT_TEMP_2 4
+# elif MSGPACK_PP_SLOT_OFFSET_3(MSGPACK_PP_VALUE) / 10UL == 5
+# define MSGPACK_PP_SLOT_TEMP_2 5
+# elif MSGPACK_PP_SLOT_OFFSET_3(MSGPACK_PP_VALUE) / 10UL == 6
+# define MSGPACK_PP_SLOT_TEMP_2 6
+# elif MSGPACK_PP_SLOT_OFFSET_3(MSGPACK_PP_VALUE) / 10UL == 7
+# define MSGPACK_PP_SLOT_TEMP_2 7
+# elif MSGPACK_PP_SLOT_OFFSET_3(MSGPACK_PP_VALUE) / 10UL == 8
+# define MSGPACK_PP_SLOT_TEMP_2 8
+# elif MSGPACK_PP_SLOT_OFFSET_3(MSGPACK_PP_VALUE) / 10UL == 9
+# define MSGPACK_PP_SLOT_TEMP_2 9
+# endif
+#
+# if MSGPACK_PP_SLOT_OFFSET_2(MSGPACK_PP_VALUE) == 0
+# define MSGPACK_PP_SLOT_TEMP_1 0
+# elif MSGPACK_PP_SLOT_OFFSET_2(MSGPACK_PP_VALUE) == 1
+# define MSGPACK_PP_SLOT_TEMP_1 1
+# elif MSGPACK_PP_SLOT_OFFSET_2(MSGPACK_PP_VALUE) == 2
+# define MSGPACK_PP_SLOT_TEMP_1 2
+# elif MSGPACK_PP_SLOT_OFFSET_2(MSGPACK_PP_VALUE) == 3
+# define MSGPACK_PP_SLOT_TEMP_1 3
+# elif MSGPACK_PP_SLOT_OFFSET_2(MSGPACK_PP_VALUE) == 4
+# define MSGPACK_PP_SLOT_TEMP_1 4
+# elif MSGPACK_PP_SLOT_OFFSET_2(MSGPACK_PP_VALUE) == 5
+# define MSGPACK_PP_SLOT_TEMP_1 5
+# elif MSGPACK_PP_SLOT_OFFSET_2(MSGPACK_PP_VALUE) == 6
+# define MSGPACK_PP_SLOT_TEMP_1 6
+# elif MSGPACK_PP_SLOT_OFFSET_2(MSGPACK_PP_VALUE) == 7
+# define MSGPACK_PP_SLOT_TEMP_1 7
+# elif MSGPACK_PP_SLOT_OFFSET_2(MSGPACK_PP_VALUE) == 8
+# define MSGPACK_PP_SLOT_TEMP_1 8
+# elif MSGPACK_PP_SLOT_OFFSET_2(MSGPACK_PP_VALUE) == 9
+# define MSGPACK_PP_SLOT_TEMP_1 9
+# endif
+#
+# undef MSGPACK_PP_VALUE
diff --git a/third_party/msgpack/include/msgpack/preprocessor/slot/detail/slot1.hpp b/third_party/msgpack/include/msgpack/preprocessor/slot/detail/slot1.hpp
new file mode 100644
index 0000000000..02db4c8f84
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/slot/detail/slot1.hpp
@@ -0,0 +1,267 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <msgpack/preprocessor/slot/detail/shared.hpp>
+#
+# undef MSGPACK_PP_SLOT_1
+#
+# undef MSGPACK_PP_SLOT_1_DIGIT_1
+# undef MSGPACK_PP_SLOT_1_DIGIT_2
+# undef MSGPACK_PP_SLOT_1_DIGIT_3
+# undef MSGPACK_PP_SLOT_1_DIGIT_4
+# undef MSGPACK_PP_SLOT_1_DIGIT_5
+# undef MSGPACK_PP_SLOT_1_DIGIT_6
+# undef MSGPACK_PP_SLOT_1_DIGIT_7
+# undef MSGPACK_PP_SLOT_1_DIGIT_8
+# undef MSGPACK_PP_SLOT_1_DIGIT_9
+# undef MSGPACK_PP_SLOT_1_DIGIT_10
+#
+# if MSGPACK_PP_SLOT_TEMP_10 == 0
+# define MSGPACK_PP_SLOT_1_DIGIT_10 0
+# elif MSGPACK_PP_SLOT_TEMP_10 == 1
+# define MSGPACK_PP_SLOT_1_DIGIT_10 1
+# elif MSGPACK_PP_SLOT_TEMP_10 == 2
+# define MSGPACK_PP_SLOT_1_DIGIT_10 2
+# elif MSGPACK_PP_SLOT_TEMP_10 == 3
+# define MSGPACK_PP_SLOT_1_DIGIT_10 3
+# elif MSGPACK_PP_SLOT_TEMP_10 == 4
+# define MSGPACK_PP_SLOT_1_DIGIT_10 4
+# elif MSGPACK_PP_SLOT_TEMP_10 == 5
+# define MSGPACK_PP_SLOT_1_DIGIT_10 5
+# elif MSGPACK_PP_SLOT_TEMP_10 == 6
+# define MSGPACK_PP_SLOT_1_DIGIT_10 6
+# elif MSGPACK_PP_SLOT_TEMP_10 == 7
+# define MSGPACK_PP_SLOT_1_DIGIT_10 7
+# elif MSGPACK_PP_SLOT_TEMP_10 == 8
+# define MSGPACK_PP_SLOT_1_DIGIT_10 8
+# elif MSGPACK_PP_SLOT_TEMP_10 == 9
+# define MSGPACK_PP_SLOT_1_DIGIT_10 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_9 == 0
+# define MSGPACK_PP_SLOT_1_DIGIT_9 0
+# elif MSGPACK_PP_SLOT_TEMP_9 == 1
+# define MSGPACK_PP_SLOT_1_DIGIT_9 1
+# elif MSGPACK_PP_SLOT_TEMP_9 == 2
+# define MSGPACK_PP_SLOT_1_DIGIT_9 2
+# elif MSGPACK_PP_SLOT_TEMP_9 == 3
+# define MSGPACK_PP_SLOT_1_DIGIT_9 3
+# elif MSGPACK_PP_SLOT_TEMP_9 == 4
+# define MSGPACK_PP_SLOT_1_DIGIT_9 4
+# elif MSGPACK_PP_SLOT_TEMP_9 == 5
+# define MSGPACK_PP_SLOT_1_DIGIT_9 5
+# elif MSGPACK_PP_SLOT_TEMP_9 == 6
+# define MSGPACK_PP_SLOT_1_DIGIT_9 6
+# elif MSGPACK_PP_SLOT_TEMP_9 == 7
+# define MSGPACK_PP_SLOT_1_DIGIT_9 7
+# elif MSGPACK_PP_SLOT_TEMP_9 == 8
+# define MSGPACK_PP_SLOT_1_DIGIT_9 8
+# elif MSGPACK_PP_SLOT_TEMP_9 == 9
+# define MSGPACK_PP_SLOT_1_DIGIT_9 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_8 == 0
+# define MSGPACK_PP_SLOT_1_DIGIT_8 0
+# elif MSGPACK_PP_SLOT_TEMP_8 == 1
+# define MSGPACK_PP_SLOT_1_DIGIT_8 1
+# elif MSGPACK_PP_SLOT_TEMP_8 == 2
+# define MSGPACK_PP_SLOT_1_DIGIT_8 2
+# elif MSGPACK_PP_SLOT_TEMP_8 == 3
+# define MSGPACK_PP_SLOT_1_DIGIT_8 3
+# elif MSGPACK_PP_SLOT_TEMP_8 == 4
+# define MSGPACK_PP_SLOT_1_DIGIT_8 4
+# elif MSGPACK_PP_SLOT_TEMP_8 == 5
+# define MSGPACK_PP_SLOT_1_DIGIT_8 5
+# elif MSGPACK_PP_SLOT_TEMP_8 == 6
+# define MSGPACK_PP_SLOT_1_DIGIT_8 6
+# elif MSGPACK_PP_SLOT_TEMP_8 == 7
+# define MSGPACK_PP_SLOT_1_DIGIT_8 7
+# elif MSGPACK_PP_SLOT_TEMP_8 == 8
+# define MSGPACK_PP_SLOT_1_DIGIT_8 8
+# elif MSGPACK_PP_SLOT_TEMP_8 == 9
+# define MSGPACK_PP_SLOT_1_DIGIT_8 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_7 == 0
+# define MSGPACK_PP_SLOT_1_DIGIT_7 0
+# elif MSGPACK_PP_SLOT_TEMP_7 == 1
+# define MSGPACK_PP_SLOT_1_DIGIT_7 1
+# elif MSGPACK_PP_SLOT_TEMP_7 == 2
+# define MSGPACK_PP_SLOT_1_DIGIT_7 2
+# elif MSGPACK_PP_SLOT_TEMP_7 == 3
+# define MSGPACK_PP_SLOT_1_DIGIT_7 3
+# elif MSGPACK_PP_SLOT_TEMP_7 == 4
+# define MSGPACK_PP_SLOT_1_DIGIT_7 4
+# elif MSGPACK_PP_SLOT_TEMP_7 == 5
+# define MSGPACK_PP_SLOT_1_DIGIT_7 5
+# elif MSGPACK_PP_SLOT_TEMP_7 == 6
+# define MSGPACK_PP_SLOT_1_DIGIT_7 6
+# elif MSGPACK_PP_SLOT_TEMP_7 == 7
+# define MSGPACK_PP_SLOT_1_DIGIT_7 7
+# elif MSGPACK_PP_SLOT_TEMP_7 == 8
+# define MSGPACK_PP_SLOT_1_DIGIT_7 8
+# elif MSGPACK_PP_SLOT_TEMP_7 == 9
+# define MSGPACK_PP_SLOT_1_DIGIT_7 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_6 == 0
+# define MSGPACK_PP_SLOT_1_DIGIT_6 0
+# elif MSGPACK_PP_SLOT_TEMP_6 == 1
+# define MSGPACK_PP_SLOT_1_DIGIT_6 1
+# elif MSGPACK_PP_SLOT_TEMP_6 == 2
+# define MSGPACK_PP_SLOT_1_DIGIT_6 2
+# elif MSGPACK_PP_SLOT_TEMP_6 == 3
+# define MSGPACK_PP_SLOT_1_DIGIT_6 3
+# elif MSGPACK_PP_SLOT_TEMP_6 == 4
+# define MSGPACK_PP_SLOT_1_DIGIT_6 4
+# elif MSGPACK_PP_SLOT_TEMP_6 == 5
+# define MSGPACK_PP_SLOT_1_DIGIT_6 5
+# elif MSGPACK_PP_SLOT_TEMP_6 == 6
+# define MSGPACK_PP_SLOT_1_DIGIT_6 6
+# elif MSGPACK_PP_SLOT_TEMP_6 == 7
+# define MSGPACK_PP_SLOT_1_DIGIT_6 7
+# elif MSGPACK_PP_SLOT_TEMP_6 == 8
+# define MSGPACK_PP_SLOT_1_DIGIT_6 8
+# elif MSGPACK_PP_SLOT_TEMP_6 == 9
+# define MSGPACK_PP_SLOT_1_DIGIT_6 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_5 == 0
+# define MSGPACK_PP_SLOT_1_DIGIT_5 0
+# elif MSGPACK_PP_SLOT_TEMP_5 == 1
+# define MSGPACK_PP_SLOT_1_DIGIT_5 1
+# elif MSGPACK_PP_SLOT_TEMP_5 == 2
+# define MSGPACK_PP_SLOT_1_DIGIT_5 2
+# elif MSGPACK_PP_SLOT_TEMP_5 == 3
+# define MSGPACK_PP_SLOT_1_DIGIT_5 3
+# elif MSGPACK_PP_SLOT_TEMP_5 == 4
+# define MSGPACK_PP_SLOT_1_DIGIT_5 4
+# elif MSGPACK_PP_SLOT_TEMP_5 == 5
+# define MSGPACK_PP_SLOT_1_DIGIT_5 5
+# elif MSGPACK_PP_SLOT_TEMP_5 == 6
+# define MSGPACK_PP_SLOT_1_DIGIT_5 6
+# elif MSGPACK_PP_SLOT_TEMP_5 == 7
+# define MSGPACK_PP_SLOT_1_DIGIT_5 7
+# elif MSGPACK_PP_SLOT_TEMP_5 == 8
+# define MSGPACK_PP_SLOT_1_DIGIT_5 8
+# elif MSGPACK_PP_SLOT_TEMP_5 == 9
+# define MSGPACK_PP_SLOT_1_DIGIT_5 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_4 == 0
+# define MSGPACK_PP_SLOT_1_DIGIT_4 0
+# elif MSGPACK_PP_SLOT_TEMP_4 == 1
+# define MSGPACK_PP_SLOT_1_DIGIT_4 1
+# elif MSGPACK_PP_SLOT_TEMP_4 == 2
+# define MSGPACK_PP_SLOT_1_DIGIT_4 2
+# elif MSGPACK_PP_SLOT_TEMP_4 == 3
+# define MSGPACK_PP_SLOT_1_DIGIT_4 3
+# elif MSGPACK_PP_SLOT_TEMP_4 == 4
+# define MSGPACK_PP_SLOT_1_DIGIT_4 4
+# elif MSGPACK_PP_SLOT_TEMP_4 == 5
+# define MSGPACK_PP_SLOT_1_DIGIT_4 5
+# elif MSGPACK_PP_SLOT_TEMP_4 == 6
+# define MSGPACK_PP_SLOT_1_DIGIT_4 6
+# elif MSGPACK_PP_SLOT_TEMP_4 == 7
+# define MSGPACK_PP_SLOT_1_DIGIT_4 7
+# elif MSGPACK_PP_SLOT_TEMP_4 == 8
+# define MSGPACK_PP_SLOT_1_DIGIT_4 8
+# elif MSGPACK_PP_SLOT_TEMP_4 == 9
+# define MSGPACK_PP_SLOT_1_DIGIT_4 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_3 == 0
+# define MSGPACK_PP_SLOT_1_DIGIT_3 0
+# elif MSGPACK_PP_SLOT_TEMP_3 == 1
+# define MSGPACK_PP_SLOT_1_DIGIT_3 1
+# elif MSGPACK_PP_SLOT_TEMP_3 == 2
+# define MSGPACK_PP_SLOT_1_DIGIT_3 2
+# elif MSGPACK_PP_SLOT_TEMP_3 == 3
+# define MSGPACK_PP_SLOT_1_DIGIT_3 3
+# elif MSGPACK_PP_SLOT_TEMP_3 == 4
+# define MSGPACK_PP_SLOT_1_DIGIT_3 4
+# elif MSGPACK_PP_SLOT_TEMP_3 == 5
+# define MSGPACK_PP_SLOT_1_DIGIT_3 5
+# elif MSGPACK_PP_SLOT_TEMP_3 == 6
+# define MSGPACK_PP_SLOT_1_DIGIT_3 6
+# elif MSGPACK_PP_SLOT_TEMP_3 == 7
+# define MSGPACK_PP_SLOT_1_DIGIT_3 7
+# elif MSGPACK_PP_SLOT_TEMP_3 == 8
+# define MSGPACK_PP_SLOT_1_DIGIT_3 8
+# elif MSGPACK_PP_SLOT_TEMP_3 == 9
+# define MSGPACK_PP_SLOT_1_DIGIT_3 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_2 == 0
+# define MSGPACK_PP_SLOT_1_DIGIT_2 0
+# elif MSGPACK_PP_SLOT_TEMP_2 == 1
+# define MSGPACK_PP_SLOT_1_DIGIT_2 1
+# elif MSGPACK_PP_SLOT_TEMP_2 == 2
+# define MSGPACK_PP_SLOT_1_DIGIT_2 2
+# elif MSGPACK_PP_SLOT_TEMP_2 == 3
+# define MSGPACK_PP_SLOT_1_DIGIT_2 3
+# elif MSGPACK_PP_SLOT_TEMP_2 == 4
+# define MSGPACK_PP_SLOT_1_DIGIT_2 4
+# elif MSGPACK_PP_SLOT_TEMP_2 == 5
+# define MSGPACK_PP_SLOT_1_DIGIT_2 5
+# elif MSGPACK_PP_SLOT_TEMP_2 == 6
+# define MSGPACK_PP_SLOT_1_DIGIT_2 6
+# elif MSGPACK_PP_SLOT_TEMP_2 == 7
+# define MSGPACK_PP_SLOT_1_DIGIT_2 7
+# elif MSGPACK_PP_SLOT_TEMP_2 == 8
+# define MSGPACK_PP_SLOT_1_DIGIT_2 8
+# elif MSGPACK_PP_SLOT_TEMP_2 == 9
+# define MSGPACK_PP_SLOT_1_DIGIT_2 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_1 == 0
+# define MSGPACK_PP_SLOT_1_DIGIT_1 0
+# elif MSGPACK_PP_SLOT_TEMP_1 == 1
+# define MSGPACK_PP_SLOT_1_DIGIT_1 1
+# elif MSGPACK_PP_SLOT_TEMP_1 == 2
+# define MSGPACK_PP_SLOT_1_DIGIT_1 2
+# elif MSGPACK_PP_SLOT_TEMP_1 == 3
+# define MSGPACK_PP_SLOT_1_DIGIT_1 3
+# elif MSGPACK_PP_SLOT_TEMP_1 == 4
+# define MSGPACK_PP_SLOT_1_DIGIT_1 4
+# elif MSGPACK_PP_SLOT_TEMP_1 == 5
+# define MSGPACK_PP_SLOT_1_DIGIT_1 5
+# elif MSGPACK_PP_SLOT_TEMP_1 == 6
+# define MSGPACK_PP_SLOT_1_DIGIT_1 6
+# elif MSGPACK_PP_SLOT_TEMP_1 == 7
+# define MSGPACK_PP_SLOT_1_DIGIT_1 7
+# elif MSGPACK_PP_SLOT_TEMP_1 == 8
+# define MSGPACK_PP_SLOT_1_DIGIT_1 8
+# elif MSGPACK_PP_SLOT_TEMP_1 == 9
+# define MSGPACK_PP_SLOT_1_DIGIT_1 9
+# endif
+#
+# if MSGPACK_PP_SLOT_1_DIGIT_10
+# define MSGPACK_PP_SLOT_1() MSGPACK_PP_SLOT_CC_10(MSGPACK_PP_SLOT_1_DIGIT_10, MSGPACK_PP_SLOT_1_DIGIT_9, MSGPACK_PP_SLOT_1_DIGIT_8, MSGPACK_PP_SLOT_1_DIGIT_7, MSGPACK_PP_SLOT_1_DIGIT_6, MSGPACK_PP_SLOT_1_DIGIT_5, MSGPACK_PP_SLOT_1_DIGIT_4, MSGPACK_PP_SLOT_1_DIGIT_3, MSGPACK_PP_SLOT_1_DIGIT_2, MSGPACK_PP_SLOT_1_DIGIT_1)
+# elif MSGPACK_PP_SLOT_1_DIGIT_9
+# define MSGPACK_PP_SLOT_1() MSGPACK_PP_SLOT_CC_9(MSGPACK_PP_SLOT_1_DIGIT_9, MSGPACK_PP_SLOT_1_DIGIT_8, MSGPACK_PP_SLOT_1_DIGIT_7, MSGPACK_PP_SLOT_1_DIGIT_6, MSGPACK_PP_SLOT_1_DIGIT_5, MSGPACK_PP_SLOT_1_DIGIT_4, MSGPACK_PP_SLOT_1_DIGIT_3, MSGPACK_PP_SLOT_1_DIGIT_2, MSGPACK_PP_SLOT_1_DIGIT_1)
+# elif MSGPACK_PP_SLOT_1_DIGIT_8
+# define MSGPACK_PP_SLOT_1() MSGPACK_PP_SLOT_CC_8(MSGPACK_PP_SLOT_1_DIGIT_8, MSGPACK_PP_SLOT_1_DIGIT_7, MSGPACK_PP_SLOT_1_DIGIT_6, MSGPACK_PP_SLOT_1_DIGIT_5, MSGPACK_PP_SLOT_1_DIGIT_4, MSGPACK_PP_SLOT_1_DIGIT_3, MSGPACK_PP_SLOT_1_DIGIT_2, MSGPACK_PP_SLOT_1_DIGIT_1)
+# elif MSGPACK_PP_SLOT_1_DIGIT_7
+# define MSGPACK_PP_SLOT_1() MSGPACK_PP_SLOT_CC_7(MSGPACK_PP_SLOT_1_DIGIT_7, MSGPACK_PP_SLOT_1_DIGIT_6, MSGPACK_PP_SLOT_1_DIGIT_5, MSGPACK_PP_SLOT_1_DIGIT_4, MSGPACK_PP_SLOT_1_DIGIT_3, MSGPACK_PP_SLOT_1_DIGIT_2, MSGPACK_PP_SLOT_1_DIGIT_1)
+# elif MSGPACK_PP_SLOT_1_DIGIT_6
+# define MSGPACK_PP_SLOT_1() MSGPACK_PP_SLOT_CC_6(MSGPACK_PP_SLOT_1_DIGIT_6, MSGPACK_PP_SLOT_1_DIGIT_5, MSGPACK_PP_SLOT_1_DIGIT_4, MSGPACK_PP_SLOT_1_DIGIT_3, MSGPACK_PP_SLOT_1_DIGIT_2, MSGPACK_PP_SLOT_1_DIGIT_1)
+# elif MSGPACK_PP_SLOT_1_DIGIT_5
+# define MSGPACK_PP_SLOT_1() MSGPACK_PP_SLOT_CC_5(MSGPACK_PP_SLOT_1_DIGIT_5, MSGPACK_PP_SLOT_1_DIGIT_4, MSGPACK_PP_SLOT_1_DIGIT_3, MSGPACK_PP_SLOT_1_DIGIT_2, MSGPACK_PP_SLOT_1_DIGIT_1)
+# elif MSGPACK_PP_SLOT_1_DIGIT_4
+# define MSGPACK_PP_SLOT_1() MSGPACK_PP_SLOT_CC_4(MSGPACK_PP_SLOT_1_DIGIT_4, MSGPACK_PP_SLOT_1_DIGIT_3, MSGPACK_PP_SLOT_1_DIGIT_2, MSGPACK_PP_SLOT_1_DIGIT_1)
+# elif MSGPACK_PP_SLOT_1_DIGIT_3
+# define MSGPACK_PP_SLOT_1() MSGPACK_PP_SLOT_CC_3(MSGPACK_PP_SLOT_1_DIGIT_3, MSGPACK_PP_SLOT_1_DIGIT_2, MSGPACK_PP_SLOT_1_DIGIT_1)
+# elif MSGPACK_PP_SLOT_1_DIGIT_2
+# define MSGPACK_PP_SLOT_1() MSGPACK_PP_SLOT_CC_2(MSGPACK_PP_SLOT_1_DIGIT_2, MSGPACK_PP_SLOT_1_DIGIT_1)
+# else
+# define MSGPACK_PP_SLOT_1() MSGPACK_PP_SLOT_1_DIGIT_1
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/slot/detail/slot2.hpp b/third_party/msgpack/include/msgpack/preprocessor/slot/detail/slot2.hpp
new file mode 100644
index 0000000000..3e1868b426
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/slot/detail/slot2.hpp
@@ -0,0 +1,267 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <msgpack/preprocessor/slot/detail/shared.hpp>
+#
+# undef MSGPACK_PP_SLOT_2
+#
+# undef MSGPACK_PP_SLOT_2_DIGIT_1
+# undef MSGPACK_PP_SLOT_2_DIGIT_2
+# undef MSGPACK_PP_SLOT_2_DIGIT_3
+# undef MSGPACK_PP_SLOT_2_DIGIT_4
+# undef MSGPACK_PP_SLOT_2_DIGIT_5
+# undef MSGPACK_PP_SLOT_2_DIGIT_6
+# undef MSGPACK_PP_SLOT_2_DIGIT_7
+# undef MSGPACK_PP_SLOT_2_DIGIT_8
+# undef MSGPACK_PP_SLOT_2_DIGIT_9
+# undef MSGPACK_PP_SLOT_2_DIGIT_10
+#
+# if MSGPACK_PP_SLOT_TEMP_10 == 0
+# define MSGPACK_PP_SLOT_2_DIGIT_10 0
+# elif MSGPACK_PP_SLOT_TEMP_10 == 1
+# define MSGPACK_PP_SLOT_2_DIGIT_10 1
+# elif MSGPACK_PP_SLOT_TEMP_10 == 2
+# define MSGPACK_PP_SLOT_2_DIGIT_10 2
+# elif MSGPACK_PP_SLOT_TEMP_10 == 3
+# define MSGPACK_PP_SLOT_2_DIGIT_10 3
+# elif MSGPACK_PP_SLOT_TEMP_10 == 4
+# define MSGPACK_PP_SLOT_2_DIGIT_10 4
+# elif MSGPACK_PP_SLOT_TEMP_10 == 5
+# define MSGPACK_PP_SLOT_2_DIGIT_10 5
+# elif MSGPACK_PP_SLOT_TEMP_10 == 6
+# define MSGPACK_PP_SLOT_2_DIGIT_10 6
+# elif MSGPACK_PP_SLOT_TEMP_10 == 7
+# define MSGPACK_PP_SLOT_2_DIGIT_10 7
+# elif MSGPACK_PP_SLOT_TEMP_10 == 8
+# define MSGPACK_PP_SLOT_2_DIGIT_10 8
+# elif MSGPACK_PP_SLOT_TEMP_10 == 9
+# define MSGPACK_PP_SLOT_2_DIGIT_10 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_9 == 0
+# define MSGPACK_PP_SLOT_2_DIGIT_9 0
+# elif MSGPACK_PP_SLOT_TEMP_9 == 1
+# define MSGPACK_PP_SLOT_2_DIGIT_9 1
+# elif MSGPACK_PP_SLOT_TEMP_9 == 2
+# define MSGPACK_PP_SLOT_2_DIGIT_9 2
+# elif MSGPACK_PP_SLOT_TEMP_9 == 3
+# define MSGPACK_PP_SLOT_2_DIGIT_9 3
+# elif MSGPACK_PP_SLOT_TEMP_9 == 4
+# define MSGPACK_PP_SLOT_2_DIGIT_9 4
+# elif MSGPACK_PP_SLOT_TEMP_9 == 5
+# define MSGPACK_PP_SLOT_2_DIGIT_9 5
+# elif MSGPACK_PP_SLOT_TEMP_9 == 6
+# define MSGPACK_PP_SLOT_2_DIGIT_9 6
+# elif MSGPACK_PP_SLOT_TEMP_9 == 7
+# define MSGPACK_PP_SLOT_2_DIGIT_9 7
+# elif MSGPACK_PP_SLOT_TEMP_9 == 8
+# define MSGPACK_PP_SLOT_2_DIGIT_9 8
+# elif MSGPACK_PP_SLOT_TEMP_9 == 9
+# define MSGPACK_PP_SLOT_2_DIGIT_9 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_8 == 0
+# define MSGPACK_PP_SLOT_2_DIGIT_8 0
+# elif MSGPACK_PP_SLOT_TEMP_8 == 1
+# define MSGPACK_PP_SLOT_2_DIGIT_8 1
+# elif MSGPACK_PP_SLOT_TEMP_8 == 2
+# define MSGPACK_PP_SLOT_2_DIGIT_8 2
+# elif MSGPACK_PP_SLOT_TEMP_8 == 3
+# define MSGPACK_PP_SLOT_2_DIGIT_8 3
+# elif MSGPACK_PP_SLOT_TEMP_8 == 4
+# define MSGPACK_PP_SLOT_2_DIGIT_8 4
+# elif MSGPACK_PP_SLOT_TEMP_8 == 5
+# define MSGPACK_PP_SLOT_2_DIGIT_8 5
+# elif MSGPACK_PP_SLOT_TEMP_8 == 6
+# define MSGPACK_PP_SLOT_2_DIGIT_8 6
+# elif MSGPACK_PP_SLOT_TEMP_8 == 7
+# define MSGPACK_PP_SLOT_2_DIGIT_8 7
+# elif MSGPACK_PP_SLOT_TEMP_8 == 8
+# define MSGPACK_PP_SLOT_2_DIGIT_8 8
+# elif MSGPACK_PP_SLOT_TEMP_8 == 9
+# define MSGPACK_PP_SLOT_2_DIGIT_8 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_7 == 0
+# define MSGPACK_PP_SLOT_2_DIGIT_7 0
+# elif MSGPACK_PP_SLOT_TEMP_7 == 1
+# define MSGPACK_PP_SLOT_2_DIGIT_7 1
+# elif MSGPACK_PP_SLOT_TEMP_7 == 2
+# define MSGPACK_PP_SLOT_2_DIGIT_7 2
+# elif MSGPACK_PP_SLOT_TEMP_7 == 3
+# define MSGPACK_PP_SLOT_2_DIGIT_7 3
+# elif MSGPACK_PP_SLOT_TEMP_7 == 4
+# define MSGPACK_PP_SLOT_2_DIGIT_7 4
+# elif MSGPACK_PP_SLOT_TEMP_7 == 5
+# define MSGPACK_PP_SLOT_2_DIGIT_7 5
+# elif MSGPACK_PP_SLOT_TEMP_7 == 6
+# define MSGPACK_PP_SLOT_2_DIGIT_7 6
+# elif MSGPACK_PP_SLOT_TEMP_7 == 7
+# define MSGPACK_PP_SLOT_2_DIGIT_7 7
+# elif MSGPACK_PP_SLOT_TEMP_7 == 8
+# define MSGPACK_PP_SLOT_2_DIGIT_7 8
+# elif MSGPACK_PP_SLOT_TEMP_7 == 9
+# define MSGPACK_PP_SLOT_2_DIGIT_7 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_6 == 0
+# define MSGPACK_PP_SLOT_2_DIGIT_6 0
+# elif MSGPACK_PP_SLOT_TEMP_6 == 1
+# define MSGPACK_PP_SLOT_2_DIGIT_6 1
+# elif MSGPACK_PP_SLOT_TEMP_6 == 2
+# define MSGPACK_PP_SLOT_2_DIGIT_6 2
+# elif MSGPACK_PP_SLOT_TEMP_6 == 3
+# define MSGPACK_PP_SLOT_2_DIGIT_6 3
+# elif MSGPACK_PP_SLOT_TEMP_6 == 4
+# define MSGPACK_PP_SLOT_2_DIGIT_6 4
+# elif MSGPACK_PP_SLOT_TEMP_6 == 5
+# define MSGPACK_PP_SLOT_2_DIGIT_6 5
+# elif MSGPACK_PP_SLOT_TEMP_6 == 6
+# define MSGPACK_PP_SLOT_2_DIGIT_6 6
+# elif MSGPACK_PP_SLOT_TEMP_6 == 7
+# define MSGPACK_PP_SLOT_2_DIGIT_6 7
+# elif MSGPACK_PP_SLOT_TEMP_6 == 8
+# define MSGPACK_PP_SLOT_2_DIGIT_6 8
+# elif MSGPACK_PP_SLOT_TEMP_6 == 9
+# define MSGPACK_PP_SLOT_2_DIGIT_6 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_5 == 0
+# define MSGPACK_PP_SLOT_2_DIGIT_5 0
+# elif MSGPACK_PP_SLOT_TEMP_5 == 1
+# define MSGPACK_PP_SLOT_2_DIGIT_5 1
+# elif MSGPACK_PP_SLOT_TEMP_5 == 2
+# define MSGPACK_PP_SLOT_2_DIGIT_5 2
+# elif MSGPACK_PP_SLOT_TEMP_5 == 3
+# define MSGPACK_PP_SLOT_2_DIGIT_5 3
+# elif MSGPACK_PP_SLOT_TEMP_5 == 4
+# define MSGPACK_PP_SLOT_2_DIGIT_5 4
+# elif MSGPACK_PP_SLOT_TEMP_5 == 5
+# define MSGPACK_PP_SLOT_2_DIGIT_5 5
+# elif MSGPACK_PP_SLOT_TEMP_5 == 6
+# define MSGPACK_PP_SLOT_2_DIGIT_5 6
+# elif MSGPACK_PP_SLOT_TEMP_5 == 7
+# define MSGPACK_PP_SLOT_2_DIGIT_5 7
+# elif MSGPACK_PP_SLOT_TEMP_5 == 8
+# define MSGPACK_PP_SLOT_2_DIGIT_5 8
+# elif MSGPACK_PP_SLOT_TEMP_5 == 9
+# define MSGPACK_PP_SLOT_2_DIGIT_5 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_4 == 0
+# define MSGPACK_PP_SLOT_2_DIGIT_4 0
+# elif MSGPACK_PP_SLOT_TEMP_4 == 1
+# define MSGPACK_PP_SLOT_2_DIGIT_4 1
+# elif MSGPACK_PP_SLOT_TEMP_4 == 2
+# define MSGPACK_PP_SLOT_2_DIGIT_4 2
+# elif MSGPACK_PP_SLOT_TEMP_4 == 3
+# define MSGPACK_PP_SLOT_2_DIGIT_4 3
+# elif MSGPACK_PP_SLOT_TEMP_4 == 4
+# define MSGPACK_PP_SLOT_2_DIGIT_4 4
+# elif MSGPACK_PP_SLOT_TEMP_4 == 5
+# define MSGPACK_PP_SLOT_2_DIGIT_4 5
+# elif MSGPACK_PP_SLOT_TEMP_4 == 6
+# define MSGPACK_PP_SLOT_2_DIGIT_4 6
+# elif MSGPACK_PP_SLOT_TEMP_4 == 7
+# define MSGPACK_PP_SLOT_2_DIGIT_4 7
+# elif MSGPACK_PP_SLOT_TEMP_4 == 8
+# define MSGPACK_PP_SLOT_2_DIGIT_4 8
+# elif MSGPACK_PP_SLOT_TEMP_4 == 9
+# define MSGPACK_PP_SLOT_2_DIGIT_4 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_3 == 0
+# define MSGPACK_PP_SLOT_2_DIGIT_3 0
+# elif MSGPACK_PP_SLOT_TEMP_3 == 1
+# define MSGPACK_PP_SLOT_2_DIGIT_3 1
+# elif MSGPACK_PP_SLOT_TEMP_3 == 2
+# define MSGPACK_PP_SLOT_2_DIGIT_3 2
+# elif MSGPACK_PP_SLOT_TEMP_3 == 3
+# define MSGPACK_PP_SLOT_2_DIGIT_3 3
+# elif MSGPACK_PP_SLOT_TEMP_3 == 4
+# define MSGPACK_PP_SLOT_2_DIGIT_3 4
+# elif MSGPACK_PP_SLOT_TEMP_3 == 5
+# define MSGPACK_PP_SLOT_2_DIGIT_3 5
+# elif MSGPACK_PP_SLOT_TEMP_3 == 6
+# define MSGPACK_PP_SLOT_2_DIGIT_3 6
+# elif MSGPACK_PP_SLOT_TEMP_3 == 7
+# define MSGPACK_PP_SLOT_2_DIGIT_3 7
+# elif MSGPACK_PP_SLOT_TEMP_3 == 8
+# define MSGPACK_PP_SLOT_2_DIGIT_3 8
+# elif MSGPACK_PP_SLOT_TEMP_3 == 9
+# define MSGPACK_PP_SLOT_2_DIGIT_3 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_2 == 0
+# define MSGPACK_PP_SLOT_2_DIGIT_2 0
+# elif MSGPACK_PP_SLOT_TEMP_2 == 1
+# define MSGPACK_PP_SLOT_2_DIGIT_2 1
+# elif MSGPACK_PP_SLOT_TEMP_2 == 2
+# define MSGPACK_PP_SLOT_2_DIGIT_2 2
+# elif MSGPACK_PP_SLOT_TEMP_2 == 3
+# define MSGPACK_PP_SLOT_2_DIGIT_2 3
+# elif MSGPACK_PP_SLOT_TEMP_2 == 4
+# define MSGPACK_PP_SLOT_2_DIGIT_2 4
+# elif MSGPACK_PP_SLOT_TEMP_2 == 5
+# define MSGPACK_PP_SLOT_2_DIGIT_2 5
+# elif MSGPACK_PP_SLOT_TEMP_2 == 6
+# define MSGPACK_PP_SLOT_2_DIGIT_2 6
+# elif MSGPACK_PP_SLOT_TEMP_2 == 7
+# define MSGPACK_PP_SLOT_2_DIGIT_2 7
+# elif MSGPACK_PP_SLOT_TEMP_2 == 8
+# define MSGPACK_PP_SLOT_2_DIGIT_2 8
+# elif MSGPACK_PP_SLOT_TEMP_2 == 9
+# define MSGPACK_PP_SLOT_2_DIGIT_2 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_1 == 0
+# define MSGPACK_PP_SLOT_2_DIGIT_1 0
+# elif MSGPACK_PP_SLOT_TEMP_1 == 1
+# define MSGPACK_PP_SLOT_2_DIGIT_1 1
+# elif MSGPACK_PP_SLOT_TEMP_1 == 2
+# define MSGPACK_PP_SLOT_2_DIGIT_1 2
+# elif MSGPACK_PP_SLOT_TEMP_1 == 3
+# define MSGPACK_PP_SLOT_2_DIGIT_1 3
+# elif MSGPACK_PP_SLOT_TEMP_1 == 4
+# define MSGPACK_PP_SLOT_2_DIGIT_1 4
+# elif MSGPACK_PP_SLOT_TEMP_1 == 5
+# define MSGPACK_PP_SLOT_2_DIGIT_1 5
+# elif MSGPACK_PP_SLOT_TEMP_1 == 6
+# define MSGPACK_PP_SLOT_2_DIGIT_1 6
+# elif MSGPACK_PP_SLOT_TEMP_1 == 7
+# define MSGPACK_PP_SLOT_2_DIGIT_1 7
+# elif MSGPACK_PP_SLOT_TEMP_1 == 8
+# define MSGPACK_PP_SLOT_2_DIGIT_1 8
+# elif MSGPACK_PP_SLOT_TEMP_1 == 9
+# define MSGPACK_PP_SLOT_2_DIGIT_1 9
+# endif
+#
+# if MSGPACK_PP_SLOT_2_DIGIT_10
+# define MSGPACK_PP_SLOT_2() MSGPACK_PP_SLOT_CC_10(MSGPACK_PP_SLOT_2_DIGIT_10, MSGPACK_PP_SLOT_2_DIGIT_9, MSGPACK_PP_SLOT_2_DIGIT_8, MSGPACK_PP_SLOT_2_DIGIT_7, MSGPACK_PP_SLOT_2_DIGIT_6, MSGPACK_PP_SLOT_2_DIGIT_5, MSGPACK_PP_SLOT_2_DIGIT_4, MSGPACK_PP_SLOT_2_DIGIT_3, MSGPACK_PP_SLOT_2_DIGIT_2, MSGPACK_PP_SLOT_2_DIGIT_1)
+# elif MSGPACK_PP_SLOT_2_DIGIT_9
+# define MSGPACK_PP_SLOT_2() MSGPACK_PP_SLOT_CC_9(MSGPACK_PP_SLOT_2_DIGIT_9, MSGPACK_PP_SLOT_2_DIGIT_8, MSGPACK_PP_SLOT_2_DIGIT_7, MSGPACK_PP_SLOT_2_DIGIT_6, MSGPACK_PP_SLOT_2_DIGIT_5, MSGPACK_PP_SLOT_2_DIGIT_4, MSGPACK_PP_SLOT_2_DIGIT_3, MSGPACK_PP_SLOT_2_DIGIT_2, MSGPACK_PP_SLOT_2_DIGIT_1)
+# elif MSGPACK_PP_SLOT_2_DIGIT_8
+# define MSGPACK_PP_SLOT_2() MSGPACK_PP_SLOT_CC_8(MSGPACK_PP_SLOT_2_DIGIT_8, MSGPACK_PP_SLOT_2_DIGIT_7, MSGPACK_PP_SLOT_2_DIGIT_6, MSGPACK_PP_SLOT_2_DIGIT_5, MSGPACK_PP_SLOT_2_DIGIT_4, MSGPACK_PP_SLOT_2_DIGIT_3, MSGPACK_PP_SLOT_2_DIGIT_2, MSGPACK_PP_SLOT_2_DIGIT_1)
+# elif MSGPACK_PP_SLOT_2_DIGIT_7
+# define MSGPACK_PP_SLOT_2() MSGPACK_PP_SLOT_CC_7(MSGPACK_PP_SLOT_2_DIGIT_7, MSGPACK_PP_SLOT_2_DIGIT_6, MSGPACK_PP_SLOT_2_DIGIT_5, MSGPACK_PP_SLOT_2_DIGIT_4, MSGPACK_PP_SLOT_2_DIGIT_3, MSGPACK_PP_SLOT_2_DIGIT_2, MSGPACK_PP_SLOT_2_DIGIT_1)
+# elif MSGPACK_PP_SLOT_2_DIGIT_6
+# define MSGPACK_PP_SLOT_2() MSGPACK_PP_SLOT_CC_6(MSGPACK_PP_SLOT_2_DIGIT_6, MSGPACK_PP_SLOT_2_DIGIT_5, MSGPACK_PP_SLOT_2_DIGIT_4, MSGPACK_PP_SLOT_2_DIGIT_3, MSGPACK_PP_SLOT_2_DIGIT_2, MSGPACK_PP_SLOT_2_DIGIT_1)
+# elif MSGPACK_PP_SLOT_2_DIGIT_5
+# define MSGPACK_PP_SLOT_2() MSGPACK_PP_SLOT_CC_5(MSGPACK_PP_SLOT_2_DIGIT_5, MSGPACK_PP_SLOT_2_DIGIT_4, MSGPACK_PP_SLOT_2_DIGIT_3, MSGPACK_PP_SLOT_2_DIGIT_2, MSGPACK_PP_SLOT_2_DIGIT_1)
+# elif MSGPACK_PP_SLOT_2_DIGIT_4
+# define MSGPACK_PP_SLOT_2() MSGPACK_PP_SLOT_CC_4(MSGPACK_PP_SLOT_2_DIGIT_4, MSGPACK_PP_SLOT_2_DIGIT_3, MSGPACK_PP_SLOT_2_DIGIT_2, MSGPACK_PP_SLOT_2_DIGIT_1)
+# elif MSGPACK_PP_SLOT_2_DIGIT_3
+# define MSGPACK_PP_SLOT_2() MSGPACK_PP_SLOT_CC_3(MSGPACK_PP_SLOT_2_DIGIT_3, MSGPACK_PP_SLOT_2_DIGIT_2, MSGPACK_PP_SLOT_2_DIGIT_1)
+# elif MSGPACK_PP_SLOT_2_DIGIT_2
+# define MSGPACK_PP_SLOT_2() MSGPACK_PP_SLOT_CC_2(MSGPACK_PP_SLOT_2_DIGIT_2, MSGPACK_PP_SLOT_2_DIGIT_1)
+# else
+# define MSGPACK_PP_SLOT_2() MSGPACK_PP_SLOT_2_DIGIT_1
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/slot/detail/slot3.hpp b/third_party/msgpack/include/msgpack/preprocessor/slot/detail/slot3.hpp
new file mode 100644
index 0000000000..083bc8ab1e
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/slot/detail/slot3.hpp
@@ -0,0 +1,267 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <msgpack/preprocessor/slot/detail/shared.hpp>
+#
+# undef MSGPACK_PP_SLOT_3
+#
+# undef MSGPACK_PP_SLOT_3_DIGIT_1
+# undef MSGPACK_PP_SLOT_3_DIGIT_2
+# undef MSGPACK_PP_SLOT_3_DIGIT_3
+# undef MSGPACK_PP_SLOT_3_DIGIT_4
+# undef MSGPACK_PP_SLOT_3_DIGIT_5
+# undef MSGPACK_PP_SLOT_3_DIGIT_6
+# undef MSGPACK_PP_SLOT_3_DIGIT_7
+# undef MSGPACK_PP_SLOT_3_DIGIT_8
+# undef MSGPACK_PP_SLOT_3_DIGIT_9
+# undef MSGPACK_PP_SLOT_3_DIGIT_10
+#
+# if MSGPACK_PP_SLOT_TEMP_10 == 0
+# define MSGPACK_PP_SLOT_3_DIGIT_10 0
+# elif MSGPACK_PP_SLOT_TEMP_10 == 1
+# define MSGPACK_PP_SLOT_3_DIGIT_10 1
+# elif MSGPACK_PP_SLOT_TEMP_10 == 2
+# define MSGPACK_PP_SLOT_3_DIGIT_10 2
+# elif MSGPACK_PP_SLOT_TEMP_10 == 3
+# define MSGPACK_PP_SLOT_3_DIGIT_10 3
+# elif MSGPACK_PP_SLOT_TEMP_10 == 4
+# define MSGPACK_PP_SLOT_3_DIGIT_10 4
+# elif MSGPACK_PP_SLOT_TEMP_10 == 5
+# define MSGPACK_PP_SLOT_3_DIGIT_10 5
+# elif MSGPACK_PP_SLOT_TEMP_10 == 6
+# define MSGPACK_PP_SLOT_3_DIGIT_10 6
+# elif MSGPACK_PP_SLOT_TEMP_10 == 7
+# define MSGPACK_PP_SLOT_3_DIGIT_10 7
+# elif MSGPACK_PP_SLOT_TEMP_10 == 8
+# define MSGPACK_PP_SLOT_3_DIGIT_10 8
+# elif MSGPACK_PP_SLOT_TEMP_10 == 9
+# define MSGPACK_PP_SLOT_3_DIGIT_10 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_9 == 0
+# define MSGPACK_PP_SLOT_3_DIGIT_9 0
+# elif MSGPACK_PP_SLOT_TEMP_9 == 1
+# define MSGPACK_PP_SLOT_3_DIGIT_9 1
+# elif MSGPACK_PP_SLOT_TEMP_9 == 2
+# define MSGPACK_PP_SLOT_3_DIGIT_9 2
+# elif MSGPACK_PP_SLOT_TEMP_9 == 3
+# define MSGPACK_PP_SLOT_3_DIGIT_9 3
+# elif MSGPACK_PP_SLOT_TEMP_9 == 4
+# define MSGPACK_PP_SLOT_3_DIGIT_9 4
+# elif MSGPACK_PP_SLOT_TEMP_9 == 5
+# define MSGPACK_PP_SLOT_3_DIGIT_9 5
+# elif MSGPACK_PP_SLOT_TEMP_9 == 6
+# define MSGPACK_PP_SLOT_3_DIGIT_9 6
+# elif MSGPACK_PP_SLOT_TEMP_9 == 7
+# define MSGPACK_PP_SLOT_3_DIGIT_9 7
+# elif MSGPACK_PP_SLOT_TEMP_9 == 8
+# define MSGPACK_PP_SLOT_3_DIGIT_9 8
+# elif MSGPACK_PP_SLOT_TEMP_9 == 9
+# define MSGPACK_PP_SLOT_3_DIGIT_9 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_8 == 0
+# define MSGPACK_PP_SLOT_3_DIGIT_8 0
+# elif MSGPACK_PP_SLOT_TEMP_8 == 1
+# define MSGPACK_PP_SLOT_3_DIGIT_8 1
+# elif MSGPACK_PP_SLOT_TEMP_8 == 2
+# define MSGPACK_PP_SLOT_3_DIGIT_8 2
+# elif MSGPACK_PP_SLOT_TEMP_8 == 3
+# define MSGPACK_PP_SLOT_3_DIGIT_8 3
+# elif MSGPACK_PP_SLOT_TEMP_8 == 4
+# define MSGPACK_PP_SLOT_3_DIGIT_8 4
+# elif MSGPACK_PP_SLOT_TEMP_8 == 5
+# define MSGPACK_PP_SLOT_3_DIGIT_8 5
+# elif MSGPACK_PP_SLOT_TEMP_8 == 6
+# define MSGPACK_PP_SLOT_3_DIGIT_8 6
+# elif MSGPACK_PP_SLOT_TEMP_8 == 7
+# define MSGPACK_PP_SLOT_3_DIGIT_8 7
+# elif MSGPACK_PP_SLOT_TEMP_8 == 8
+# define MSGPACK_PP_SLOT_3_DIGIT_8 8
+# elif MSGPACK_PP_SLOT_TEMP_8 == 9
+# define MSGPACK_PP_SLOT_3_DIGIT_8 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_7 == 0
+# define MSGPACK_PP_SLOT_3_DIGIT_7 0
+# elif MSGPACK_PP_SLOT_TEMP_7 == 1
+# define MSGPACK_PP_SLOT_3_DIGIT_7 1
+# elif MSGPACK_PP_SLOT_TEMP_7 == 2
+# define MSGPACK_PP_SLOT_3_DIGIT_7 2
+# elif MSGPACK_PP_SLOT_TEMP_7 == 3
+# define MSGPACK_PP_SLOT_3_DIGIT_7 3
+# elif MSGPACK_PP_SLOT_TEMP_7 == 4
+# define MSGPACK_PP_SLOT_3_DIGIT_7 4
+# elif MSGPACK_PP_SLOT_TEMP_7 == 5
+# define MSGPACK_PP_SLOT_3_DIGIT_7 5
+# elif MSGPACK_PP_SLOT_TEMP_7 == 6
+# define MSGPACK_PP_SLOT_3_DIGIT_7 6
+# elif MSGPACK_PP_SLOT_TEMP_7 == 7
+# define MSGPACK_PP_SLOT_3_DIGIT_7 7
+# elif MSGPACK_PP_SLOT_TEMP_7 == 8
+# define MSGPACK_PP_SLOT_3_DIGIT_7 8
+# elif MSGPACK_PP_SLOT_TEMP_7 == 9
+# define MSGPACK_PP_SLOT_3_DIGIT_7 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_6 == 0
+# define MSGPACK_PP_SLOT_3_DIGIT_6 0
+# elif MSGPACK_PP_SLOT_TEMP_6 == 1
+# define MSGPACK_PP_SLOT_3_DIGIT_6 1
+# elif MSGPACK_PP_SLOT_TEMP_6 == 2
+# define MSGPACK_PP_SLOT_3_DIGIT_6 2
+# elif MSGPACK_PP_SLOT_TEMP_6 == 3
+# define MSGPACK_PP_SLOT_3_DIGIT_6 3
+# elif MSGPACK_PP_SLOT_TEMP_6 == 4
+# define MSGPACK_PP_SLOT_3_DIGIT_6 4
+# elif MSGPACK_PP_SLOT_TEMP_6 == 5
+# define MSGPACK_PP_SLOT_3_DIGIT_6 5
+# elif MSGPACK_PP_SLOT_TEMP_6 == 6
+# define MSGPACK_PP_SLOT_3_DIGIT_6 6
+# elif MSGPACK_PP_SLOT_TEMP_6 == 7
+# define MSGPACK_PP_SLOT_3_DIGIT_6 7
+# elif MSGPACK_PP_SLOT_TEMP_6 == 8
+# define MSGPACK_PP_SLOT_3_DIGIT_6 8
+# elif MSGPACK_PP_SLOT_TEMP_6 == 9
+# define MSGPACK_PP_SLOT_3_DIGIT_6 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_5 == 0
+# define MSGPACK_PP_SLOT_3_DIGIT_5 0
+# elif MSGPACK_PP_SLOT_TEMP_5 == 1
+# define MSGPACK_PP_SLOT_3_DIGIT_5 1
+# elif MSGPACK_PP_SLOT_TEMP_5 == 2
+# define MSGPACK_PP_SLOT_3_DIGIT_5 2
+# elif MSGPACK_PP_SLOT_TEMP_5 == 3
+# define MSGPACK_PP_SLOT_3_DIGIT_5 3
+# elif MSGPACK_PP_SLOT_TEMP_5 == 4
+# define MSGPACK_PP_SLOT_3_DIGIT_5 4
+# elif MSGPACK_PP_SLOT_TEMP_5 == 5
+# define MSGPACK_PP_SLOT_3_DIGIT_5 5
+# elif MSGPACK_PP_SLOT_TEMP_5 == 6
+# define MSGPACK_PP_SLOT_3_DIGIT_5 6
+# elif MSGPACK_PP_SLOT_TEMP_5 == 7
+# define MSGPACK_PP_SLOT_3_DIGIT_5 7
+# elif MSGPACK_PP_SLOT_TEMP_5 == 8
+# define MSGPACK_PP_SLOT_3_DIGIT_5 8
+# elif MSGPACK_PP_SLOT_TEMP_5 == 9
+# define MSGPACK_PP_SLOT_3_DIGIT_5 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_4 == 0
+# define MSGPACK_PP_SLOT_3_DIGIT_4 0
+# elif MSGPACK_PP_SLOT_TEMP_4 == 1
+# define MSGPACK_PP_SLOT_3_DIGIT_4 1
+# elif MSGPACK_PP_SLOT_TEMP_4 == 2
+# define MSGPACK_PP_SLOT_3_DIGIT_4 2
+# elif MSGPACK_PP_SLOT_TEMP_4 == 3
+# define MSGPACK_PP_SLOT_3_DIGIT_4 3
+# elif MSGPACK_PP_SLOT_TEMP_4 == 4
+# define MSGPACK_PP_SLOT_3_DIGIT_4 4
+# elif MSGPACK_PP_SLOT_TEMP_4 == 5
+# define MSGPACK_PP_SLOT_3_DIGIT_4 5
+# elif MSGPACK_PP_SLOT_TEMP_4 == 6
+# define MSGPACK_PP_SLOT_3_DIGIT_4 6
+# elif MSGPACK_PP_SLOT_TEMP_4 == 7
+# define MSGPACK_PP_SLOT_3_DIGIT_4 7
+# elif MSGPACK_PP_SLOT_TEMP_4 == 8
+# define MSGPACK_PP_SLOT_3_DIGIT_4 8
+# elif MSGPACK_PP_SLOT_TEMP_4 == 9
+# define MSGPACK_PP_SLOT_3_DIGIT_4 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_3 == 0
+# define MSGPACK_PP_SLOT_3_DIGIT_3 0
+# elif MSGPACK_PP_SLOT_TEMP_3 == 1
+# define MSGPACK_PP_SLOT_3_DIGIT_3 1
+# elif MSGPACK_PP_SLOT_TEMP_3 == 2
+# define MSGPACK_PP_SLOT_3_DIGIT_3 2
+# elif MSGPACK_PP_SLOT_TEMP_3 == 3
+# define MSGPACK_PP_SLOT_3_DIGIT_3 3
+# elif MSGPACK_PP_SLOT_TEMP_3 == 4
+# define MSGPACK_PP_SLOT_3_DIGIT_3 4
+# elif MSGPACK_PP_SLOT_TEMP_3 == 5
+# define MSGPACK_PP_SLOT_3_DIGIT_3 5
+# elif MSGPACK_PP_SLOT_TEMP_3 == 6
+# define MSGPACK_PP_SLOT_3_DIGIT_3 6
+# elif MSGPACK_PP_SLOT_TEMP_3 == 7
+# define MSGPACK_PP_SLOT_3_DIGIT_3 7
+# elif MSGPACK_PP_SLOT_TEMP_3 == 8
+# define MSGPACK_PP_SLOT_3_DIGIT_3 8
+# elif MSGPACK_PP_SLOT_TEMP_3 == 9
+# define MSGPACK_PP_SLOT_3_DIGIT_3 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_2 == 0
+# define MSGPACK_PP_SLOT_3_DIGIT_2 0
+# elif MSGPACK_PP_SLOT_TEMP_2 == 1
+# define MSGPACK_PP_SLOT_3_DIGIT_2 1
+# elif MSGPACK_PP_SLOT_TEMP_2 == 2
+# define MSGPACK_PP_SLOT_3_DIGIT_2 2
+# elif MSGPACK_PP_SLOT_TEMP_2 == 3
+# define MSGPACK_PP_SLOT_3_DIGIT_2 3
+# elif MSGPACK_PP_SLOT_TEMP_2 == 4
+# define MSGPACK_PP_SLOT_3_DIGIT_2 4
+# elif MSGPACK_PP_SLOT_TEMP_2 == 5
+# define MSGPACK_PP_SLOT_3_DIGIT_2 5
+# elif MSGPACK_PP_SLOT_TEMP_2 == 6
+# define MSGPACK_PP_SLOT_3_DIGIT_2 6
+# elif MSGPACK_PP_SLOT_TEMP_2 == 7
+# define MSGPACK_PP_SLOT_3_DIGIT_2 7
+# elif MSGPACK_PP_SLOT_TEMP_2 == 8
+# define MSGPACK_PP_SLOT_3_DIGIT_2 8
+# elif MSGPACK_PP_SLOT_TEMP_2 == 9
+# define MSGPACK_PP_SLOT_3_DIGIT_2 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_1 == 0
+# define MSGPACK_PP_SLOT_3_DIGIT_1 0
+# elif MSGPACK_PP_SLOT_TEMP_1 == 1
+# define MSGPACK_PP_SLOT_3_DIGIT_1 1
+# elif MSGPACK_PP_SLOT_TEMP_1 == 2
+# define MSGPACK_PP_SLOT_3_DIGIT_1 2
+# elif MSGPACK_PP_SLOT_TEMP_1 == 3
+# define MSGPACK_PP_SLOT_3_DIGIT_1 3
+# elif MSGPACK_PP_SLOT_TEMP_1 == 4
+# define MSGPACK_PP_SLOT_3_DIGIT_1 4
+# elif MSGPACK_PP_SLOT_TEMP_1 == 5
+# define MSGPACK_PP_SLOT_3_DIGIT_1 5
+# elif MSGPACK_PP_SLOT_TEMP_1 == 6
+# define MSGPACK_PP_SLOT_3_DIGIT_1 6
+# elif MSGPACK_PP_SLOT_TEMP_1 == 7
+# define MSGPACK_PP_SLOT_3_DIGIT_1 7
+# elif MSGPACK_PP_SLOT_TEMP_1 == 8
+# define MSGPACK_PP_SLOT_3_DIGIT_1 8
+# elif MSGPACK_PP_SLOT_TEMP_1 == 9
+# define MSGPACK_PP_SLOT_3_DIGIT_1 9
+# endif
+#
+# if MSGPACK_PP_SLOT_3_DIGIT_10
+# define MSGPACK_PP_SLOT_3() MSGPACK_PP_SLOT_CC_10(MSGPACK_PP_SLOT_3_DIGIT_10, MSGPACK_PP_SLOT_3_DIGIT_9, MSGPACK_PP_SLOT_3_DIGIT_8, MSGPACK_PP_SLOT_3_DIGIT_7, MSGPACK_PP_SLOT_3_DIGIT_6, MSGPACK_PP_SLOT_3_DIGIT_5, MSGPACK_PP_SLOT_3_DIGIT_4, MSGPACK_PP_SLOT_3_DIGIT_3, MSGPACK_PP_SLOT_3_DIGIT_2, MSGPACK_PP_SLOT_3_DIGIT_1)
+# elif MSGPACK_PP_SLOT_3_DIGIT_9
+# define MSGPACK_PP_SLOT_3() MSGPACK_PP_SLOT_CC_9(MSGPACK_PP_SLOT_3_DIGIT_9, MSGPACK_PP_SLOT_3_DIGIT_8, MSGPACK_PP_SLOT_3_DIGIT_7, MSGPACK_PP_SLOT_3_DIGIT_6, MSGPACK_PP_SLOT_3_DIGIT_5, MSGPACK_PP_SLOT_3_DIGIT_4, MSGPACK_PP_SLOT_3_DIGIT_3, MSGPACK_PP_SLOT_3_DIGIT_2, MSGPACK_PP_SLOT_3_DIGIT_1)
+# elif MSGPACK_PP_SLOT_3_DIGIT_8
+# define MSGPACK_PP_SLOT_3() MSGPACK_PP_SLOT_CC_8(MSGPACK_PP_SLOT_3_DIGIT_8, MSGPACK_PP_SLOT_3_DIGIT_7, MSGPACK_PP_SLOT_3_DIGIT_6, MSGPACK_PP_SLOT_3_DIGIT_5, MSGPACK_PP_SLOT_3_DIGIT_4, MSGPACK_PP_SLOT_3_DIGIT_3, MSGPACK_PP_SLOT_3_DIGIT_2, MSGPACK_PP_SLOT_3_DIGIT_1)
+# elif MSGPACK_PP_SLOT_3_DIGIT_7
+# define MSGPACK_PP_SLOT_3() MSGPACK_PP_SLOT_CC_7(MSGPACK_PP_SLOT_3_DIGIT_7, MSGPACK_PP_SLOT_3_DIGIT_6, MSGPACK_PP_SLOT_3_DIGIT_5, MSGPACK_PP_SLOT_3_DIGIT_4, MSGPACK_PP_SLOT_3_DIGIT_3, MSGPACK_PP_SLOT_3_DIGIT_2, MSGPACK_PP_SLOT_3_DIGIT_1)
+# elif MSGPACK_PP_SLOT_3_DIGIT_6
+# define MSGPACK_PP_SLOT_3() MSGPACK_PP_SLOT_CC_6(MSGPACK_PP_SLOT_3_DIGIT_6, MSGPACK_PP_SLOT_3_DIGIT_5, MSGPACK_PP_SLOT_3_DIGIT_4, MSGPACK_PP_SLOT_3_DIGIT_3, MSGPACK_PP_SLOT_3_DIGIT_2, MSGPACK_PP_SLOT_3_DIGIT_1)
+# elif MSGPACK_PP_SLOT_3_DIGIT_5
+# define MSGPACK_PP_SLOT_3() MSGPACK_PP_SLOT_CC_5(MSGPACK_PP_SLOT_3_DIGIT_5, MSGPACK_PP_SLOT_3_DIGIT_4, MSGPACK_PP_SLOT_3_DIGIT_3, MSGPACK_PP_SLOT_3_DIGIT_2, MSGPACK_PP_SLOT_3_DIGIT_1)
+# elif MSGPACK_PP_SLOT_3_DIGIT_4
+# define MSGPACK_PP_SLOT_3() MSGPACK_PP_SLOT_CC_4(MSGPACK_PP_SLOT_3_DIGIT_4, MSGPACK_PP_SLOT_3_DIGIT_3, MSGPACK_PP_SLOT_3_DIGIT_2, MSGPACK_PP_SLOT_3_DIGIT_1)
+# elif MSGPACK_PP_SLOT_3_DIGIT_3
+# define MSGPACK_PP_SLOT_3() MSGPACK_PP_SLOT_CC_3(MSGPACK_PP_SLOT_3_DIGIT_3, MSGPACK_PP_SLOT_3_DIGIT_2, MSGPACK_PP_SLOT_3_DIGIT_1)
+# elif MSGPACK_PP_SLOT_3_DIGIT_2
+# define MSGPACK_PP_SLOT_3() MSGPACK_PP_SLOT_CC_2(MSGPACK_PP_SLOT_3_DIGIT_2, MSGPACK_PP_SLOT_3_DIGIT_1)
+# else
+# define MSGPACK_PP_SLOT_3() MSGPACK_PP_SLOT_3_DIGIT_1
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/slot/detail/slot4.hpp b/third_party/msgpack/include/msgpack/preprocessor/slot/detail/slot4.hpp
new file mode 100644
index 0000000000..f903b5d087
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/slot/detail/slot4.hpp
@@ -0,0 +1,267 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <msgpack/preprocessor/slot/detail/shared.hpp>
+#
+# undef MSGPACK_PP_SLOT_4
+#
+# undef MSGPACK_PP_SLOT_4_DIGIT_1
+# undef MSGPACK_PP_SLOT_4_DIGIT_2
+# undef MSGPACK_PP_SLOT_4_DIGIT_3
+# undef MSGPACK_PP_SLOT_4_DIGIT_4
+# undef MSGPACK_PP_SLOT_4_DIGIT_5
+# undef MSGPACK_PP_SLOT_4_DIGIT_6
+# undef MSGPACK_PP_SLOT_4_DIGIT_7
+# undef MSGPACK_PP_SLOT_4_DIGIT_8
+# undef MSGPACK_PP_SLOT_4_DIGIT_9
+# undef MSGPACK_PP_SLOT_4_DIGIT_10
+#
+# if MSGPACK_PP_SLOT_TEMP_10 == 0
+# define MSGPACK_PP_SLOT_4_DIGIT_10 0
+# elif MSGPACK_PP_SLOT_TEMP_10 == 1
+# define MSGPACK_PP_SLOT_4_DIGIT_10 1
+# elif MSGPACK_PP_SLOT_TEMP_10 == 2
+# define MSGPACK_PP_SLOT_4_DIGIT_10 2
+# elif MSGPACK_PP_SLOT_TEMP_10 == 3
+# define MSGPACK_PP_SLOT_4_DIGIT_10 3
+# elif MSGPACK_PP_SLOT_TEMP_10 == 4
+# define MSGPACK_PP_SLOT_4_DIGIT_10 4
+# elif MSGPACK_PP_SLOT_TEMP_10 == 5
+# define MSGPACK_PP_SLOT_4_DIGIT_10 5
+# elif MSGPACK_PP_SLOT_TEMP_10 == 6
+# define MSGPACK_PP_SLOT_4_DIGIT_10 6
+# elif MSGPACK_PP_SLOT_TEMP_10 == 7
+# define MSGPACK_PP_SLOT_4_DIGIT_10 7
+# elif MSGPACK_PP_SLOT_TEMP_10 == 8
+# define MSGPACK_PP_SLOT_4_DIGIT_10 8
+# elif MSGPACK_PP_SLOT_TEMP_10 == 9
+# define MSGPACK_PP_SLOT_4_DIGIT_10 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_9 == 0
+# define MSGPACK_PP_SLOT_4_DIGIT_9 0
+# elif MSGPACK_PP_SLOT_TEMP_9 == 1
+# define MSGPACK_PP_SLOT_4_DIGIT_9 1
+# elif MSGPACK_PP_SLOT_TEMP_9 == 2
+# define MSGPACK_PP_SLOT_4_DIGIT_9 2
+# elif MSGPACK_PP_SLOT_TEMP_9 == 3
+# define MSGPACK_PP_SLOT_4_DIGIT_9 3
+# elif MSGPACK_PP_SLOT_TEMP_9 == 4
+# define MSGPACK_PP_SLOT_4_DIGIT_9 4
+# elif MSGPACK_PP_SLOT_TEMP_9 == 5
+# define MSGPACK_PP_SLOT_4_DIGIT_9 5
+# elif MSGPACK_PP_SLOT_TEMP_9 == 6
+# define MSGPACK_PP_SLOT_4_DIGIT_9 6
+# elif MSGPACK_PP_SLOT_TEMP_9 == 7
+# define MSGPACK_PP_SLOT_4_DIGIT_9 7
+# elif MSGPACK_PP_SLOT_TEMP_9 == 8
+# define MSGPACK_PP_SLOT_4_DIGIT_9 8
+# elif MSGPACK_PP_SLOT_TEMP_9 == 9
+# define MSGPACK_PP_SLOT_4_DIGIT_9 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_8 == 0
+# define MSGPACK_PP_SLOT_4_DIGIT_8 0
+# elif MSGPACK_PP_SLOT_TEMP_8 == 1
+# define MSGPACK_PP_SLOT_4_DIGIT_8 1
+# elif MSGPACK_PP_SLOT_TEMP_8 == 2
+# define MSGPACK_PP_SLOT_4_DIGIT_8 2
+# elif MSGPACK_PP_SLOT_TEMP_8 == 3
+# define MSGPACK_PP_SLOT_4_DIGIT_8 3
+# elif MSGPACK_PP_SLOT_TEMP_8 == 4
+# define MSGPACK_PP_SLOT_4_DIGIT_8 4
+# elif MSGPACK_PP_SLOT_TEMP_8 == 5
+# define MSGPACK_PP_SLOT_4_DIGIT_8 5
+# elif MSGPACK_PP_SLOT_TEMP_8 == 6
+# define MSGPACK_PP_SLOT_4_DIGIT_8 6
+# elif MSGPACK_PP_SLOT_TEMP_8 == 7
+# define MSGPACK_PP_SLOT_4_DIGIT_8 7
+# elif MSGPACK_PP_SLOT_TEMP_8 == 8
+# define MSGPACK_PP_SLOT_4_DIGIT_8 8
+# elif MSGPACK_PP_SLOT_TEMP_8 == 9
+# define MSGPACK_PP_SLOT_4_DIGIT_8 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_7 == 0
+# define MSGPACK_PP_SLOT_4_DIGIT_7 0
+# elif MSGPACK_PP_SLOT_TEMP_7 == 1
+# define MSGPACK_PP_SLOT_4_DIGIT_7 1
+# elif MSGPACK_PP_SLOT_TEMP_7 == 2
+# define MSGPACK_PP_SLOT_4_DIGIT_7 2
+# elif MSGPACK_PP_SLOT_TEMP_7 == 3
+# define MSGPACK_PP_SLOT_4_DIGIT_7 3
+# elif MSGPACK_PP_SLOT_TEMP_7 == 4
+# define MSGPACK_PP_SLOT_4_DIGIT_7 4
+# elif MSGPACK_PP_SLOT_TEMP_7 == 5
+# define MSGPACK_PP_SLOT_4_DIGIT_7 5
+# elif MSGPACK_PP_SLOT_TEMP_7 == 6
+# define MSGPACK_PP_SLOT_4_DIGIT_7 6
+# elif MSGPACK_PP_SLOT_TEMP_7 == 7
+# define MSGPACK_PP_SLOT_4_DIGIT_7 7
+# elif MSGPACK_PP_SLOT_TEMP_7 == 8
+# define MSGPACK_PP_SLOT_4_DIGIT_7 8
+# elif MSGPACK_PP_SLOT_TEMP_7 == 9
+# define MSGPACK_PP_SLOT_4_DIGIT_7 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_6 == 0
+# define MSGPACK_PP_SLOT_4_DIGIT_6 0
+# elif MSGPACK_PP_SLOT_TEMP_6 == 1
+# define MSGPACK_PP_SLOT_4_DIGIT_6 1
+# elif MSGPACK_PP_SLOT_TEMP_6 == 2
+# define MSGPACK_PP_SLOT_4_DIGIT_6 2
+# elif MSGPACK_PP_SLOT_TEMP_6 == 3
+# define MSGPACK_PP_SLOT_4_DIGIT_6 3
+# elif MSGPACK_PP_SLOT_TEMP_6 == 4
+# define MSGPACK_PP_SLOT_4_DIGIT_6 4
+# elif MSGPACK_PP_SLOT_TEMP_6 == 5
+# define MSGPACK_PP_SLOT_4_DIGIT_6 5
+# elif MSGPACK_PP_SLOT_TEMP_6 == 6
+# define MSGPACK_PP_SLOT_4_DIGIT_6 6
+# elif MSGPACK_PP_SLOT_TEMP_6 == 7
+# define MSGPACK_PP_SLOT_4_DIGIT_6 7
+# elif MSGPACK_PP_SLOT_TEMP_6 == 8
+# define MSGPACK_PP_SLOT_4_DIGIT_6 8
+# elif MSGPACK_PP_SLOT_TEMP_6 == 9
+# define MSGPACK_PP_SLOT_4_DIGIT_6 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_5 == 0
+# define MSGPACK_PP_SLOT_4_DIGIT_5 0
+# elif MSGPACK_PP_SLOT_TEMP_5 == 1
+# define MSGPACK_PP_SLOT_4_DIGIT_5 1
+# elif MSGPACK_PP_SLOT_TEMP_5 == 2
+# define MSGPACK_PP_SLOT_4_DIGIT_5 2
+# elif MSGPACK_PP_SLOT_TEMP_5 == 3
+# define MSGPACK_PP_SLOT_4_DIGIT_5 3
+# elif MSGPACK_PP_SLOT_TEMP_5 == 4
+# define MSGPACK_PP_SLOT_4_DIGIT_5 4
+# elif MSGPACK_PP_SLOT_TEMP_5 == 5
+# define MSGPACK_PP_SLOT_4_DIGIT_5 5
+# elif MSGPACK_PP_SLOT_TEMP_5 == 6
+# define MSGPACK_PP_SLOT_4_DIGIT_5 6
+# elif MSGPACK_PP_SLOT_TEMP_5 == 7
+# define MSGPACK_PP_SLOT_4_DIGIT_5 7
+# elif MSGPACK_PP_SLOT_TEMP_5 == 8
+# define MSGPACK_PP_SLOT_4_DIGIT_5 8
+# elif MSGPACK_PP_SLOT_TEMP_5 == 9
+# define MSGPACK_PP_SLOT_4_DIGIT_5 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_4 == 0
+# define MSGPACK_PP_SLOT_4_DIGIT_4 0
+# elif MSGPACK_PP_SLOT_TEMP_4 == 1
+# define MSGPACK_PP_SLOT_4_DIGIT_4 1
+# elif MSGPACK_PP_SLOT_TEMP_4 == 2
+# define MSGPACK_PP_SLOT_4_DIGIT_4 2
+# elif MSGPACK_PP_SLOT_TEMP_4 == 3
+# define MSGPACK_PP_SLOT_4_DIGIT_4 3
+# elif MSGPACK_PP_SLOT_TEMP_4 == 4
+# define MSGPACK_PP_SLOT_4_DIGIT_4 4
+# elif MSGPACK_PP_SLOT_TEMP_4 == 5
+# define MSGPACK_PP_SLOT_4_DIGIT_4 5
+# elif MSGPACK_PP_SLOT_TEMP_4 == 6
+# define MSGPACK_PP_SLOT_4_DIGIT_4 6
+# elif MSGPACK_PP_SLOT_TEMP_4 == 7
+# define MSGPACK_PP_SLOT_4_DIGIT_4 7
+# elif MSGPACK_PP_SLOT_TEMP_4 == 8
+# define MSGPACK_PP_SLOT_4_DIGIT_4 8
+# elif MSGPACK_PP_SLOT_TEMP_4 == 9
+# define MSGPACK_PP_SLOT_4_DIGIT_4 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_3 == 0
+# define MSGPACK_PP_SLOT_4_DIGIT_3 0
+# elif MSGPACK_PP_SLOT_TEMP_3 == 1
+# define MSGPACK_PP_SLOT_4_DIGIT_3 1
+# elif MSGPACK_PP_SLOT_TEMP_3 == 2
+# define MSGPACK_PP_SLOT_4_DIGIT_3 2
+# elif MSGPACK_PP_SLOT_TEMP_3 == 3
+# define MSGPACK_PP_SLOT_4_DIGIT_3 3
+# elif MSGPACK_PP_SLOT_TEMP_3 == 4
+# define MSGPACK_PP_SLOT_4_DIGIT_3 4
+# elif MSGPACK_PP_SLOT_TEMP_3 == 5
+# define MSGPACK_PP_SLOT_4_DIGIT_3 5
+# elif MSGPACK_PP_SLOT_TEMP_3 == 6
+# define MSGPACK_PP_SLOT_4_DIGIT_3 6
+# elif MSGPACK_PP_SLOT_TEMP_3 == 7
+# define MSGPACK_PP_SLOT_4_DIGIT_3 7
+# elif MSGPACK_PP_SLOT_TEMP_3 == 8
+# define MSGPACK_PP_SLOT_4_DIGIT_3 8
+# elif MSGPACK_PP_SLOT_TEMP_3 == 9
+# define MSGPACK_PP_SLOT_4_DIGIT_3 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_2 == 0
+# define MSGPACK_PP_SLOT_4_DIGIT_2 0
+# elif MSGPACK_PP_SLOT_TEMP_2 == 1
+# define MSGPACK_PP_SLOT_4_DIGIT_2 1
+# elif MSGPACK_PP_SLOT_TEMP_2 == 2
+# define MSGPACK_PP_SLOT_4_DIGIT_2 2
+# elif MSGPACK_PP_SLOT_TEMP_2 == 3
+# define MSGPACK_PP_SLOT_4_DIGIT_2 3
+# elif MSGPACK_PP_SLOT_TEMP_2 == 4
+# define MSGPACK_PP_SLOT_4_DIGIT_2 4
+# elif MSGPACK_PP_SLOT_TEMP_2 == 5
+# define MSGPACK_PP_SLOT_4_DIGIT_2 5
+# elif MSGPACK_PP_SLOT_TEMP_2 == 6
+# define MSGPACK_PP_SLOT_4_DIGIT_2 6
+# elif MSGPACK_PP_SLOT_TEMP_2 == 7
+# define MSGPACK_PP_SLOT_4_DIGIT_2 7
+# elif MSGPACK_PP_SLOT_TEMP_2 == 8
+# define MSGPACK_PP_SLOT_4_DIGIT_2 8
+# elif MSGPACK_PP_SLOT_TEMP_2 == 9
+# define MSGPACK_PP_SLOT_4_DIGIT_2 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_1 == 0
+# define MSGPACK_PP_SLOT_4_DIGIT_1 0
+# elif MSGPACK_PP_SLOT_TEMP_1 == 1
+# define MSGPACK_PP_SLOT_4_DIGIT_1 1
+# elif MSGPACK_PP_SLOT_TEMP_1 == 2
+# define MSGPACK_PP_SLOT_4_DIGIT_1 2
+# elif MSGPACK_PP_SLOT_TEMP_1 == 3
+# define MSGPACK_PP_SLOT_4_DIGIT_1 3
+# elif MSGPACK_PP_SLOT_TEMP_1 == 4
+# define MSGPACK_PP_SLOT_4_DIGIT_1 4
+# elif MSGPACK_PP_SLOT_TEMP_1 == 5
+# define MSGPACK_PP_SLOT_4_DIGIT_1 5
+# elif MSGPACK_PP_SLOT_TEMP_1 == 6
+# define MSGPACK_PP_SLOT_4_DIGIT_1 6
+# elif MSGPACK_PP_SLOT_TEMP_1 == 7
+# define MSGPACK_PP_SLOT_4_DIGIT_1 7
+# elif MSGPACK_PP_SLOT_TEMP_1 == 8
+# define MSGPACK_PP_SLOT_4_DIGIT_1 8
+# elif MSGPACK_PP_SLOT_TEMP_1 == 9
+# define MSGPACK_PP_SLOT_4_DIGIT_1 9
+# endif
+#
+# if MSGPACK_PP_SLOT_4_DIGIT_10
+# define MSGPACK_PP_SLOT_4() MSGPACK_PP_SLOT_CC_10(MSGPACK_PP_SLOT_4_DIGIT_10, MSGPACK_PP_SLOT_4_DIGIT_9, MSGPACK_PP_SLOT_4_DIGIT_8, MSGPACK_PP_SLOT_4_DIGIT_7, MSGPACK_PP_SLOT_4_DIGIT_6, MSGPACK_PP_SLOT_4_DIGIT_5, MSGPACK_PP_SLOT_4_DIGIT_4, MSGPACK_PP_SLOT_4_DIGIT_3, MSGPACK_PP_SLOT_4_DIGIT_2, MSGPACK_PP_SLOT_4_DIGIT_1)
+# elif MSGPACK_PP_SLOT_4_DIGIT_9
+# define MSGPACK_PP_SLOT_4() MSGPACK_PP_SLOT_CC_9(MSGPACK_PP_SLOT_4_DIGIT_9, MSGPACK_PP_SLOT_4_DIGIT_8, MSGPACK_PP_SLOT_4_DIGIT_7, MSGPACK_PP_SLOT_4_DIGIT_6, MSGPACK_PP_SLOT_4_DIGIT_5, MSGPACK_PP_SLOT_4_DIGIT_4, MSGPACK_PP_SLOT_4_DIGIT_3, MSGPACK_PP_SLOT_4_DIGIT_2, MSGPACK_PP_SLOT_4_DIGIT_1)
+# elif MSGPACK_PP_SLOT_4_DIGIT_8
+# define MSGPACK_PP_SLOT_4() MSGPACK_PP_SLOT_CC_8(MSGPACK_PP_SLOT_4_DIGIT_8, MSGPACK_PP_SLOT_4_DIGIT_7, MSGPACK_PP_SLOT_4_DIGIT_6, MSGPACK_PP_SLOT_4_DIGIT_5, MSGPACK_PP_SLOT_4_DIGIT_4, MSGPACK_PP_SLOT_4_DIGIT_3, MSGPACK_PP_SLOT_4_DIGIT_2, MSGPACK_PP_SLOT_4_DIGIT_1)
+# elif MSGPACK_PP_SLOT_4_DIGIT_7
+# define MSGPACK_PP_SLOT_4() MSGPACK_PP_SLOT_CC_7(MSGPACK_PP_SLOT_4_DIGIT_7, MSGPACK_PP_SLOT_4_DIGIT_6, MSGPACK_PP_SLOT_4_DIGIT_5, MSGPACK_PP_SLOT_4_DIGIT_4, MSGPACK_PP_SLOT_4_DIGIT_3, MSGPACK_PP_SLOT_4_DIGIT_2, MSGPACK_PP_SLOT_4_DIGIT_1)
+# elif MSGPACK_PP_SLOT_4_DIGIT_6
+# define MSGPACK_PP_SLOT_4() MSGPACK_PP_SLOT_CC_6(MSGPACK_PP_SLOT_4_DIGIT_6, MSGPACK_PP_SLOT_4_DIGIT_5, MSGPACK_PP_SLOT_4_DIGIT_4, MSGPACK_PP_SLOT_4_DIGIT_3, MSGPACK_PP_SLOT_4_DIGIT_2, MSGPACK_PP_SLOT_4_DIGIT_1)
+# elif MSGPACK_PP_SLOT_4_DIGIT_5
+# define MSGPACK_PP_SLOT_4() MSGPACK_PP_SLOT_CC_5(MSGPACK_PP_SLOT_4_DIGIT_5, MSGPACK_PP_SLOT_4_DIGIT_4, MSGPACK_PP_SLOT_4_DIGIT_3, MSGPACK_PP_SLOT_4_DIGIT_2, MSGPACK_PP_SLOT_4_DIGIT_1)
+# elif MSGPACK_PP_SLOT_4_DIGIT_4
+# define MSGPACK_PP_SLOT_4() MSGPACK_PP_SLOT_CC_4(MSGPACK_PP_SLOT_4_DIGIT_4, MSGPACK_PP_SLOT_4_DIGIT_3, MSGPACK_PP_SLOT_4_DIGIT_2, MSGPACK_PP_SLOT_4_DIGIT_1)
+# elif MSGPACK_PP_SLOT_4_DIGIT_3
+# define MSGPACK_PP_SLOT_4() MSGPACK_PP_SLOT_CC_3(MSGPACK_PP_SLOT_4_DIGIT_3, MSGPACK_PP_SLOT_4_DIGIT_2, MSGPACK_PP_SLOT_4_DIGIT_1)
+# elif MSGPACK_PP_SLOT_4_DIGIT_2
+# define MSGPACK_PP_SLOT_4() MSGPACK_PP_SLOT_CC_2(MSGPACK_PP_SLOT_4_DIGIT_2, MSGPACK_PP_SLOT_4_DIGIT_1)
+# else
+# define MSGPACK_PP_SLOT_4() MSGPACK_PP_SLOT_4_DIGIT_1
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/slot/detail/slot5.hpp b/third_party/msgpack/include/msgpack/preprocessor/slot/detail/slot5.hpp
new file mode 100644
index 0000000000..dac2cee450
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/slot/detail/slot5.hpp
@@ -0,0 +1,267 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <msgpack/preprocessor/slot/detail/shared.hpp>
+#
+# undef MSGPACK_PP_SLOT_5
+#
+# undef MSGPACK_PP_SLOT_5_DIGIT_1
+# undef MSGPACK_PP_SLOT_5_DIGIT_2
+# undef MSGPACK_PP_SLOT_5_DIGIT_3
+# undef MSGPACK_PP_SLOT_5_DIGIT_4
+# undef MSGPACK_PP_SLOT_5_DIGIT_5
+# undef MSGPACK_PP_SLOT_5_DIGIT_6
+# undef MSGPACK_PP_SLOT_5_DIGIT_7
+# undef MSGPACK_PP_SLOT_5_DIGIT_8
+# undef MSGPACK_PP_SLOT_5_DIGIT_9
+# undef MSGPACK_PP_SLOT_5_DIGIT_10
+#
+# if MSGPACK_PP_SLOT_TEMP_10 == 0
+# define MSGPACK_PP_SLOT_5_DIGIT_10 0
+# elif MSGPACK_PP_SLOT_TEMP_10 == 1
+# define MSGPACK_PP_SLOT_5_DIGIT_10 1
+# elif MSGPACK_PP_SLOT_TEMP_10 == 2
+# define MSGPACK_PP_SLOT_5_DIGIT_10 2
+# elif MSGPACK_PP_SLOT_TEMP_10 == 3
+# define MSGPACK_PP_SLOT_5_DIGIT_10 3
+# elif MSGPACK_PP_SLOT_TEMP_10 == 4
+# define MSGPACK_PP_SLOT_5_DIGIT_10 4
+# elif MSGPACK_PP_SLOT_TEMP_10 == 5
+# define MSGPACK_PP_SLOT_5_DIGIT_10 5
+# elif MSGPACK_PP_SLOT_TEMP_10 == 6
+# define MSGPACK_PP_SLOT_5_DIGIT_10 6
+# elif MSGPACK_PP_SLOT_TEMP_10 == 7
+# define MSGPACK_PP_SLOT_5_DIGIT_10 7
+# elif MSGPACK_PP_SLOT_TEMP_10 == 8
+# define MSGPACK_PP_SLOT_5_DIGIT_10 8
+# elif MSGPACK_PP_SLOT_TEMP_10 == 9
+# define MSGPACK_PP_SLOT_5_DIGIT_10 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_9 == 0
+# define MSGPACK_PP_SLOT_5_DIGIT_9 0
+# elif MSGPACK_PP_SLOT_TEMP_9 == 1
+# define MSGPACK_PP_SLOT_5_DIGIT_9 1
+# elif MSGPACK_PP_SLOT_TEMP_9 == 2
+# define MSGPACK_PP_SLOT_5_DIGIT_9 2
+# elif MSGPACK_PP_SLOT_TEMP_9 == 3
+# define MSGPACK_PP_SLOT_5_DIGIT_9 3
+# elif MSGPACK_PP_SLOT_TEMP_9 == 4
+# define MSGPACK_PP_SLOT_5_DIGIT_9 4
+# elif MSGPACK_PP_SLOT_TEMP_9 == 5
+# define MSGPACK_PP_SLOT_5_DIGIT_9 5
+# elif MSGPACK_PP_SLOT_TEMP_9 == 6
+# define MSGPACK_PP_SLOT_5_DIGIT_9 6
+# elif MSGPACK_PP_SLOT_TEMP_9 == 7
+# define MSGPACK_PP_SLOT_5_DIGIT_9 7
+# elif MSGPACK_PP_SLOT_TEMP_9 == 8
+# define MSGPACK_PP_SLOT_5_DIGIT_9 8
+# elif MSGPACK_PP_SLOT_TEMP_9 == 9
+# define MSGPACK_PP_SLOT_5_DIGIT_9 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_8 == 0
+# define MSGPACK_PP_SLOT_5_DIGIT_8 0
+# elif MSGPACK_PP_SLOT_TEMP_8 == 1
+# define MSGPACK_PP_SLOT_5_DIGIT_8 1
+# elif MSGPACK_PP_SLOT_TEMP_8 == 2
+# define MSGPACK_PP_SLOT_5_DIGIT_8 2
+# elif MSGPACK_PP_SLOT_TEMP_8 == 3
+# define MSGPACK_PP_SLOT_5_DIGIT_8 3
+# elif MSGPACK_PP_SLOT_TEMP_8 == 4
+# define MSGPACK_PP_SLOT_5_DIGIT_8 4
+# elif MSGPACK_PP_SLOT_TEMP_8 == 5
+# define MSGPACK_PP_SLOT_5_DIGIT_8 5
+# elif MSGPACK_PP_SLOT_TEMP_8 == 6
+# define MSGPACK_PP_SLOT_5_DIGIT_8 6
+# elif MSGPACK_PP_SLOT_TEMP_8 == 7
+# define MSGPACK_PP_SLOT_5_DIGIT_8 7
+# elif MSGPACK_PP_SLOT_TEMP_8 == 8
+# define MSGPACK_PP_SLOT_5_DIGIT_8 8
+# elif MSGPACK_PP_SLOT_TEMP_8 == 9
+# define MSGPACK_PP_SLOT_5_DIGIT_8 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_7 == 0
+# define MSGPACK_PP_SLOT_5_DIGIT_7 0
+# elif MSGPACK_PP_SLOT_TEMP_7 == 1
+# define MSGPACK_PP_SLOT_5_DIGIT_7 1
+# elif MSGPACK_PP_SLOT_TEMP_7 == 2
+# define MSGPACK_PP_SLOT_5_DIGIT_7 2
+# elif MSGPACK_PP_SLOT_TEMP_7 == 3
+# define MSGPACK_PP_SLOT_5_DIGIT_7 3
+# elif MSGPACK_PP_SLOT_TEMP_7 == 4
+# define MSGPACK_PP_SLOT_5_DIGIT_7 4
+# elif MSGPACK_PP_SLOT_TEMP_7 == 5
+# define MSGPACK_PP_SLOT_5_DIGIT_7 5
+# elif MSGPACK_PP_SLOT_TEMP_7 == 6
+# define MSGPACK_PP_SLOT_5_DIGIT_7 6
+# elif MSGPACK_PP_SLOT_TEMP_7 == 7
+# define MSGPACK_PP_SLOT_5_DIGIT_7 7
+# elif MSGPACK_PP_SLOT_TEMP_7 == 8
+# define MSGPACK_PP_SLOT_5_DIGIT_7 8
+# elif MSGPACK_PP_SLOT_TEMP_7 == 9
+# define MSGPACK_PP_SLOT_5_DIGIT_7 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_6 == 0
+# define MSGPACK_PP_SLOT_5_DIGIT_6 0
+# elif MSGPACK_PP_SLOT_TEMP_6 == 1
+# define MSGPACK_PP_SLOT_5_DIGIT_6 1
+# elif MSGPACK_PP_SLOT_TEMP_6 == 2
+# define MSGPACK_PP_SLOT_5_DIGIT_6 2
+# elif MSGPACK_PP_SLOT_TEMP_6 == 3
+# define MSGPACK_PP_SLOT_5_DIGIT_6 3
+# elif MSGPACK_PP_SLOT_TEMP_6 == 4
+# define MSGPACK_PP_SLOT_5_DIGIT_6 4
+# elif MSGPACK_PP_SLOT_TEMP_6 == 5
+# define MSGPACK_PP_SLOT_5_DIGIT_6 5
+# elif MSGPACK_PP_SLOT_TEMP_6 == 6
+# define MSGPACK_PP_SLOT_5_DIGIT_6 6
+# elif MSGPACK_PP_SLOT_TEMP_6 == 7
+# define MSGPACK_PP_SLOT_5_DIGIT_6 7
+# elif MSGPACK_PP_SLOT_TEMP_6 == 8
+# define MSGPACK_PP_SLOT_5_DIGIT_6 8
+# elif MSGPACK_PP_SLOT_TEMP_6 == 9
+# define MSGPACK_PP_SLOT_5_DIGIT_6 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_5 == 0
+# define MSGPACK_PP_SLOT_5_DIGIT_5 0
+# elif MSGPACK_PP_SLOT_TEMP_5 == 1
+# define MSGPACK_PP_SLOT_5_DIGIT_5 1
+# elif MSGPACK_PP_SLOT_TEMP_5 == 2
+# define MSGPACK_PP_SLOT_5_DIGIT_5 2
+# elif MSGPACK_PP_SLOT_TEMP_5 == 3
+# define MSGPACK_PP_SLOT_5_DIGIT_5 3
+# elif MSGPACK_PP_SLOT_TEMP_5 == 4
+# define MSGPACK_PP_SLOT_5_DIGIT_5 4
+# elif MSGPACK_PP_SLOT_TEMP_5 == 5
+# define MSGPACK_PP_SLOT_5_DIGIT_5 5
+# elif MSGPACK_PP_SLOT_TEMP_5 == 6
+# define MSGPACK_PP_SLOT_5_DIGIT_5 6
+# elif MSGPACK_PP_SLOT_TEMP_5 == 7
+# define MSGPACK_PP_SLOT_5_DIGIT_5 7
+# elif MSGPACK_PP_SLOT_TEMP_5 == 8
+# define MSGPACK_PP_SLOT_5_DIGIT_5 8
+# elif MSGPACK_PP_SLOT_TEMP_5 == 9
+# define MSGPACK_PP_SLOT_5_DIGIT_5 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_4 == 0
+# define MSGPACK_PP_SLOT_5_DIGIT_4 0
+# elif MSGPACK_PP_SLOT_TEMP_4 == 1
+# define MSGPACK_PP_SLOT_5_DIGIT_4 1
+# elif MSGPACK_PP_SLOT_TEMP_4 == 2
+# define MSGPACK_PP_SLOT_5_DIGIT_4 2
+# elif MSGPACK_PP_SLOT_TEMP_4 == 3
+# define MSGPACK_PP_SLOT_5_DIGIT_4 3
+# elif MSGPACK_PP_SLOT_TEMP_4 == 4
+# define MSGPACK_PP_SLOT_5_DIGIT_4 4
+# elif MSGPACK_PP_SLOT_TEMP_4 == 5
+# define MSGPACK_PP_SLOT_5_DIGIT_4 5
+# elif MSGPACK_PP_SLOT_TEMP_4 == 6
+# define MSGPACK_PP_SLOT_5_DIGIT_4 6
+# elif MSGPACK_PP_SLOT_TEMP_4 == 7
+# define MSGPACK_PP_SLOT_5_DIGIT_4 7
+# elif MSGPACK_PP_SLOT_TEMP_4 == 8
+# define MSGPACK_PP_SLOT_5_DIGIT_4 8
+# elif MSGPACK_PP_SLOT_TEMP_4 == 9
+# define MSGPACK_PP_SLOT_5_DIGIT_4 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_3 == 0
+# define MSGPACK_PP_SLOT_5_DIGIT_3 0
+# elif MSGPACK_PP_SLOT_TEMP_3 == 1
+# define MSGPACK_PP_SLOT_5_DIGIT_3 1
+# elif MSGPACK_PP_SLOT_TEMP_3 == 2
+# define MSGPACK_PP_SLOT_5_DIGIT_3 2
+# elif MSGPACK_PP_SLOT_TEMP_3 == 3
+# define MSGPACK_PP_SLOT_5_DIGIT_3 3
+# elif MSGPACK_PP_SLOT_TEMP_3 == 4
+# define MSGPACK_PP_SLOT_5_DIGIT_3 4
+# elif MSGPACK_PP_SLOT_TEMP_3 == 5
+# define MSGPACK_PP_SLOT_5_DIGIT_3 5
+# elif MSGPACK_PP_SLOT_TEMP_3 == 6
+# define MSGPACK_PP_SLOT_5_DIGIT_3 6
+# elif MSGPACK_PP_SLOT_TEMP_3 == 7
+# define MSGPACK_PP_SLOT_5_DIGIT_3 7
+# elif MSGPACK_PP_SLOT_TEMP_3 == 8
+# define MSGPACK_PP_SLOT_5_DIGIT_3 8
+# elif MSGPACK_PP_SLOT_TEMP_3 == 9
+# define MSGPACK_PP_SLOT_5_DIGIT_3 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_2 == 0
+# define MSGPACK_PP_SLOT_5_DIGIT_2 0
+# elif MSGPACK_PP_SLOT_TEMP_2 == 1
+# define MSGPACK_PP_SLOT_5_DIGIT_2 1
+# elif MSGPACK_PP_SLOT_TEMP_2 == 2
+# define MSGPACK_PP_SLOT_5_DIGIT_2 2
+# elif MSGPACK_PP_SLOT_TEMP_2 == 3
+# define MSGPACK_PP_SLOT_5_DIGIT_2 3
+# elif MSGPACK_PP_SLOT_TEMP_2 == 4
+# define MSGPACK_PP_SLOT_5_DIGIT_2 4
+# elif MSGPACK_PP_SLOT_TEMP_2 == 5
+# define MSGPACK_PP_SLOT_5_DIGIT_2 5
+# elif MSGPACK_PP_SLOT_TEMP_2 == 6
+# define MSGPACK_PP_SLOT_5_DIGIT_2 6
+# elif MSGPACK_PP_SLOT_TEMP_2 == 7
+# define MSGPACK_PP_SLOT_5_DIGIT_2 7
+# elif MSGPACK_PP_SLOT_TEMP_2 == 8
+# define MSGPACK_PP_SLOT_5_DIGIT_2 8
+# elif MSGPACK_PP_SLOT_TEMP_2 == 9
+# define MSGPACK_PP_SLOT_5_DIGIT_2 9
+# endif
+#
+# if MSGPACK_PP_SLOT_TEMP_1 == 0
+# define MSGPACK_PP_SLOT_5_DIGIT_1 0
+# elif MSGPACK_PP_SLOT_TEMP_1 == 1
+# define MSGPACK_PP_SLOT_5_DIGIT_1 1
+# elif MSGPACK_PP_SLOT_TEMP_1 == 2
+# define MSGPACK_PP_SLOT_5_DIGIT_1 2
+# elif MSGPACK_PP_SLOT_TEMP_1 == 3
+# define MSGPACK_PP_SLOT_5_DIGIT_1 3
+# elif MSGPACK_PP_SLOT_TEMP_1 == 4
+# define MSGPACK_PP_SLOT_5_DIGIT_1 4
+# elif MSGPACK_PP_SLOT_TEMP_1 == 5
+# define MSGPACK_PP_SLOT_5_DIGIT_1 5
+# elif MSGPACK_PP_SLOT_TEMP_1 == 6
+# define MSGPACK_PP_SLOT_5_DIGIT_1 6
+# elif MSGPACK_PP_SLOT_TEMP_1 == 7
+# define MSGPACK_PP_SLOT_5_DIGIT_1 7
+# elif MSGPACK_PP_SLOT_TEMP_1 == 8
+# define MSGPACK_PP_SLOT_5_DIGIT_1 8
+# elif MSGPACK_PP_SLOT_TEMP_1 == 9
+# define MSGPACK_PP_SLOT_5_DIGIT_1 9
+# endif
+#
+# if MSGPACK_PP_SLOT_5_DIGIT_10
+# define MSGPACK_PP_SLOT_5() MSGPACK_PP_SLOT_CC_10(MSGPACK_PP_SLOT_5_DIGIT_10, MSGPACK_PP_SLOT_5_DIGIT_9, MSGPACK_PP_SLOT_5_DIGIT_8, MSGPACK_PP_SLOT_5_DIGIT_7, MSGPACK_PP_SLOT_5_DIGIT_6, MSGPACK_PP_SLOT_5_DIGIT_5, MSGPACK_PP_SLOT_5_DIGIT_4, MSGPACK_PP_SLOT_5_DIGIT_3, MSGPACK_PP_SLOT_5_DIGIT_2, MSGPACK_PP_SLOT_5_DIGIT_1)
+# elif MSGPACK_PP_SLOT_5_DIGIT_9
+# define MSGPACK_PP_SLOT_5() MSGPACK_PP_SLOT_CC_9(MSGPACK_PP_SLOT_5_DIGIT_9, MSGPACK_PP_SLOT_5_DIGIT_8, MSGPACK_PP_SLOT_5_DIGIT_7, MSGPACK_PP_SLOT_5_DIGIT_6, MSGPACK_PP_SLOT_5_DIGIT_5, MSGPACK_PP_SLOT_5_DIGIT_4, MSGPACK_PP_SLOT_5_DIGIT_3, MSGPACK_PP_SLOT_5_DIGIT_2, MSGPACK_PP_SLOT_5_DIGIT_1)
+# elif MSGPACK_PP_SLOT_5_DIGIT_8
+# define MSGPACK_PP_SLOT_5() MSGPACK_PP_SLOT_CC_8(MSGPACK_PP_SLOT_5_DIGIT_8, MSGPACK_PP_SLOT_5_DIGIT_7, MSGPACK_PP_SLOT_5_DIGIT_6, MSGPACK_PP_SLOT_5_DIGIT_5, MSGPACK_PP_SLOT_5_DIGIT_4, MSGPACK_PP_SLOT_5_DIGIT_3, MSGPACK_PP_SLOT_5_DIGIT_2, MSGPACK_PP_SLOT_5_DIGIT_1)
+# elif MSGPACK_PP_SLOT_5_DIGIT_7
+# define MSGPACK_PP_SLOT_5() MSGPACK_PP_SLOT_CC_7(MSGPACK_PP_SLOT_5_DIGIT_7, MSGPACK_PP_SLOT_5_DIGIT_6, MSGPACK_PP_SLOT_5_DIGIT_5, MSGPACK_PP_SLOT_5_DIGIT_4, MSGPACK_PP_SLOT_5_DIGIT_3, MSGPACK_PP_SLOT_5_DIGIT_2, MSGPACK_PP_SLOT_5_DIGIT_1)
+# elif MSGPACK_PP_SLOT_5_DIGIT_6
+# define MSGPACK_PP_SLOT_5() MSGPACK_PP_SLOT_CC_6(MSGPACK_PP_SLOT_5_DIGIT_6, MSGPACK_PP_SLOT_5_DIGIT_5, MSGPACK_PP_SLOT_5_DIGIT_4, MSGPACK_PP_SLOT_5_DIGIT_3, MSGPACK_PP_SLOT_5_DIGIT_2, MSGPACK_PP_SLOT_5_DIGIT_1)
+# elif MSGPACK_PP_SLOT_5_DIGIT_5
+# define MSGPACK_PP_SLOT_5() MSGPACK_PP_SLOT_CC_5(MSGPACK_PP_SLOT_5_DIGIT_5, MSGPACK_PP_SLOT_5_DIGIT_4, MSGPACK_PP_SLOT_5_DIGIT_3, MSGPACK_PP_SLOT_5_DIGIT_2, MSGPACK_PP_SLOT_5_DIGIT_1)
+# elif MSGPACK_PP_SLOT_5_DIGIT_4
+# define MSGPACK_PP_SLOT_5() MSGPACK_PP_SLOT_CC_4(MSGPACK_PP_SLOT_5_DIGIT_4, MSGPACK_PP_SLOT_5_DIGIT_3, MSGPACK_PP_SLOT_5_DIGIT_2, MSGPACK_PP_SLOT_5_DIGIT_1)
+# elif MSGPACK_PP_SLOT_5_DIGIT_3
+# define MSGPACK_PP_SLOT_5() MSGPACK_PP_SLOT_CC_3(MSGPACK_PP_SLOT_5_DIGIT_3, MSGPACK_PP_SLOT_5_DIGIT_2, MSGPACK_PP_SLOT_5_DIGIT_1)
+# elif MSGPACK_PP_SLOT_5_DIGIT_2
+# define MSGPACK_PP_SLOT_5() MSGPACK_PP_SLOT_CC_2(MSGPACK_PP_SLOT_5_DIGIT_2, MSGPACK_PP_SLOT_5_DIGIT_1)
+# else
+# define MSGPACK_PP_SLOT_5() MSGPACK_PP_SLOT_5_DIGIT_1
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/slot/slot.hpp b/third_party/msgpack/include/msgpack/preprocessor/slot/slot.hpp
new file mode 100644
index 0000000000..8732fc8c98
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/slot/slot.hpp
@@ -0,0 +1,32 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_SLOT_SLOT_HPP
+# define MSGPACK_PREPROCESSOR_SLOT_SLOT_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/slot/detail/def.hpp>
+#
+# /* MSGPACK_PP_ASSIGN_SLOT */
+#
+# define MSGPACK_PP_ASSIGN_SLOT(i) MSGPACK_PP_CAT(MSGPACK_PP_ASSIGN_SLOT_, i)
+#
+# define MSGPACK_PP_ASSIGN_SLOT_1 <msgpack/preprocessor/slot/detail/slot1.hpp>
+# define MSGPACK_PP_ASSIGN_SLOT_2 <msgpack/preprocessor/slot/detail/slot2.hpp>
+# define MSGPACK_PP_ASSIGN_SLOT_3 <msgpack/preprocessor/slot/detail/slot3.hpp>
+# define MSGPACK_PP_ASSIGN_SLOT_4 <msgpack/preprocessor/slot/detail/slot4.hpp>
+# define MSGPACK_PP_ASSIGN_SLOT_5 <msgpack/preprocessor/slot/detail/slot5.hpp>
+#
+# /* MSGPACK_PP_SLOT */
+#
+# define MSGPACK_PP_SLOT(i) MSGPACK_PP_CAT(MSGPACK_PP_SLOT_, i)()
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/stringize.hpp b/third_party/msgpack/include/msgpack/preprocessor/stringize.hpp
new file mode 100644
index 0000000000..34657a82a7
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/stringize.hpp
@@ -0,0 +1,33 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_STRINGIZE_HPP
+# define MSGPACK_PREPROCESSOR_STRINGIZE_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# /* MSGPACK_PP_STRINGIZE */
+#
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MSVC()
+# define MSGPACK_PP_STRINGIZE(text) MSGPACK_PP_STRINGIZE_A((text))
+# define MSGPACK_PP_STRINGIZE_A(arg) MSGPACK_PP_STRINGIZE_I arg
+# elif MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_STRINGIZE(text) MSGPACK_PP_STRINGIZE_OO((text))
+# define MSGPACK_PP_STRINGIZE_OO(par) MSGPACK_PP_STRINGIZE_I ## par
+# else
+# define MSGPACK_PP_STRINGIZE(text) MSGPACK_PP_STRINGIZE_I(text)
+# endif
+#
+# define MSGPACK_PP_STRINGIZE_I(text) #text
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/tuple.hpp b/third_party/msgpack/include/msgpack/preprocessor/tuple.hpp
new file mode 100644
index 0000000000..d9bf9f7411
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/tuple.hpp
@@ -0,0 +1,35 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+# /* Revised by Edward Diener (2011,2013) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_TUPLE_HPP
+# define MSGPACK_PREPROCESSOR_TUPLE_HPP
+#
+# include <msgpack/preprocessor/tuple/eat.hpp>
+# include <msgpack/preprocessor/tuple/elem.hpp>
+# include <msgpack/preprocessor/tuple/enum.hpp>
+# include <msgpack/preprocessor/tuple/insert.hpp>
+# include <msgpack/preprocessor/tuple/pop_back.hpp>
+# include <msgpack/preprocessor/tuple/pop_front.hpp>
+# include <msgpack/preprocessor/tuple/push_back.hpp>
+# include <msgpack/preprocessor/tuple/push_front.hpp>
+# include <msgpack/preprocessor/tuple/rem.hpp>
+# include <msgpack/preprocessor/tuple/remove.hpp>
+# include <msgpack/preprocessor/tuple/replace.hpp>
+# include <msgpack/preprocessor/tuple/reverse.hpp>
+# include <msgpack/preprocessor/tuple/size.hpp>
+# include <msgpack/preprocessor/tuple/to_array.hpp>
+# include <msgpack/preprocessor/tuple/to_list.hpp>
+# include <msgpack/preprocessor/tuple/to_seq.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/tuple/detail/is_single_return.hpp b/third_party/msgpack/include/msgpack/preprocessor/tuple/detail/is_single_return.hpp
new file mode 100644
index 0000000000..1d7e2697dc
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/tuple/detail/is_single_return.hpp
@@ -0,0 +1,28 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2014. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_TUPLE_DETAIL_IS_SINGLE_RETURN_HPP
+# define MSGPACK_PREPROCESSOR_TUPLE_DETAIL_IS_SINGLE_RETURN_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# /* MSGPACK_PP_TUPLE_IS_SINGLE_RETURN */
+#
+# if MSGPACK_PP_VARIADICS && MSGPACK_PP_VARIADICS_MSVC
+# include <msgpack/preprocessor/control/iif.hpp>
+# include <msgpack/preprocessor/facilities/is_1.hpp>
+# include <msgpack/preprocessor/tuple/size.hpp>
+# define MSGPACK_PP_TUPLE_IS_SINGLE_RETURN(sr,nsr,tuple) \
+ MSGPACK_PP_IIF(MSGPACK_PP_IS_1(MSGPACK_PP_TUPLE_SIZE(tuple)),sr,nsr) \
+ /**/
+# endif /* MSGPACK_PP_VARIADICS && MSGPACK_PP_VARIADICS_MSVC */
+#
+# endif /* MSGPACK_PREPROCESSOR_TUPLE_DETAIL_IS_SINGLE_RETURN_HPP */
diff --git a/third_party/msgpack/include/msgpack/preprocessor/tuple/eat.hpp b/third_party/msgpack/include/msgpack/preprocessor/tuple/eat.hpp
new file mode 100644
index 0000000000..877dd3c086
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/tuple/eat.hpp
@@ -0,0 +1,115 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002-2011) */
+# /* Revised by Edward Diener (2011,2015) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_TUPLE_EAT_HPP
+# define MSGPACK_PREPROCESSOR_TUPLE_EAT_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# /* MSGPACK_PP_EAT */
+#
+# if MSGPACK_PP_VARIADICS
+# define MSGPACK_PP_EAT(...)
+# else
+# define MSGPACK_PP_EAT(x)
+# endif
+#
+# /* MSGPACK_PP_TUPLE_EAT */
+#
+# if MSGPACK_PP_VARIADICS
+# define MSGPACK_PP_TUPLE_EAT(size) MSGPACK_PP_EAT
+# else
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_TUPLE_EAT(size) MSGPACK_PP_TUPLE_EAT_I(size)
+# else
+# define MSGPACK_PP_TUPLE_EAT(size) MSGPACK_PP_TUPLE_EAT_OO((size))
+# define MSGPACK_PP_TUPLE_EAT_OO(par) MSGPACK_PP_TUPLE_EAT_I ## par
+# endif
+# define MSGPACK_PP_TUPLE_EAT_I(size) MSGPACK_PP_TUPLE_EAT_ ## size
+# endif
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_TUPLE_EAT_N(size) MSGPACK_PP_TUPLE_EAT_N_I(size)
+# else
+# define MSGPACK_PP_TUPLE_EAT_N(size) MSGPACK_PP_TUPLE_EAT_N_OO((size))
+# define MSGPACK_PP_TUPLE_EAT_N_OO(par) MSGPACK_PP_TUPLE_EAT_N_I ## par
+# endif
+# define MSGPACK_PP_TUPLE_EAT_N_I(size) MSGPACK_PP_TUPLE_EAT_ ## size
+#
+# define MSGPACK_PP_TUPLE_EAT_1(e0)
+# define MSGPACK_PP_TUPLE_EAT_2(e0, e1)
+# define MSGPACK_PP_TUPLE_EAT_3(e0, e1, e2)
+# define MSGPACK_PP_TUPLE_EAT_4(e0, e1, e2, e3)
+# define MSGPACK_PP_TUPLE_EAT_5(e0, e1, e2, e3, e4)
+# define MSGPACK_PP_TUPLE_EAT_6(e0, e1, e2, e3, e4, e5)
+# define MSGPACK_PP_TUPLE_EAT_7(e0, e1, e2, e3, e4, e5, e6)
+# define MSGPACK_PP_TUPLE_EAT_8(e0, e1, e2, e3, e4, e5, e6, e7)
+# define MSGPACK_PP_TUPLE_EAT_9(e0, e1, e2, e3, e4, e5, e6, e7, e8)
+# define MSGPACK_PP_TUPLE_EAT_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9)
+# define MSGPACK_PP_TUPLE_EAT_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10)
+# define MSGPACK_PP_TUPLE_EAT_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11)
+# define MSGPACK_PP_TUPLE_EAT_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12)
+# define MSGPACK_PP_TUPLE_EAT_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13)
+# define MSGPACK_PP_TUPLE_EAT_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14)
+# define MSGPACK_PP_TUPLE_EAT_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15)
+# define MSGPACK_PP_TUPLE_EAT_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16)
+# define MSGPACK_PP_TUPLE_EAT_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17)
+# define MSGPACK_PP_TUPLE_EAT_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18)
+# define MSGPACK_PP_TUPLE_EAT_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19)
+# define MSGPACK_PP_TUPLE_EAT_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20)
+# define MSGPACK_PP_TUPLE_EAT_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21)
+# define MSGPACK_PP_TUPLE_EAT_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22)
+# define MSGPACK_PP_TUPLE_EAT_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23)
+# define MSGPACK_PP_TUPLE_EAT_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24)
+# define MSGPACK_PP_TUPLE_EAT_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25)
+# define MSGPACK_PP_TUPLE_EAT_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26)
+# define MSGPACK_PP_TUPLE_EAT_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27)
+# define MSGPACK_PP_TUPLE_EAT_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28)
+# define MSGPACK_PP_TUPLE_EAT_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29)
+# define MSGPACK_PP_TUPLE_EAT_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30)
+# define MSGPACK_PP_TUPLE_EAT_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31)
+# define MSGPACK_PP_TUPLE_EAT_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32)
+# define MSGPACK_PP_TUPLE_EAT_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33)
+# define MSGPACK_PP_TUPLE_EAT_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34)
+# define MSGPACK_PP_TUPLE_EAT_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35)
+# define MSGPACK_PP_TUPLE_EAT_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36)
+# define MSGPACK_PP_TUPLE_EAT_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37)
+# define MSGPACK_PP_TUPLE_EAT_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38)
+# define MSGPACK_PP_TUPLE_EAT_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39)
+# define MSGPACK_PP_TUPLE_EAT_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40)
+# define MSGPACK_PP_TUPLE_EAT_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41)
+# define MSGPACK_PP_TUPLE_EAT_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42)
+# define MSGPACK_PP_TUPLE_EAT_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43)
+# define MSGPACK_PP_TUPLE_EAT_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44)
+# define MSGPACK_PP_TUPLE_EAT_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45)
+# define MSGPACK_PP_TUPLE_EAT_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46)
+# define MSGPACK_PP_TUPLE_EAT_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47)
+# define MSGPACK_PP_TUPLE_EAT_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48)
+# define MSGPACK_PP_TUPLE_EAT_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49)
+# define MSGPACK_PP_TUPLE_EAT_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50)
+# define MSGPACK_PP_TUPLE_EAT_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51)
+# define MSGPACK_PP_TUPLE_EAT_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52)
+# define MSGPACK_PP_TUPLE_EAT_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53)
+# define MSGPACK_PP_TUPLE_EAT_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54)
+# define MSGPACK_PP_TUPLE_EAT_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55)
+# define MSGPACK_PP_TUPLE_EAT_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56)
+# define MSGPACK_PP_TUPLE_EAT_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57)
+# define MSGPACK_PP_TUPLE_EAT_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58)
+# define MSGPACK_PP_TUPLE_EAT_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59)
+# define MSGPACK_PP_TUPLE_EAT_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60)
+# define MSGPACK_PP_TUPLE_EAT_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61)
+# define MSGPACK_PP_TUPLE_EAT_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62)
+# define MSGPACK_PP_TUPLE_EAT_64(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/tuple/elem.hpp b/third_party/msgpack/include/msgpack/preprocessor/tuple/elem.hpp
new file mode 100644
index 0000000000..965cea4ea0
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/tuple/elem.hpp
@@ -0,0 +1,201 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002-2011) */
+# /* Revised by Edward Diener (2011,2014) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_TUPLE_ELEM_HPP
+# define MSGPACK_PREPROCESSOR_TUPLE_ELEM_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/facilities/expand.hpp>
+# include <msgpack/preprocessor/facilities/overload.hpp>
+# include <msgpack/preprocessor/tuple/rem.hpp>
+# include <msgpack/preprocessor/variadic/elem.hpp>
+# include <msgpack/preprocessor/tuple/detail/is_single_return.hpp>
+#
+# if MSGPACK_PP_VARIADICS
+# if MSGPACK_PP_VARIADICS_MSVC
+# define MSGPACK_PP_TUPLE_ELEM(...) MSGPACK_PP_TUPLE_ELEM_I(MSGPACK_PP_OVERLOAD(MSGPACK_PP_TUPLE_ELEM_O_, __VA_ARGS__), (__VA_ARGS__))
+# define MSGPACK_PP_TUPLE_ELEM_I(m, args) MSGPACK_PP_TUPLE_ELEM_II(m, args)
+# define MSGPACK_PP_TUPLE_ELEM_II(m, args) MSGPACK_PP_CAT(m ## args,)
+/*
+ Use MSGPACK_PP_REM_CAT if it is a single element tuple ( which might be empty )
+ else use MSGPACK_PP_REM. This fixes a VC++ problem with an empty tuple and MSGPACK_PP_TUPLE_ELEM
+ functionality. See tuple_elem_bug_test.cxx.
+*/
+# define MSGPACK_PP_TUPLE_ELEM_O_2(n, tuple) \
+ MSGPACK_PP_VARIADIC_ELEM(n, MSGPACK_PP_EXPAND(MSGPACK_PP_TUPLE_IS_SINGLE_RETURN(MSGPACK_PP_REM_CAT,MSGPACK_PP_REM,tuple) tuple)) \
+ /**/
+# else
+# define MSGPACK_PP_TUPLE_ELEM(...) MSGPACK_PP_OVERLOAD(MSGPACK_PP_TUPLE_ELEM_O_, __VA_ARGS__)(__VA_ARGS__)
+# define MSGPACK_PP_TUPLE_ELEM_O_2(n, tuple) MSGPACK_PP_VARIADIC_ELEM(n, MSGPACK_PP_REM tuple)
+# endif
+# define MSGPACK_PP_TUPLE_ELEM_O_3(size, n, tuple) MSGPACK_PP_TUPLE_ELEM_O_2(n, tuple)
+# else
+# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MSVC()
+# define MSGPACK_PP_TUPLE_ELEM(size, n, tuple) MSGPACK_PP_TUPLE_ELEM_I(MSGPACK_PP_CAT(MSGPACK_PP_TUPLE_ELEM_, n), MSGPACK_PP_CAT(MSGPACK_PP_CAT(MSGPACK_PP_TUPLE_ELEM_E_, size), tuple))
+# define MSGPACK_PP_TUPLE_ELEM_I(m, args) MSGPACK_PP_TUPLE_ELEM_II(m, args)
+# define MSGPACK_PP_TUPLE_ELEM_II(m, args) MSGPACK_PP_CAT(m ## args,)
+# elif MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_TUPLE_ELEM(size, n, tuple) MSGPACK_PP_TUPLE_ELEM_I_OO((size, n, tuple))
+# define MSGPACK_PP_TUPLE_ELEM_I_OO(par) MSGPACK_PP_TUPLE_ELEM_I ## par
+# define MSGPACK_PP_TUPLE_ELEM_I(size, n, tuple) MSGPACK_PP_TUPLE_ELEM_II((n, MSGPACK_PP_TUPLE_ELEM_E_ ## size ## tuple))
+# define MSGPACK_PP_TUPLE_ELEM_II(par) MSGPACK_PP_TUPLE_ELEM_III_OO(par)
+# define MSGPACK_PP_TUPLE_ELEM_III_OO(par) MSGPACK_PP_TUPLE_ELEM_III ## par
+# define MSGPACK_PP_TUPLE_ELEM_III(n, etuple) MSGPACK_PP_TUPLE_ELEM_ ## n ## etuple
+# else
+# define MSGPACK_PP_TUPLE_ELEM(size, n, tuple) MSGPACK_PP_TUPLE_ELEM_I(MSGPACK_PP_CAT(MSGPACK_PP_TUPLE_ELEM_, n) MSGPACK_PP_CAT(MSGPACK_PP_TUPLE_ELEM_E_, size) tuple)
+# define MSGPACK_PP_TUPLE_ELEM_I(x) x
+# endif
+# define MSGPACK_PP_TUPLE_ELEM_E_1(e0) (e0, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_2(e0, e1) (e0, e1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_3(e0, e1, e2) (e0, e1, e2, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_4(e0, e1, e2, e3) (e0, e1, e2, e3, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_5(e0, e1, e2, e3, e4) (e0, e1, e2, e3, e4, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_6(e0, e1, e2, e3, e4, e5) (e0, e1, e2, e3, e4, e5, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_7(e0, e1, e2, e3, e4, e5, e6) (e0, e1, e2, e3, e4, e5, e6, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_8(e0, e1, e2, e3, e4, e5, e6, e7) (e0, e1, e2, e3, e4, e5, e6, e7, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_9(e0, e1, e2, e3, e4, e5, e6, e7, e8) (e0, e1, e2, e3, e4, e5, e6, e7, e8, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, ?, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, ?, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, ?, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, ?, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, ?, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, ?, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, ?, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, ?)
+# define MSGPACK_PP_TUPLE_ELEM_E_64
+# define MSGPACK_PP_TUPLE_ELEM_0(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e0
+# define MSGPACK_PP_TUPLE_ELEM_1(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e1
+# define MSGPACK_PP_TUPLE_ELEM_2(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e2
+# define MSGPACK_PP_TUPLE_ELEM_3(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e3
+# define MSGPACK_PP_TUPLE_ELEM_4(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e4
+# define MSGPACK_PP_TUPLE_ELEM_5(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e5
+# define MSGPACK_PP_TUPLE_ELEM_6(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e6
+# define MSGPACK_PP_TUPLE_ELEM_7(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e7
+# define MSGPACK_PP_TUPLE_ELEM_8(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e8
+# define MSGPACK_PP_TUPLE_ELEM_9(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e9
+# define MSGPACK_PP_TUPLE_ELEM_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e10
+# define MSGPACK_PP_TUPLE_ELEM_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e11
+# define MSGPACK_PP_TUPLE_ELEM_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e12
+# define MSGPACK_PP_TUPLE_ELEM_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e13
+# define MSGPACK_PP_TUPLE_ELEM_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e14
+# define MSGPACK_PP_TUPLE_ELEM_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e15
+# define MSGPACK_PP_TUPLE_ELEM_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e16
+# define MSGPACK_PP_TUPLE_ELEM_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e17
+# define MSGPACK_PP_TUPLE_ELEM_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e18
+# define MSGPACK_PP_TUPLE_ELEM_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e19
+# define MSGPACK_PP_TUPLE_ELEM_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e20
+# define MSGPACK_PP_TUPLE_ELEM_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e21
+# define MSGPACK_PP_TUPLE_ELEM_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e22
+# define MSGPACK_PP_TUPLE_ELEM_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e23
+# define MSGPACK_PP_TUPLE_ELEM_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e24
+# define MSGPACK_PP_TUPLE_ELEM_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e25
+# define MSGPACK_PP_TUPLE_ELEM_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e26
+# define MSGPACK_PP_TUPLE_ELEM_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e27
+# define MSGPACK_PP_TUPLE_ELEM_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e28
+# define MSGPACK_PP_TUPLE_ELEM_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e29
+# define MSGPACK_PP_TUPLE_ELEM_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e30
+# define MSGPACK_PP_TUPLE_ELEM_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e31
+# define MSGPACK_PP_TUPLE_ELEM_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e32
+# define MSGPACK_PP_TUPLE_ELEM_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e33
+# define MSGPACK_PP_TUPLE_ELEM_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e34
+# define MSGPACK_PP_TUPLE_ELEM_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e35
+# define MSGPACK_PP_TUPLE_ELEM_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e36
+# define MSGPACK_PP_TUPLE_ELEM_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e37
+# define MSGPACK_PP_TUPLE_ELEM_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e38
+# define MSGPACK_PP_TUPLE_ELEM_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e39
+# define MSGPACK_PP_TUPLE_ELEM_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e40
+# define MSGPACK_PP_TUPLE_ELEM_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e41
+# define MSGPACK_PP_TUPLE_ELEM_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e42
+# define MSGPACK_PP_TUPLE_ELEM_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e43
+# define MSGPACK_PP_TUPLE_ELEM_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e44
+# define MSGPACK_PP_TUPLE_ELEM_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e45
+# define MSGPACK_PP_TUPLE_ELEM_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e46
+# define MSGPACK_PP_TUPLE_ELEM_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e47
+# define MSGPACK_PP_TUPLE_ELEM_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e48
+# define MSGPACK_PP_TUPLE_ELEM_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e49
+# define MSGPACK_PP_TUPLE_ELEM_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e50
+# define MSGPACK_PP_TUPLE_ELEM_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e51
+# define MSGPACK_PP_TUPLE_ELEM_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e52
+# define MSGPACK_PP_TUPLE_ELEM_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e53
+# define MSGPACK_PP_TUPLE_ELEM_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e54
+# define MSGPACK_PP_TUPLE_ELEM_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e55
+# define MSGPACK_PP_TUPLE_ELEM_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e56
+# define MSGPACK_PP_TUPLE_ELEM_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e57
+# define MSGPACK_PP_TUPLE_ELEM_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e58
+# define MSGPACK_PP_TUPLE_ELEM_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e59
+# define MSGPACK_PP_TUPLE_ELEM_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e60
+# define MSGPACK_PP_TUPLE_ELEM_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e61
+# define MSGPACK_PP_TUPLE_ELEM_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e62
+# define MSGPACK_PP_TUPLE_ELEM_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e63
+# endif
+#
+# /* directly used elsewhere in Boost... */
+#
+# define MSGPACK_PP_TUPLE_ELEM_1_0(a) a
+#
+# define MSGPACK_PP_TUPLE_ELEM_2_0(a, b) a
+# define MSGPACK_PP_TUPLE_ELEM_2_1(a, b) b
+#
+# define MSGPACK_PP_TUPLE_ELEM_3_0(a, b, c) a
+# define MSGPACK_PP_TUPLE_ELEM_3_1(a, b, c) b
+# define MSGPACK_PP_TUPLE_ELEM_3_2(a, b, c) c
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/tuple/enum.hpp b/third_party/msgpack/include/msgpack/preprocessor/tuple/enum.hpp
new file mode 100644
index 0000000000..212087267a
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/tuple/enum.hpp
@@ -0,0 +1,22 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011. *
+# * (C) Copyright Paul Mensonides 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_TUPLE_ENUM_HPP
+# define MSGPACK_PREPROCESSOR_TUPLE_ENUM_HPP
+#
+# include <msgpack/preprocessor/tuple/rem.hpp>
+#
+# /* MSGPACK_PP_TUPLE_ENUM */
+#
+# define MSGPACK_PP_TUPLE_ENUM MSGPACK_PP_TUPLE_REM_CTOR
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/tuple/insert.hpp b/third_party/msgpack/include/msgpack/preprocessor/tuple/insert.hpp
new file mode 100644
index 0000000000..538bfc795d
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/tuple/insert.hpp
@@ -0,0 +1,37 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2013.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_TUPLE_INSERT_HPP
+# define MSGPACK_PREPROCESSOR_TUPLE_INSERT_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# if MSGPACK_PP_VARIADICS
+#
+# include <msgpack/preprocessor/array/insert.hpp>
+# include <msgpack/preprocessor/array/to_tuple.hpp>
+# include <msgpack/preprocessor/tuple/to_array.hpp>
+#
+# /* MSGPACK_PP_TUPLE_INSERT */
+#
+# define MSGPACK_PP_TUPLE_INSERT(tuple, i, elem) \
+ MSGPACK_PP_ARRAY_TO_TUPLE(MSGPACK_PP_ARRAY_INSERT(MSGPACK_PP_TUPLE_TO_ARRAY(tuple), i, elem)) \
+/**/
+#
+# /* MSGPACK_PP_TUPLE_INSERT_D */
+#
+# define MSGPACK_PP_TUPLE_INSERT_D(d, tuple, i, elem) \
+ MSGPACK_PP_ARRAY_TO_TUPLE(MSGPACK_PP_ARRAY_INSERT_D(d, MSGPACK_PP_TUPLE_TO_ARRAY(tuple), i, elem)) \
+/**/
+#
+# endif // MSGPACK_PP_VARIADICS
+#
+# endif // MSGPACK_PREPROCESSOR_TUPLE_INSERT_HPP
diff --git a/third_party/msgpack/include/msgpack/preprocessor/tuple/pop_back.hpp b/third_party/msgpack/include/msgpack/preprocessor/tuple/pop_back.hpp
new file mode 100644
index 0000000000..ed0d982899
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/tuple/pop_back.hpp
@@ -0,0 +1,64 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2013.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_TUPLE_POP_BACK_HPP
+# define MSGPACK_PREPROCESSOR_TUPLE_POP_BACK_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# if MSGPACK_PP_VARIADICS
+#
+# include <msgpack/preprocessor/array/pop_back.hpp>
+# include <msgpack/preprocessor/array/to_tuple.hpp>
+# include <msgpack/preprocessor/comparison/greater.hpp>
+# include <msgpack/preprocessor/control/iif.hpp>
+# include <msgpack/preprocessor/tuple/size.hpp>
+# include <msgpack/preprocessor/tuple/to_array.hpp>
+#
+# /* MSGPACK_PP_TUPLE_POP_BACK */
+#
+# define MSGPACK_PP_TUPLE_POP_BACK(tuple) \
+ MSGPACK_PP_IIF \
+ ( \
+ MSGPACK_PP_GREATER(MSGPACK_PP_TUPLE_SIZE(tuple),1), \
+ MSGPACK_PP_TUPLE_POP_BACK_EXEC, \
+ MSGPACK_PP_TUPLE_POP_BACK_RETURN \
+ ) \
+ (tuple) \
+/**/
+#
+# define MSGPACK_PP_TUPLE_POP_BACK_EXEC(tuple) \
+ MSGPACK_PP_ARRAY_TO_TUPLE(MSGPACK_PP_ARRAY_POP_BACK(MSGPACK_PP_TUPLE_TO_ARRAY(tuple))) \
+/**/
+#
+# define MSGPACK_PP_TUPLE_POP_BACK_RETURN(tuple) tuple
+#
+# /* MSGPACK_PP_TUPLE_POP_BACK_Z */
+#
+# define MSGPACK_PP_TUPLE_POP_BACK_Z(z, tuple) \
+ MSGPACK_PP_IIF \
+ ( \
+ MSGPACK_PP_GREATER(MSGPACK_PP_TUPLE_SIZE(tuple),1), \
+ MSGPACK_PP_TUPLE_POP_BACK_Z_EXEC, \
+ MSGPACK_PP_TUPLE_POP_BACK_Z_RETURN \
+ ) \
+ (z, tuple) \
+/**/
+#
+# define MSGPACK_PP_TUPLE_POP_BACK_Z_EXEC(z, tuple) \
+ MSGPACK_PP_ARRAY_TO_TUPLE(MSGPACK_PP_ARRAY_POP_BACK_Z(z, MSGPACK_PP_TUPLE_TO_ARRAY(tuple))) \
+/**/
+#
+# define MSGPACK_PP_TUPLE_POP_BACK_Z_RETURN(z, tuple) tuple
+#
+# endif // MSGPACK_PP_VARIADICS
+#
+# endif // MSGPACK_PREPROCESSOR_TUPLE_POP_BACK_HPP
diff --git a/third_party/msgpack/include/msgpack/preprocessor/tuple/pop_front.hpp b/third_party/msgpack/include/msgpack/preprocessor/tuple/pop_front.hpp
new file mode 100644
index 0000000000..09ff9be5e4
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/tuple/pop_front.hpp
@@ -0,0 +1,65 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2013.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_TUPLE_POP_FRONT_HPP
+# define MSGPACK_PREPROCESSOR_TUPLE_POP_FRONT_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# if MSGPACK_PP_VARIADICS
+#
+# include <msgpack/preprocessor/array/pop_front.hpp>
+# include <msgpack/preprocessor/array/to_tuple.hpp>
+# include <msgpack/preprocessor/comparison/greater.hpp>
+# include <msgpack/preprocessor/control/iif.hpp>
+# include <msgpack/preprocessor/tuple/size.hpp>
+# include <msgpack/preprocessor/tuple/to_array.hpp>
+#
+#
+# /* MSGPACK_PP_TUPLE_POP_FRONT */
+#
+# define MSGPACK_PP_TUPLE_POP_FRONT(tuple) \
+ MSGPACK_PP_IIF \
+ ( \
+ MSGPACK_PP_GREATER(MSGPACK_PP_TUPLE_SIZE(tuple),1), \
+ MSGPACK_PP_TUPLE_POP_FRONT_EXEC, \
+ MSGPACK_PP_TUPLE_POP_FRONT_RETURN \
+ ) \
+ (tuple) \
+/**/
+#
+# define MSGPACK_PP_TUPLE_POP_FRONT_EXEC(tuple) \
+ MSGPACK_PP_ARRAY_TO_TUPLE(MSGPACK_PP_ARRAY_POP_FRONT(MSGPACK_PP_TUPLE_TO_ARRAY(tuple))) \
+/**/
+#
+# define MSGPACK_PP_TUPLE_POP_FRONT_RETURN(tuple) tuple
+#
+# /* MSGPACK_PP_TUPLE_POP_FRONT_Z */
+#
+# define MSGPACK_PP_TUPLE_POP_FRONT_Z(z, tuple) \
+ MSGPACK_PP_IIF \
+ ( \
+ MSGPACK_PP_GREATER(MSGPACK_PP_TUPLE_SIZE(tuple),1), \
+ MSGPACK_PP_TUPLE_POP_FRONT_Z_EXEC, \
+ MSGPACK_PP_TUPLE_POP_FRONT_Z_RETURN \
+ ) \
+ (z, tuple) \
+/**/
+#
+# define MSGPACK_PP_TUPLE_POP_FRONT_Z_EXEC(z, tuple) \
+ MSGPACK_PP_ARRAY_TO_TUPLE(MSGPACK_PP_ARRAY_POP_FRONT_Z(z, MSGPACK_PP_TUPLE_TO_ARRAY(tuple))) \
+/**/
+#
+# define MSGPACK_PP_TUPLE_POP_FRONT_Z_RETURN(z, tuple) tuple
+#
+# endif // MSGPACK_PP_VARIADICS
+#
+# endif // MSGPACK_PREPROCESSOR_TUPLE_POP_FRONT_HPP
diff --git a/third_party/msgpack/include/msgpack/preprocessor/tuple/push_back.hpp b/third_party/msgpack/include/msgpack/preprocessor/tuple/push_back.hpp
new file mode 100644
index 0000000000..447e54016b
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/tuple/push_back.hpp
@@ -0,0 +1,31 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2013.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_TUPLE_PUSH_BACK_HPP
+# define MSGPACK_PREPROCESSOR_TUPLE_PUSH_BACK_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# if MSGPACK_PP_VARIADICS
+#
+# include <msgpack/preprocessor/array/push_back.hpp>
+# include <msgpack/preprocessor/array/to_tuple.hpp>
+# include <msgpack/preprocessor/tuple/to_array.hpp>
+#
+# /* MSGPACK_PP_TUPLE_PUSH_BACK */
+#
+# define MSGPACK_PP_TUPLE_PUSH_BACK(tuple, elem) \
+ MSGPACK_PP_ARRAY_TO_TUPLE(MSGPACK_PP_ARRAY_PUSH_BACK(MSGPACK_PP_TUPLE_TO_ARRAY(tuple), elem)) \
+/**/
+#
+# endif // MSGPACK_PP_VARIADICS
+#
+# endif // MSGPACK_PREPROCESSOR_TUPLE_PUSH_BACK_HPP
diff --git a/third_party/msgpack/include/msgpack/preprocessor/tuple/push_front.hpp b/third_party/msgpack/include/msgpack/preprocessor/tuple/push_front.hpp
new file mode 100644
index 0000000000..f4579a3a9b
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/tuple/push_front.hpp
@@ -0,0 +1,32 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2013.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_TUPLE_PUSH_FRONT_HPP
+# define MSGPACK_PREPROCESSOR_TUPLE_PUSH_FRONT_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# if MSGPACK_PP_VARIADICS
+#
+# include <msgpack/preprocessor/array/push_front.hpp>
+# include <msgpack/preprocessor/array/to_tuple.hpp>
+# include <msgpack/preprocessor/tuple/to_array.hpp>
+#
+#
+# /* MSGPACK_PP_TUPLE_PUSH_FRONT */
+#
+# define MSGPACK_PP_TUPLE_PUSH_FRONT(tuple, elem) \
+ MSGPACK_PP_ARRAY_TO_TUPLE(MSGPACK_PP_ARRAY_PUSH_FRONT(MSGPACK_PP_TUPLE_TO_ARRAY(tuple), elem)) \
+/**/
+#
+# endif // MSGPACK_PP_VARIADICS
+#
+# endif // MSGPACK_PREPROCESSOR_TUPLE_PUSH_FRONT_HPP
diff --git a/third_party/msgpack/include/msgpack/preprocessor/tuple/rem.hpp b/third_party/msgpack/include/msgpack/preprocessor/tuple/rem.hpp
new file mode 100644
index 0000000000..a8b9fe5f73
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/tuple/rem.hpp
@@ -0,0 +1,149 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002-2011. *
+# * (C) Copyright Edward Diener 2011,2013. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_TUPLE_REM_HPP
+# define MSGPACK_PREPROCESSOR_TUPLE_REM_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/facilities/expand.hpp>
+# include <msgpack/preprocessor/facilities/overload.hpp>
+# include <msgpack/preprocessor/tuple/detail/is_single_return.hpp>
+#
+# /* MSGPACK_PP_REM */
+#
+# if MSGPACK_PP_VARIADICS
+# if MSGPACK_PP_VARIADICS_MSVC
+ /* To be used internally when __VA_ARGS__ could be empty ( or is a single element ) */
+# define MSGPACK_PP_REM_CAT(...) MSGPACK_PP_CAT(__VA_ARGS__,)
+# endif
+# define MSGPACK_PP_REM(...) __VA_ARGS__
+# else
+# define MSGPACK_PP_REM(x) x
+# endif
+#
+# /* MSGPACK_PP_TUPLE_REM */
+#
+/*
+ VC++8.0 cannot handle the variadic version of MSGPACK_PP_TUPLE_REM(size)
+*/
+# if MSGPACK_PP_VARIADICS && !(MSGPACK_PP_VARIADICS_MSVC && _MSC_VER <= 1400)
+# if MSGPACK_PP_VARIADICS_MSVC
+ /* To be used internally when the size could be 0 ( or 1 ) */
+# define MSGPACK_PP_TUPLE_REM_CAT(size) MSGPACK_PP_REM_CAT
+# endif
+# define MSGPACK_PP_TUPLE_REM(size) MSGPACK_PP_REM
+# else
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_TUPLE_REM(size) MSGPACK_PP_TUPLE_REM_I(size)
+# else
+# define MSGPACK_PP_TUPLE_REM(size) MSGPACK_PP_TUPLE_REM_OO((size))
+# define MSGPACK_PP_TUPLE_REM_OO(par) MSGPACK_PP_TUPLE_REM_I ## par
+# endif
+# define MSGPACK_PP_TUPLE_REM_I(size) MSGPACK_PP_TUPLE_REM_ ## size
+# endif
+# define MSGPACK_PP_TUPLE_REM_0()
+# define MSGPACK_PP_TUPLE_REM_1(e0) e0
+# define MSGPACK_PP_TUPLE_REM_2(e0, e1) e0, e1
+# define MSGPACK_PP_TUPLE_REM_3(e0, e1, e2) e0, e1, e2
+# define MSGPACK_PP_TUPLE_REM_4(e0, e1, e2, e3) e0, e1, e2, e3
+# define MSGPACK_PP_TUPLE_REM_5(e0, e1, e2, e3, e4) e0, e1, e2, e3, e4
+# define MSGPACK_PP_TUPLE_REM_6(e0, e1, e2, e3, e4, e5) e0, e1, e2, e3, e4, e5
+# define MSGPACK_PP_TUPLE_REM_7(e0, e1, e2, e3, e4, e5, e6) e0, e1, e2, e3, e4, e5, e6
+# define MSGPACK_PP_TUPLE_REM_8(e0, e1, e2, e3, e4, e5, e6, e7) e0, e1, e2, e3, e4, e5, e6, e7
+# define MSGPACK_PP_TUPLE_REM_9(e0, e1, e2, e3, e4, e5, e6, e7, e8) e0, e1, e2, e3, e4, e5, e6, e7, e8
+# define MSGPACK_PP_TUPLE_REM_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9
+# define MSGPACK_PP_TUPLE_REM_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10
+# define MSGPACK_PP_TUPLE_REM_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11
+# define MSGPACK_PP_TUPLE_REM_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12
+# define MSGPACK_PP_TUPLE_REM_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13
+# define MSGPACK_PP_TUPLE_REM_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14
+# define MSGPACK_PP_TUPLE_REM_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15
+# define MSGPACK_PP_TUPLE_REM_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16
+# define MSGPACK_PP_TUPLE_REM_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17
+# define MSGPACK_PP_TUPLE_REM_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18
+# define MSGPACK_PP_TUPLE_REM_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19
+# define MSGPACK_PP_TUPLE_REM_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20
+# define MSGPACK_PP_TUPLE_REM_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21
+# define MSGPACK_PP_TUPLE_REM_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22
+# define MSGPACK_PP_TUPLE_REM_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23
+# define MSGPACK_PP_TUPLE_REM_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24
+# define MSGPACK_PP_TUPLE_REM_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25
+# define MSGPACK_PP_TUPLE_REM_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26
+# define MSGPACK_PP_TUPLE_REM_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27
+# define MSGPACK_PP_TUPLE_REM_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28
+# define MSGPACK_PP_TUPLE_REM_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29
+# define MSGPACK_PP_TUPLE_REM_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30
+# define MSGPACK_PP_TUPLE_REM_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31
+# define MSGPACK_PP_TUPLE_REM_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32
+# define MSGPACK_PP_TUPLE_REM_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33
+# define MSGPACK_PP_TUPLE_REM_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34
+# define MSGPACK_PP_TUPLE_REM_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35
+# define MSGPACK_PP_TUPLE_REM_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36
+# define MSGPACK_PP_TUPLE_REM_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37
+# define MSGPACK_PP_TUPLE_REM_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38
+# define MSGPACK_PP_TUPLE_REM_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39
+# define MSGPACK_PP_TUPLE_REM_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40
+# define MSGPACK_PP_TUPLE_REM_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41
+# define MSGPACK_PP_TUPLE_REM_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42
+# define MSGPACK_PP_TUPLE_REM_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43
+# define MSGPACK_PP_TUPLE_REM_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44
+# define MSGPACK_PP_TUPLE_REM_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45
+# define MSGPACK_PP_TUPLE_REM_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46
+# define MSGPACK_PP_TUPLE_REM_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47
+# define MSGPACK_PP_TUPLE_REM_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48
+# define MSGPACK_PP_TUPLE_REM_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49
+# define MSGPACK_PP_TUPLE_REM_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50
+# define MSGPACK_PP_TUPLE_REM_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51
+# define MSGPACK_PP_TUPLE_REM_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52
+# define MSGPACK_PP_TUPLE_REM_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53
+# define MSGPACK_PP_TUPLE_REM_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54
+# define MSGPACK_PP_TUPLE_REM_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55
+# define MSGPACK_PP_TUPLE_REM_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56
+# define MSGPACK_PP_TUPLE_REM_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57
+# define MSGPACK_PP_TUPLE_REM_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58
+# define MSGPACK_PP_TUPLE_REM_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59
+# define MSGPACK_PP_TUPLE_REM_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60
+# define MSGPACK_PP_TUPLE_REM_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61
+# define MSGPACK_PP_TUPLE_REM_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62
+# define MSGPACK_PP_TUPLE_REM_64(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63
+#
+# /* MSGPACK_PP_TUPLE_REM_CTOR */
+#
+# if MSGPACK_PP_VARIADICS
+# if MSGPACK_PP_VARIADICS_MSVC
+# define MSGPACK_PP_TUPLE_REM_CTOR(...) MSGPACK_PP_TUPLE_REM_CTOR_I(MSGPACK_PP_OVERLOAD(MSGPACK_PP_TUPLE_REM_CTOR_O_, __VA_ARGS__), (__VA_ARGS__))
+# define MSGPACK_PP_TUPLE_REM_CTOR_I(m, args) MSGPACK_PP_TUPLE_REM_CTOR_II(m, args)
+# define MSGPACK_PP_TUPLE_REM_CTOR_II(m, args) MSGPACK_PP_CAT(m ## args,)
+# define MSGPACK_PP_TUPLE_REM_CTOR_O_1(tuple) MSGPACK_PP_EXPAND(MSGPACK_PP_TUPLE_IS_SINGLE_RETURN(MSGPACK_PP_REM_CAT,MSGPACK_PP_REM,tuple) tuple)
+# else
+# define MSGPACK_PP_TUPLE_REM_CTOR(...) MSGPACK_PP_OVERLOAD(MSGPACK_PP_TUPLE_REM_CTOR_O_, __VA_ARGS__)(__VA_ARGS__)
+# define MSGPACK_PP_TUPLE_REM_CTOR_O_1(tuple) MSGPACK_PP_REM tuple
+# endif
+# define MSGPACK_PP_TUPLE_REM_CTOR_O_2(size, tuple) MSGPACK_PP_TUPLE_REM_CTOR_O_1(tuple)
+# else
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
+# define MSGPACK_PP_TUPLE_REM_CTOR(size, tuple) MSGPACK_PP_TUPLE_REM_CTOR_I(MSGPACK_PP_TUPLE_REM(size), tuple)
+# else
+# define MSGPACK_PP_TUPLE_REM_CTOR(size, tuple) MSGPACK_PP_TUPLE_REM_CTOR_D(size, tuple)
+# define MSGPACK_PP_TUPLE_REM_CTOR_D(size, tuple) MSGPACK_PP_TUPLE_REM_CTOR_I(MSGPACK_PP_TUPLE_REM(size), tuple)
+# endif
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_TUPLE_REM_CTOR_I(ext, tuple) ext tuple
+# else
+# define MSGPACK_PP_TUPLE_REM_CTOR_I(ext, tuple) MSGPACK_PP_TUPLE_REM_CTOR_OO((ext, tuple))
+# define MSGPACK_PP_TUPLE_REM_CTOR_OO(par) MSGPACK_PP_TUPLE_REM_CTOR_II ## par
+# define MSGPACK_PP_TUPLE_REM_CTOR_II(ext, tuple) ext ## tuple
+# endif
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/tuple/remove.hpp b/third_party/msgpack/include/msgpack/preprocessor/tuple/remove.hpp
new file mode 100644
index 0000000000..5c3839e22a
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/tuple/remove.hpp
@@ -0,0 +1,64 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2013.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_TUPLE_REMOVE_HPP
+# define MSGPACK_PREPROCESSOR_TUPLE_REMOVE_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# if MSGPACK_PP_VARIADICS
+#
+# include <msgpack/preprocessor/array/remove.hpp>
+# include <msgpack/preprocessor/array/to_tuple.hpp>
+# include <msgpack/preprocessor/comparison/greater.hpp>
+# include <msgpack/preprocessor/control/iif.hpp>
+# include <msgpack/preprocessor/tuple/size.hpp>
+# include <msgpack/preprocessor/tuple/to_array.hpp>
+#
+# /* MSGPACK_PP_TUPLE_REMOVE */
+#
+# define MSGPACK_PP_TUPLE_REMOVE(tuple, i) \
+ MSGPACK_PP_IIF \
+ ( \
+ MSGPACK_PP_GREATER(MSGPACK_PP_TUPLE_SIZE(tuple),1), \
+ MSGPACK_PP_TUPLE_REMOVE_EXEC, \
+ MSGPACK_PP_TUPLE_REMOVE_RETURN \
+ ) \
+ (tuple, i) \
+/**/
+#
+# define MSGPACK_PP_TUPLE_REMOVE_EXEC(tuple, i) \
+ MSGPACK_PP_ARRAY_TO_TUPLE(MSGPACK_PP_ARRAY_REMOVE(MSGPACK_PP_TUPLE_TO_ARRAY(tuple), i)) \
+/**/
+#
+# define MSGPACK_PP_TUPLE_REMOVE_RETURN(tuple, i) tuple
+#
+# /* MSGPACK_PP_TUPLE_REMOVE_D */
+#
+# define MSGPACK_PP_TUPLE_REMOVE_D(d, tuple, i) \
+ MSGPACK_PP_IIF \
+ ( \
+ MSGPACK_PP_GREATER_D(d, MSGPACK_PP_TUPLE_SIZE(tuple), 1), \
+ MSGPACK_PP_TUPLE_REMOVE_D_EXEC, \
+ MSGPACK_PP_TUPLE_REMOVE_D_RETURN \
+ ) \
+ (d, tuple, i) \
+/**/
+#
+# define MSGPACK_PP_TUPLE_REMOVE_D_EXEC(d, tuple, i) \
+ MSGPACK_PP_ARRAY_TO_TUPLE(MSGPACK_PP_ARRAY_REMOVE_D(d, MSGPACK_PP_TUPLE_TO_ARRAY(tuple), i)) \
+/**/
+#
+# define MSGPACK_PP_TUPLE_REMOVE_D_RETURN(d, tuple, i) tuple
+#
+# endif // MSGPACK_PP_VARIADICS
+#
+# endif // MSGPACK_PREPROCESSOR_TUPLE_REMOVE_HPP
diff --git a/third_party/msgpack/include/msgpack/preprocessor/tuple/replace.hpp b/third_party/msgpack/include/msgpack/preprocessor/tuple/replace.hpp
new file mode 100644
index 0000000000..de36d94f5c
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/tuple/replace.hpp
@@ -0,0 +1,37 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2013.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_TUPLE_REPLACE_HPP
+# define MSGPACK_PREPROCESSOR_TUPLE_REPLACE_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# if MSGPACK_PP_VARIADICS
+#
+# include <msgpack/preprocessor/array/replace.hpp>
+# include <msgpack/preprocessor/array/to_tuple.hpp>
+# include <msgpack/preprocessor/tuple/to_array.hpp>
+#
+# /* MSGPACK_PP_TUPLE_REPLACE */
+#
+# define MSGPACK_PP_TUPLE_REPLACE(tuple, i, elem) \
+ MSGPACK_PP_ARRAY_TO_TUPLE(MSGPACK_PP_ARRAY_REPLACE(MSGPACK_PP_TUPLE_TO_ARRAY(tuple), i, elem)) \
+/**/
+#
+# /* MSGPACK_PP_TUPLE_REPLACE_D */
+#
+# define MSGPACK_PP_TUPLE_REPLACE_D(d, tuple, i, elem) \
+ MSGPACK_PP_ARRAY_TO_TUPLE(MSGPACK_PP_ARRAY_REPLACE_D(d, MSGPACK_PP_TUPLE_TO_ARRAY(tuple), i, elem)) \
+/**/
+#
+# endif // MSGPACK_PP_VARIADICS
+#
+# endif // MSGPACK_PREPROCESSOR_TUPLE_REPLACE_HPP
diff --git a/third_party/msgpack/include/msgpack/preprocessor/tuple/reverse.hpp b/third_party/msgpack/include/msgpack/preprocessor/tuple/reverse.hpp
new file mode 100644
index 0000000000..85a74e72ab
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/tuple/reverse.hpp
@@ -0,0 +1,117 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002-2011) */
+# /* Revised by Edward Diener (2011) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_TUPLE_REVERSE_HPP
+# define MSGPACK_PREPROCESSOR_TUPLE_REVERSE_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/facilities/overload.hpp>
+# include <msgpack/preprocessor/tuple/size.hpp>
+# include <msgpack/preprocessor/variadic/size.hpp>
+#
+# /* MSGPACK_PP_TUPLE_REVERSE */
+#
+# if MSGPACK_PP_VARIADICS
+# if MSGPACK_PP_VARIADICS_MSVC
+# define MSGPACK_PP_TUPLE_REVERSE(...) MSGPACK_PP_TUPLE_REVERSE_I(MSGPACK_PP_OVERLOAD(MSGPACK_PP_TUPLE_REVERSE_O_, __VA_ARGS__), (__VA_ARGS__))
+# define MSGPACK_PP_TUPLE_REVERSE_I(m, args) MSGPACK_PP_TUPLE_REVERSE_II(m, args)
+# define MSGPACK_PP_TUPLE_REVERSE_II(m, args) MSGPACK_PP_CAT(m ## args,)
+# define MSGPACK_PP_TUPLE_REVERSE_O_1(tuple) MSGPACK_PP_CAT(MSGPACK_PP_TUPLE_REVERSE_, MSGPACK_PP_TUPLE_SIZE(tuple)) tuple
+# else
+# define MSGPACK_PP_TUPLE_REVERSE(...) MSGPACK_PP_OVERLOAD(MSGPACK_PP_TUPLE_REVERSE_O_, __VA_ARGS__)(__VA_ARGS__)
+# define MSGPACK_PP_TUPLE_REVERSE_O_1(tuple) MSGPACK_PP_CAT(MSGPACK_PP_TUPLE_REVERSE_, MSGPACK_PP_VARIADIC_SIZE tuple) tuple
+# endif
+# define MSGPACK_PP_TUPLE_REVERSE_O_2(size, tuple) MSGPACK_PP_TUPLE_REVERSE_O_1(tuple)
+# else
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_TUPLE_REVERSE(size, tuple) MSGPACK_PP_TUPLE_REVERSE_I(size, tuple)
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MSVC()
+# define MSGPACK_PP_TUPLE_REVERSE_I(s, t) MSGPACK_PP_TUPLE_REVERSE_ ## s t
+# else
+# define MSGPACK_PP_TUPLE_REVERSE_I(s, t) MSGPACK_PP_TUPLE_REVERSE_II(MSGPACK_PP_TUPLE_REVERSE_ ## s t)
+# define MSGPACK_PP_TUPLE_REVERSE_II(res) res
+# endif
+# else
+# define MSGPACK_PP_TUPLE_REVERSE(size, tuple) MSGPACK_PP_TUPLE_REVERSE_OO((size, tuple))
+# define MSGPACK_PP_TUPLE_REVERSE_OO(par) MSGPACK_PP_TUPLE_REVERSE_I ## par
+# define MSGPACK_PP_TUPLE_REVERSE_I(s, t) MSGPACK_PP_TUPLE_REVERSE_ ## s ## t
+# endif
+# endif
+# define MSGPACK_PP_TUPLE_REVERSE_1(e0) (e0)
+# define MSGPACK_PP_TUPLE_REVERSE_2(e0, e1) (e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_3(e0, e1, e2) (e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_4(e0, e1, e2, e3) (e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_5(e0, e1, e2, e3, e4) (e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_6(e0, e1, e2, e3, e4, e5) (e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_7(e0, e1, e2, e3, e4, e5, e6) (e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_8(e0, e1, e2, e3, e4, e5, e6, e7) (e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_9(e0, e1, e2, e3, e4, e5, e6, e7, e8) (e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9) (e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10) (e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11) (e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12) (e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13) (e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14) (e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15) (e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16) (e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17) (e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18) (e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19) (e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20) (e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21) (e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22) (e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23) (e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24) (e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25) (e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26) (e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27) (e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28) (e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29) (e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30) (e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31) (e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32) (e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33) (e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34) (e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35) (e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36) (e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37) (e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38) (e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39) (e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40) (e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41) (e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42) (e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43) (e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44) (e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45) (e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46) (e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47) (e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48) (e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49) (e49, e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50) (e50, e49, e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51) (e51, e50, e49, e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52) (e52, e51, e50, e49, e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53) (e53, e52, e51, e50, e49, e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54) (e54, e53, e52, e51, e50, e49, e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55) (e55, e54, e53, e52, e51, e50, e49, e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56) (e56, e55, e54, e53, e52, e51, e50, e49, e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57) (e57, e56, e55, e54, e53, e52, e51, e50, e49, e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58) (e58, e57, e56, e55, e54, e53, e52, e51, e50, e49, e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59) (e59, e58, e57, e56, e55, e54, e53, e52, e51, e50, e49, e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60) (e60, e59, e58, e57, e56, e55, e54, e53, e52, e51, e50, e49, e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61) (e61, e60, e59, e58, e57, e56, e55, e54, e53, e52, e51, e50, e49, e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62) (e62, e61, e60, e59, e58, e57, e56, e55, e54, e53, e52, e51, e50, e49, e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define MSGPACK_PP_TUPLE_REVERSE_64(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) (e63, e62, e61, e60, e59, e58, e57, e56, e55, e54, e53, e52, e51, e50, e49, e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/tuple/size.hpp b/third_party/msgpack/include/msgpack/preprocessor/tuple/size.hpp
new file mode 100644
index 0000000000..cbc4b32207
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/tuple/size.hpp
@@ -0,0 +1,28 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011. *
+# * (C) Copyright Paul Mensonides 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_TUPLE_SIZE_HPP
+# define MSGPACK_PREPROCESSOR_TUPLE_SIZE_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/variadic/size.hpp>
+#
+# if MSGPACK_PP_VARIADICS
+# if MSGPACK_PP_VARIADICS_MSVC
+# define MSGPACK_PP_TUPLE_SIZE(tuple) MSGPACK_PP_CAT(MSGPACK_PP_VARIADIC_SIZE tuple,)
+# else
+# define MSGPACK_PP_TUPLE_SIZE(tuple) MSGPACK_PP_VARIADIC_SIZE tuple
+# endif
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/tuple/to_array.hpp b/third_party/msgpack/include/msgpack/preprocessor/tuple/to_array.hpp
new file mode 100644
index 0000000000..ff4a97a7d1
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/tuple/to_array.hpp
@@ -0,0 +1,39 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011. *
+# * (C) Copyright Paul Mensonides 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_TUPLE_TO_ARRAY_HPP
+# define MSGPACK_PREPROCESSOR_TUPLE_TO_ARRAY_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/facilities/overload.hpp>
+# include <msgpack/preprocessor/tuple/size.hpp>
+# include <msgpack/preprocessor/variadic/size.hpp>
+#
+# /* MSGPACK_PP_TUPLE_TO_ARRAY */
+#
+# if MSGPACK_PP_VARIADICS
+# if MSGPACK_PP_VARIADICS_MSVC
+# define MSGPACK_PP_TUPLE_TO_ARRAY(...) MSGPACK_PP_TUPLE_TO_ARRAY_I(MSGPACK_PP_OVERLOAD(MSGPACK_PP_TUPLE_TO_ARRAY_, __VA_ARGS__), (__VA_ARGS__))
+# define MSGPACK_PP_TUPLE_TO_ARRAY_I(m, args) MSGPACK_PP_TUPLE_TO_ARRAY_II(m, args)
+# define MSGPACK_PP_TUPLE_TO_ARRAY_II(m, args) MSGPACK_PP_CAT(m ## args,)
+# define MSGPACK_PP_TUPLE_TO_ARRAY_1(tuple) (MSGPACK_PP_TUPLE_SIZE(tuple), tuple)
+# else
+# define MSGPACK_PP_TUPLE_TO_ARRAY(...) MSGPACK_PP_OVERLOAD(MSGPACK_PP_TUPLE_TO_ARRAY_, __VA_ARGS__)(__VA_ARGS__)
+# define MSGPACK_PP_TUPLE_TO_ARRAY_1(tuple) (MSGPACK_PP_VARIADIC_SIZE tuple, tuple)
+# endif
+# define MSGPACK_PP_TUPLE_TO_ARRAY_2(size, tuple) (size, tuple)
+# else
+# define MSGPACK_PP_TUPLE_TO_ARRAY(size, tuple) (size, tuple)
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/tuple/to_list.hpp b/third_party/msgpack/include/msgpack/preprocessor/tuple/to_list.hpp
new file mode 100644
index 0000000000..df60d4351b
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/tuple/to_list.hpp
@@ -0,0 +1,118 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002-2011) */
+# /* Revised by Edward Diener (2011) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_TUPLE_TO_LIST_HPP
+# define MSGPACK_PREPROCESSOR_TUPLE_TO_LIST_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/facilities/overload.hpp>
+# include <msgpack/preprocessor/tuple/size.hpp>
+# include <msgpack/preprocessor/variadic/size.hpp>
+#
+# /* MSGPACK_PP_TUPLE_TO_LIST */
+#
+# if MSGPACK_PP_VARIADICS
+# if MSGPACK_PP_VARIADICS_MSVC
+# define MSGPACK_PP_TUPLE_TO_LIST(...) MSGPACK_PP_TUPLE_TO_LIST_I(MSGPACK_PP_OVERLOAD(MSGPACK_PP_TUPLE_TO_LIST_O_, __VA_ARGS__), (__VA_ARGS__))
+# define MSGPACK_PP_TUPLE_TO_LIST_I(m, args) MSGPACK_PP_TUPLE_TO_LIST_II(m, args)
+# define MSGPACK_PP_TUPLE_TO_LIST_II(m, args) MSGPACK_PP_CAT(m ## args,)
+# define MSGPACK_PP_TUPLE_TO_LIST_O_1(tuple) MSGPACK_PP_CAT(MSGPACK_PP_TUPLE_TO_LIST_, MSGPACK_PP_TUPLE_SIZE(tuple)) tuple
+# else
+# define MSGPACK_PP_TUPLE_TO_LIST(...) MSGPACK_PP_OVERLOAD(MSGPACK_PP_TUPLE_TO_LIST_O_, __VA_ARGS__)(__VA_ARGS__)
+# define MSGPACK_PP_TUPLE_TO_LIST_O_1(tuple) MSGPACK_PP_CAT(MSGPACK_PP_TUPLE_TO_LIST_, MSGPACK_PP_VARIADIC_SIZE tuple) tuple
+# endif
+# define MSGPACK_PP_TUPLE_TO_LIST_O_2(size, tuple) MSGPACK_PP_TUPLE_TO_LIST_O_1(tuple)
+# else
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_TUPLE_TO_LIST(size, tuple) MSGPACK_PP_TUPLE_TO_LIST_I(size, tuple)
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MSVC()
+# define MSGPACK_PP_TUPLE_TO_LIST_I(s, t) MSGPACK_PP_TUPLE_TO_LIST_ ## s t
+# else
+# define MSGPACK_PP_TUPLE_TO_LIST_I(s, t) MSGPACK_PP_TUPLE_TO_LIST_II(MSGPACK_PP_TUPLE_TO_LIST_ ## s t)
+# define MSGPACK_PP_TUPLE_TO_LIST_II(res) res
+# endif
+# else
+# define MSGPACK_PP_TUPLE_TO_LIST(size, tuple) MSGPACK_PP_TUPLE_TO_LIST_OO((size, tuple))
+# define MSGPACK_PP_TUPLE_TO_LIST_OO(par) MSGPACK_PP_TUPLE_TO_LIST_I ## par
+# define MSGPACK_PP_TUPLE_TO_LIST_I(s, t) MSGPACK_PP_TUPLE_TO_LIST_ ## s ## t
+# endif
+# endif
+#
+# define MSGPACK_PP_TUPLE_TO_LIST_1(e0) (e0, MSGPACK_PP_NIL)
+# define MSGPACK_PP_TUPLE_TO_LIST_2(e0, e1) (e0, (e1, MSGPACK_PP_NIL))
+# define MSGPACK_PP_TUPLE_TO_LIST_3(e0, e1, e2) (e0, (e1, (e2, MSGPACK_PP_NIL)))
+# define MSGPACK_PP_TUPLE_TO_LIST_4(e0, e1, e2, e3) (e0, (e1, (e2, (e3, MSGPACK_PP_NIL))))
+# define MSGPACK_PP_TUPLE_TO_LIST_5(e0, e1, e2, e3, e4) (e0, (e1, (e2, (e3, (e4, MSGPACK_PP_NIL)))))
+# define MSGPACK_PP_TUPLE_TO_LIST_6(e0, e1, e2, e3, e4, e5) (e0, (e1, (e2, (e3, (e4, (e5, MSGPACK_PP_NIL))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_7(e0, e1, e2, e3, e4, e5, e6) (e0, (e1, (e2, (e3, (e4, (e5, (e6, MSGPACK_PP_NIL)))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_8(e0, e1, e2, e3, e4, e5, e6, e7) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, MSGPACK_PP_NIL))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_9(e0, e1, e2, e3, e4, e5, e6, e7, e8) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, MSGPACK_PP_NIL)))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, MSGPACK_PP_NIL))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, MSGPACK_PP_NIL)))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, MSGPACK_PP_NIL))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, MSGPACK_PP_NIL)))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, MSGPACK_PP_NIL))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, MSGPACK_PP_NIL)))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, MSGPACK_PP_NIL))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, MSGPACK_PP_NIL)))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, MSGPACK_PP_NIL))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, MSGPACK_PP_NIL)))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, MSGPACK_PP_NIL))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, MSGPACK_PP_NIL)))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, MSGPACK_PP_NIL))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, MSGPACK_PP_NIL)))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, MSGPACK_PP_NIL))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, MSGPACK_PP_NIL)))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, MSGPACK_PP_NIL))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, MSGPACK_PP_NIL)))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, MSGPACK_PP_NIL))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, MSGPACK_PP_NIL)))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, MSGPACK_PP_NIL))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, MSGPACK_PP_NIL)))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, MSGPACK_PP_NIL))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, MSGPACK_PP_NIL)))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, MSGPACK_PP_NIL))))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, MSGPACK_PP_NIL)))))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, MSGPACK_PP_NIL))))))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, MSGPACK_PP_NIL)))))))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, MSGPACK_PP_NIL))))))))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, MSGPACK_PP_NIL)))))))))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, MSGPACK_PP_NIL))))))))))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, MSGPACK_PP_NIL)))))))))))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, MSGPACK_PP_NIL))))))))))))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, MSGPACK_PP_NIL)))))))))))))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, MSGPACK_PP_NIL))))))))))))))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, MSGPACK_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, MSGPACK_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, MSGPACK_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, MSGPACK_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, MSGPACK_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, MSGPACK_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, MSGPACK_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, MSGPACK_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, MSGPACK_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, MSGPACK_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, MSGPACK_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, MSGPACK_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, MSGPACK_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, MSGPACK_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, MSGPACK_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, MSGPACK_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, MSGPACK_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, MSGPACK_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, MSGPACK_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define MSGPACK_PP_TUPLE_TO_LIST_64(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, MSGPACK_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/tuple/to_seq.hpp b/third_party/msgpack/include/msgpack/preprocessor/tuple/to_seq.hpp
new file mode 100644
index 0000000000..a9be8b2352
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/tuple/to_seq.hpp
@@ -0,0 +1,119 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002-2011. *
+# * (C) Copyright Edward Diener 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_TUPLE_TO_SEQ_HPP
+# define MSGPACK_PREPROCESSOR_TUPLE_TO_SEQ_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/facilities/overload.hpp>
+# include <msgpack/preprocessor/tuple/size.hpp>
+# include <msgpack/preprocessor/variadic/size.hpp>
+#
+# /* MSGPACK_PP_TUPLE_TO_SEQ */
+#
+# if MSGPACK_PP_VARIADICS
+# if MSGPACK_PP_VARIADICS_MSVC
+# define MSGPACK_PP_TUPLE_TO_SEQ(...) MSGPACK_PP_TUPLE_TO_SEQ_I(MSGPACK_PP_OVERLOAD(MSGPACK_PP_TUPLE_TO_SEQ_O_, __VA_ARGS__), (__VA_ARGS__))
+# define MSGPACK_PP_TUPLE_TO_SEQ_I(m, args) MSGPACK_PP_TUPLE_TO_SEQ_II(m, args)
+# define MSGPACK_PP_TUPLE_TO_SEQ_II(m, args) MSGPACK_PP_CAT(m ## args,)
+# define MSGPACK_PP_TUPLE_TO_SEQ_O_1(tuple) MSGPACK_PP_CAT(MSGPACK_PP_TUPLE_TO_SEQ_, MSGPACK_PP_TUPLE_SIZE(tuple)) tuple
+# else
+# define MSGPACK_PP_TUPLE_TO_SEQ(...) MSGPACK_PP_OVERLOAD(MSGPACK_PP_TUPLE_TO_SEQ_O_, __VA_ARGS__)(__VA_ARGS__)
+# define MSGPACK_PP_TUPLE_TO_SEQ_O_1(tuple) MSGPACK_PP_CAT(MSGPACK_PP_TUPLE_TO_SEQ_, MSGPACK_PP_VARIADIC_SIZE tuple) tuple
+# endif
+# define MSGPACK_PP_TUPLE_TO_SEQ_O_2(size, tuple) MSGPACK_PP_TUPLE_TO_SEQ_O_1(tuple)
+# else
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_TUPLE_TO_SEQ(size, tuple) MSGPACK_PP_TUPLE_TO_SEQ_I(size, tuple)
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MSVC()
+# define MSGPACK_PP_TUPLE_TO_SEQ_I(s, t) MSGPACK_PP_TUPLE_TO_SEQ_ ## s t
+# else
+# define MSGPACK_PP_TUPLE_TO_SEQ_I(s, t) MSGPACK_PP_TUPLE_TO_SEQ_II(MSGPACK_PP_TUPLE_TO_SEQ_ ## s t)
+# define MSGPACK_PP_TUPLE_TO_SEQ_II(res) res
+# endif
+# else
+# define MSGPACK_PP_TUPLE_TO_SEQ(size, tuple) MSGPACK_PP_TUPLE_TO_SEQ_OO((size, tuple))
+# define MSGPACK_PP_TUPLE_TO_SEQ_OO(par) MSGPACK_PP_TUPLE_TO_SEQ_I ## par
+# define MSGPACK_PP_TUPLE_TO_SEQ_I(s, t) MSGPACK_PP_TUPLE_TO_SEQ_ ## s ## t
+# endif
+# endif
+#
+/* An empty array can be passed */
+# define MSGPACK_PP_TUPLE_TO_SEQ_0() ()
+#
+# define MSGPACK_PP_TUPLE_TO_SEQ_1(e0) (e0)
+# define MSGPACK_PP_TUPLE_TO_SEQ_2(e0, e1) (e0)(e1)
+# define MSGPACK_PP_TUPLE_TO_SEQ_3(e0, e1, e2) (e0)(e1)(e2)
+# define MSGPACK_PP_TUPLE_TO_SEQ_4(e0, e1, e2, e3) (e0)(e1)(e2)(e3)
+# define MSGPACK_PP_TUPLE_TO_SEQ_5(e0, e1, e2, e3, e4) (e0)(e1)(e2)(e3)(e4)
+# define MSGPACK_PP_TUPLE_TO_SEQ_6(e0, e1, e2, e3, e4, e5) (e0)(e1)(e2)(e3)(e4)(e5)
+# define MSGPACK_PP_TUPLE_TO_SEQ_7(e0, e1, e2, e3, e4, e5, e6) (e0)(e1)(e2)(e3)(e4)(e5)(e6)
+# define MSGPACK_PP_TUPLE_TO_SEQ_8(e0, e1, e2, e3, e4, e5, e6, e7) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)
+# define MSGPACK_PP_TUPLE_TO_SEQ_9(e0, e1, e2, e3, e4, e5, e6, e7, e8) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)
+# define MSGPACK_PP_TUPLE_TO_SEQ_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)
+# define MSGPACK_PP_TUPLE_TO_SEQ_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)
+# define MSGPACK_PP_TUPLE_TO_SEQ_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)
+# define MSGPACK_PP_TUPLE_TO_SEQ_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)
+# define MSGPACK_PP_TUPLE_TO_SEQ_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)
+# define MSGPACK_PP_TUPLE_TO_SEQ_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)
+# define MSGPACK_PP_TUPLE_TO_SEQ_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)
+# define MSGPACK_PP_TUPLE_TO_SEQ_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)
+# define MSGPACK_PP_TUPLE_TO_SEQ_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)
+# define MSGPACK_PP_TUPLE_TO_SEQ_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)
+# define MSGPACK_PP_TUPLE_TO_SEQ_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)
+# define MSGPACK_PP_TUPLE_TO_SEQ_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)
+# define MSGPACK_PP_TUPLE_TO_SEQ_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)
+# define MSGPACK_PP_TUPLE_TO_SEQ_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)
+# define MSGPACK_PP_TUPLE_TO_SEQ_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)
+# define MSGPACK_PP_TUPLE_TO_SEQ_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)
+# define MSGPACK_PP_TUPLE_TO_SEQ_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)
+# define MSGPACK_PP_TUPLE_TO_SEQ_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)
+# define MSGPACK_PP_TUPLE_TO_SEQ_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)
+# define MSGPACK_PP_TUPLE_TO_SEQ_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)
+# define MSGPACK_PP_TUPLE_TO_SEQ_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)
+# define MSGPACK_PP_TUPLE_TO_SEQ_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)
+# define MSGPACK_PP_TUPLE_TO_SEQ_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)
+# define MSGPACK_PP_TUPLE_TO_SEQ_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)
+# define MSGPACK_PP_TUPLE_TO_SEQ_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)
+# define MSGPACK_PP_TUPLE_TO_SEQ_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)
+# define MSGPACK_PP_TUPLE_TO_SEQ_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)
+# define MSGPACK_PP_TUPLE_TO_SEQ_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)
+# define MSGPACK_PP_TUPLE_TO_SEQ_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)
+# define MSGPACK_PP_TUPLE_TO_SEQ_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)
+# define MSGPACK_PP_TUPLE_TO_SEQ_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)
+# define MSGPACK_PP_TUPLE_TO_SEQ_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)
+# define MSGPACK_PP_TUPLE_TO_SEQ_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)
+# define MSGPACK_PP_TUPLE_TO_SEQ_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)
+# define MSGPACK_PP_TUPLE_TO_SEQ_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)
+# define MSGPACK_PP_TUPLE_TO_SEQ_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)
+# define MSGPACK_PP_TUPLE_TO_SEQ_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)
+# define MSGPACK_PP_TUPLE_TO_SEQ_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)
+# define MSGPACK_PP_TUPLE_TO_SEQ_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)
+# define MSGPACK_PP_TUPLE_TO_SEQ_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)
+# define MSGPACK_PP_TUPLE_TO_SEQ_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)(e49)
+# define MSGPACK_PP_TUPLE_TO_SEQ_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)(e49)(e50)
+# define MSGPACK_PP_TUPLE_TO_SEQ_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)(e49)(e50)(e51)
+# define MSGPACK_PP_TUPLE_TO_SEQ_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)(e49)(e50)(e51)(e52)
+# define MSGPACK_PP_TUPLE_TO_SEQ_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)(e49)(e50)(e51)(e52)(e53)
+# define MSGPACK_PP_TUPLE_TO_SEQ_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)(e49)(e50)(e51)(e52)(e53)(e54)
+# define MSGPACK_PP_TUPLE_TO_SEQ_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)(e49)(e50)(e51)(e52)(e53)(e54)(e55)
+# define MSGPACK_PP_TUPLE_TO_SEQ_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)(e49)(e50)(e51)(e52)(e53)(e54)(e55)(e56)
+# define MSGPACK_PP_TUPLE_TO_SEQ_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)(e49)(e50)(e51)(e52)(e53)(e54)(e55)(e56)(e57)
+# define MSGPACK_PP_TUPLE_TO_SEQ_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)(e49)(e50)(e51)(e52)(e53)(e54)(e55)(e56)(e57)(e58)
+# define MSGPACK_PP_TUPLE_TO_SEQ_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)(e49)(e50)(e51)(e52)(e53)(e54)(e55)(e56)(e57)(e58)(e59)
+# define MSGPACK_PP_TUPLE_TO_SEQ_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)(e49)(e50)(e51)(e52)(e53)(e54)(e55)(e56)(e57)(e58)(e59)(e60)
+# define MSGPACK_PP_TUPLE_TO_SEQ_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)(e49)(e50)(e51)(e52)(e53)(e54)(e55)(e56)(e57)(e58)(e59)(e60)(e61)
+# define MSGPACK_PP_TUPLE_TO_SEQ_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)(e49)(e50)(e51)(e52)(e53)(e54)(e55)(e56)(e57)(e58)(e59)(e60)(e61)(e62)
+# define MSGPACK_PP_TUPLE_TO_SEQ_64(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)(e49)(e50)(e51)(e52)(e53)(e54)(e55)(e56)(e57)(e58)(e59)(e60)(e61)(e62)(e63)
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/variadic.hpp b/third_party/msgpack/include/msgpack/preprocessor/variadic.hpp
new file mode 100644
index 0000000000..d6020c932c
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/variadic.hpp
@@ -0,0 +1,23 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011. *
+# * (C) Copyright Paul Mensonides 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_VARIADIC_HPP
+# define MSGPACK_PREPROCESSOR_VARIADIC_HPP
+#
+# include <msgpack/preprocessor/variadic/elem.hpp>
+# include <msgpack/preprocessor/variadic/size.hpp>
+# include <msgpack/preprocessor/variadic/to_array.hpp>
+# include <msgpack/preprocessor/variadic/to_list.hpp>
+# include <msgpack/preprocessor/variadic/to_seq.hpp>
+# include <msgpack/preprocessor/variadic/to_tuple.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/variadic/detail/is_single_return.hpp b/third_party/msgpack/include/msgpack/preprocessor/variadic/detail/is_single_return.hpp
new file mode 100644
index 0000000000..dad00253d7
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/variadic/detail/is_single_return.hpp
@@ -0,0 +1,28 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2014. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_VARIADIC_DETAIL_IS_SINGLE_RETURN_HPP
+# define MSGPACK_PREPROCESSOR_VARIADIC_DETAIL_IS_SINGLE_RETURN_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# /* MSGPACK_PP_VARIADIC_IS_SINGLE_RETURN */
+#
+# if MSGPACK_PP_VARIADICS && MSGPACK_PP_VARIADICS_MSVC
+# include <msgpack/preprocessor/control/iif.hpp>
+# include <msgpack/preprocessor/facilities/is_1.hpp>
+# include <msgpack/preprocessor/variadic/size.hpp>
+# define MSGPACK_PP_VARIADIC_IS_SINGLE_RETURN(sr,nsr,...) \
+ MSGPACK_PP_IIF(MSGPACK_PP_IS_1(MSGPACK_PP_VARIADIC_SIZE(__VA_ARGS__)),sr,nsr) \
+ /**/
+# endif /* MSGPACK_PP_VARIADICS && MSGPACK_PP_VARIADICS_MSVC */
+#
+# endif /* MSGPACK_PREPROCESSOR_VARIADIC_DETAIL_IS_SINGLE_RETURN_HPP */
diff --git a/third_party/msgpack/include/msgpack/preprocessor/variadic/elem.hpp b/third_party/msgpack/include/msgpack/preprocessor/variadic/elem.hpp
new file mode 100644
index 0000000000..dca88e2c78
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/variadic/elem.hpp
@@ -0,0 +1,94 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011. *
+# * (C) Copyright Paul Mensonides 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_VARIADIC_ELEM_HPP
+# define MSGPACK_PREPROCESSOR_VARIADIC_ELEM_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# /* MSGPACK_PP_VARIADIC_ELEM */
+#
+# if MSGPACK_PP_VARIADICS
+# if MSGPACK_PP_VARIADICS_MSVC
+# define MSGPACK_PP_VARIADIC_ELEM(n, ...) MSGPACK_PP_VARIADIC_ELEM_I(n,__VA_ARGS__)
+# define MSGPACK_PP_VARIADIC_ELEM_I(n, ...) MSGPACK_PP_CAT(MSGPACK_PP_CAT(MSGPACK_PP_VARIADIC_ELEM_, n)(__VA_ARGS__,),)
+# else
+# define MSGPACK_PP_VARIADIC_ELEM(n, ...) MSGPACK_PP_CAT(MSGPACK_PP_VARIADIC_ELEM_, n)(__VA_ARGS__,)
+# endif
+# define MSGPACK_PP_VARIADIC_ELEM_0(e0, ...) e0
+# define MSGPACK_PP_VARIADIC_ELEM_1(e0, e1, ...) e1
+# define MSGPACK_PP_VARIADIC_ELEM_2(e0, e1, e2, ...) e2
+# define MSGPACK_PP_VARIADIC_ELEM_3(e0, e1, e2, e3, ...) e3
+# define MSGPACK_PP_VARIADIC_ELEM_4(e0, e1, e2, e3, e4, ...) e4
+# define MSGPACK_PP_VARIADIC_ELEM_5(e0, e1, e2, e3, e4, e5, ...) e5
+# define MSGPACK_PP_VARIADIC_ELEM_6(e0, e1, e2, e3, e4, e5, e6, ...) e6
+# define MSGPACK_PP_VARIADIC_ELEM_7(e0, e1, e2, e3, e4, e5, e6, e7, ...) e7
+# define MSGPACK_PP_VARIADIC_ELEM_8(e0, e1, e2, e3, e4, e5, e6, e7, e8, ...) e8
+# define MSGPACK_PP_VARIADIC_ELEM_9(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, ...) e9
+# define MSGPACK_PP_VARIADIC_ELEM_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, ...) e10
+# define MSGPACK_PP_VARIADIC_ELEM_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, ...) e11
+# define MSGPACK_PP_VARIADIC_ELEM_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, ...) e12
+# define MSGPACK_PP_VARIADIC_ELEM_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, ...) e13
+# define MSGPACK_PP_VARIADIC_ELEM_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, ...) e14
+# define MSGPACK_PP_VARIADIC_ELEM_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, ...) e15
+# define MSGPACK_PP_VARIADIC_ELEM_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, ...) e16
+# define MSGPACK_PP_VARIADIC_ELEM_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, ...) e17
+# define MSGPACK_PP_VARIADIC_ELEM_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, ...) e18
+# define MSGPACK_PP_VARIADIC_ELEM_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, ...) e19
+# define MSGPACK_PP_VARIADIC_ELEM_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, ...) e20
+# define MSGPACK_PP_VARIADIC_ELEM_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, ...) e21
+# define MSGPACK_PP_VARIADIC_ELEM_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, ...) e22
+# define MSGPACK_PP_VARIADIC_ELEM_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, ...) e23
+# define MSGPACK_PP_VARIADIC_ELEM_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, ...) e24
+# define MSGPACK_PP_VARIADIC_ELEM_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, ...) e25
+# define MSGPACK_PP_VARIADIC_ELEM_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, ...) e26
+# define MSGPACK_PP_VARIADIC_ELEM_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, ...) e27
+# define MSGPACK_PP_VARIADIC_ELEM_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, ...) e28
+# define MSGPACK_PP_VARIADIC_ELEM_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, ...) e29
+# define MSGPACK_PP_VARIADIC_ELEM_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, ...) e30
+# define MSGPACK_PP_VARIADIC_ELEM_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, ...) e31
+# define MSGPACK_PP_VARIADIC_ELEM_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, ...) e32
+# define MSGPACK_PP_VARIADIC_ELEM_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, ...) e33
+# define MSGPACK_PP_VARIADIC_ELEM_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, ...) e34
+# define MSGPACK_PP_VARIADIC_ELEM_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, ...) e35
+# define MSGPACK_PP_VARIADIC_ELEM_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, ...) e36
+# define MSGPACK_PP_VARIADIC_ELEM_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, ...) e37
+# define MSGPACK_PP_VARIADIC_ELEM_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, ...) e38
+# define MSGPACK_PP_VARIADIC_ELEM_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, ...) e39
+# define MSGPACK_PP_VARIADIC_ELEM_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, ...) e40
+# define MSGPACK_PP_VARIADIC_ELEM_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, ...) e41
+# define MSGPACK_PP_VARIADIC_ELEM_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, ...) e42
+# define MSGPACK_PP_VARIADIC_ELEM_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, ...) e43
+# define MSGPACK_PP_VARIADIC_ELEM_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, ...) e44
+# define MSGPACK_PP_VARIADIC_ELEM_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, ...) e45
+# define MSGPACK_PP_VARIADIC_ELEM_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, ...) e46
+# define MSGPACK_PP_VARIADIC_ELEM_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, ...) e47
+# define MSGPACK_PP_VARIADIC_ELEM_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, ...) e48
+# define MSGPACK_PP_VARIADIC_ELEM_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, ...) e49
+# define MSGPACK_PP_VARIADIC_ELEM_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, ...) e50
+# define MSGPACK_PP_VARIADIC_ELEM_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, ...) e51
+# define MSGPACK_PP_VARIADIC_ELEM_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, ...) e52
+# define MSGPACK_PP_VARIADIC_ELEM_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, ...) e53
+# define MSGPACK_PP_VARIADIC_ELEM_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, ...) e54
+# define MSGPACK_PP_VARIADIC_ELEM_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, ...) e55
+# define MSGPACK_PP_VARIADIC_ELEM_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, ...) e56
+# define MSGPACK_PP_VARIADIC_ELEM_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, ...) e57
+# define MSGPACK_PP_VARIADIC_ELEM_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, ...) e58
+# define MSGPACK_PP_VARIADIC_ELEM_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, ...) e59
+# define MSGPACK_PP_VARIADIC_ELEM_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, ...) e60
+# define MSGPACK_PP_VARIADIC_ELEM_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, ...) e61
+# define MSGPACK_PP_VARIADIC_ELEM_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, ...) e62
+# define MSGPACK_PP_VARIADIC_ELEM_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, ...) e63
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/variadic/size.hpp b/third_party/msgpack/include/msgpack/preprocessor/variadic/size.hpp
new file mode 100644
index 0000000000..9d81000b19
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/variadic/size.hpp
@@ -0,0 +1,30 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011. *
+# * (C) Copyright Paul Mensonides 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_VARIADIC_SIZE_HPP
+# define MSGPACK_PREPROCESSOR_VARIADIC_SIZE_HPP
+#
+# include <msgpack/preprocessor/cat.hpp>
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# /* MSGPACK_PP_VARIADIC_SIZE */
+#
+# if MSGPACK_PP_VARIADICS
+# if MSGPACK_PP_VARIADICS_MSVC
+# define MSGPACK_PP_VARIADIC_SIZE(...) MSGPACK_PP_CAT(MSGPACK_PP_VARIADIC_SIZE_I(__VA_ARGS__, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,),)
+# else
+# define MSGPACK_PP_VARIADIC_SIZE(...) MSGPACK_PP_VARIADIC_SIZE_I(__VA_ARGS__, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,)
+# endif
+# define MSGPACK_PP_VARIADIC_SIZE_I(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, size, ...) size
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/variadic/to_array.hpp b/third_party/msgpack/include/msgpack/preprocessor/variadic/to_array.hpp
new file mode 100644
index 0000000000..57439a8370
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/variadic/to_array.hpp
@@ -0,0 +1,32 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011. *
+# * (C) Copyright Paul Mensonides 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_VARIADIC_TO_ARRAY_HPP
+# define MSGPACK_PREPROCESSOR_VARIADIC_TO_ARRAY_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/tuple/to_array.hpp>
+# if MSGPACK_PP_VARIADICS_MSVC
+# include <msgpack/preprocessor/variadic/size.hpp>
+# endif
+#
+# /* MSGPACK_PP_VARIADIC_TO_ARRAY */
+#
+# if MSGPACK_PP_VARIADICS
+# if MSGPACK_PP_VARIADICS_MSVC
+# define MSGPACK_PP_VARIADIC_TO_ARRAY(...) MSGPACK_PP_TUPLE_TO_ARRAY_2(MSGPACK_PP_VARIADIC_SIZE(__VA_ARGS__),(__VA_ARGS__))
+# else
+# define MSGPACK_PP_VARIADIC_TO_ARRAY(...) MSGPACK_PP_TUPLE_TO_ARRAY((__VA_ARGS__))
+# endif
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/variadic/to_list.hpp b/third_party/msgpack/include/msgpack/preprocessor/variadic/to_list.hpp
new file mode 100644
index 0000000000..61ee88eca0
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/variadic/to_list.hpp
@@ -0,0 +1,25 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011. *
+# * (C) Copyright Paul Mensonides 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_VARIADIC_TO_LIST_HPP
+# define MSGPACK_PREPROCESSOR_VARIADIC_TO_LIST_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/tuple/to_list.hpp>
+#
+# /* MSGPACK_PP_VARIADIC_TO_LIST */
+#
+# if MSGPACK_PP_VARIADICS
+# define MSGPACK_PP_VARIADIC_TO_LIST(...) MSGPACK_PP_TUPLE_TO_LIST((__VA_ARGS__))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/variadic/to_seq.hpp b/third_party/msgpack/include/msgpack/preprocessor/variadic/to_seq.hpp
new file mode 100644
index 0000000000..089c2ae914
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/variadic/to_seq.hpp
@@ -0,0 +1,25 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011. *
+# * (C) Copyright Paul Mensonides 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_VARIADIC_TO_SEQ_HPP
+# define MSGPACK_PREPROCESSOR_VARIADIC_TO_SEQ_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+# include <msgpack/preprocessor/tuple/to_seq.hpp>
+#
+# /* MSGPACK_PP_VARIADIC_TO_SEQ */
+#
+# if MSGPACK_PP_VARIADICS
+# define MSGPACK_PP_VARIADIC_TO_SEQ(...) MSGPACK_PP_TUPLE_TO_SEQ((__VA_ARGS__))
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/variadic/to_tuple.hpp b/third_party/msgpack/include/msgpack/preprocessor/variadic/to_tuple.hpp
new file mode 100644
index 0000000000..ca8d41f0b9
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/variadic/to_tuple.hpp
@@ -0,0 +1,24 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011. *
+# * (C) Copyright Paul Mensonides 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_VARIADIC_TO_TUPLE_HPP
+# define MSGPACK_PREPROCESSOR_VARIADIC_TO_TUPLE_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# /* MSGPACK_PP_VARIADIC_TO_TUPLE */
+#
+# if MSGPACK_PP_VARIADICS
+# define MSGPACK_PP_VARIADIC_TO_TUPLE(...) (__VA_ARGS__)
+# endif
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/while.hpp b/third_party/msgpack/include/msgpack/preprocessor/while.hpp
new file mode 100644
index 0000000000..86b85f8f89
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/while.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_WHILE_HPP
+# define MSGPACK_PREPROCESSOR_WHILE_HPP
+#
+# include <msgpack/preprocessor/control/while.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/preprocessor/wstringize.hpp b/third_party/msgpack/include/msgpack/preprocessor/wstringize.hpp
new file mode 100644
index 0000000000..35cf53242d
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/preprocessor/wstringize.hpp
@@ -0,0 +1,29 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef MSGPACK_PREPROCESSOR_WSTRINGIZE_HPP
+# define MSGPACK_PREPROCESSOR_WSTRINGIZE_HPP
+#
+# include <msgpack/preprocessor/config/config.hpp>
+#
+# /* MSGPACK_PP_WSTRINGIZE */
+#
+# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_MWCC()
+# define MSGPACK_PP_WSTRINGIZE(text) MSGPACK_PP_WSTRINGIZE_I(text)
+# else
+# define MSGPACK_PP_WSTRINGIZE(text) MSGPACK_PP_WSTRINGIZE_OO((text))
+# define MSGPACK_PP_WSTRINGIZE_OO(par) MSGPACK_PP_WSTRINGIZE_I ## par
+# endif
+#
+# define MSGPACK_PP_WSTRINGIZE_I(text) MSGPACK_PP_WSTRINGIZE_II(#text)
+# define MSGPACK_PP_WSTRINGIZE_II(str) L ## str
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/sbuffer.h b/third_party/msgpack/include/msgpack/sbuffer.h
new file mode 100644
index 0000000000..c494bae77a
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/sbuffer.h
@@ -0,0 +1,110 @@
+/*
+ * MessagePack for C simple buffer implementation
+ *
+ * Copyright (C) 2008-2009 FURUHASHI Sadayuki
+ *
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ */
+#ifndef MSGPACK_SBUFFER_H
+#define MSGPACK_SBUFFER_H
+
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/**
+ * @defgroup msgpack_sbuffer Simple buffer
+ * @ingroup msgpack_buffer
+ * @{
+ */
+
+typedef struct msgpack_sbuffer {
+ size_t size;
+ char* data;
+ size_t alloc;
+} msgpack_sbuffer;
+
+static inline void msgpack_sbuffer_init(msgpack_sbuffer* sbuf)
+{
+ memset(sbuf, 0, sizeof(msgpack_sbuffer));
+}
+
+static inline void msgpack_sbuffer_destroy(msgpack_sbuffer* sbuf)
+{
+ free(sbuf->data);
+}
+
+static inline msgpack_sbuffer* msgpack_sbuffer_new(void)
+{
+ return (msgpack_sbuffer*)calloc(1, sizeof(msgpack_sbuffer));
+}
+
+static inline void msgpack_sbuffer_free(msgpack_sbuffer* sbuf)
+{
+ if(sbuf == NULL) { return; }
+ msgpack_sbuffer_destroy(sbuf);
+ free(sbuf);
+}
+
+#ifndef MSGPACK_SBUFFER_INIT_SIZE
+#define MSGPACK_SBUFFER_INIT_SIZE 8192
+#endif
+
+static inline int msgpack_sbuffer_write(void* data, const char* buf, size_t len)
+{
+ msgpack_sbuffer* sbuf = (msgpack_sbuffer*)data;
+
+ if(sbuf->alloc - sbuf->size < len) {
+ void* tmp;
+ size_t nsize = (sbuf->alloc) ?
+ sbuf->alloc * 2 : MSGPACK_SBUFFER_INIT_SIZE;
+
+ while(nsize < sbuf->size + len) {
+ size_t tmp_nsize = nsize * 2;
+ if (tmp_nsize <= nsize) {
+ nsize = sbuf->size + len;
+ break;
+ }
+ nsize = tmp_nsize;
+ }
+
+ tmp = realloc(sbuf->data, nsize);
+ if(!tmp) { return -1; }
+
+ sbuf->data = (char*)tmp;
+ sbuf->alloc = nsize;
+ }
+
+ memcpy(sbuf->data + sbuf->size, buf, len);
+ sbuf->size += len;
+ return 0;
+}
+
+static inline char* msgpack_sbuffer_release(msgpack_sbuffer* sbuf)
+{
+ char* tmp = sbuf->data;
+ sbuf->size = 0;
+ sbuf->data = NULL;
+ sbuf->alloc = 0;
+ return tmp;
+}
+
+static inline void msgpack_sbuffer_clear(msgpack_sbuffer* sbuf)
+{
+ sbuf->size = 0;
+}
+
+/** @} */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* msgpack/sbuffer.h */
diff --git a/third_party/msgpack/include/msgpack/sbuffer.hpp b/third_party/msgpack/include/msgpack/sbuffer.hpp
new file mode 100644
index 0000000000..99f67eab3f
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/sbuffer.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ simple buffer implementation
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_SBUFFER_HPP
+#define MSGPACK_SBUFFER_HPP
+
+#include "msgpack/sbuffer_decl.hpp"
+
+#include "msgpack/v1/sbuffer.hpp"
+
+#endif // MSGPACK_SBUFFER_HPP
diff --git a/third_party/msgpack/include/msgpack/sbuffer_decl.hpp b/third_party/msgpack/include/msgpack/sbuffer_decl.hpp
new file mode 100644
index 0000000000..58efec460b
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/sbuffer_decl.hpp
@@ -0,0 +1,18 @@
+//
+// MessagePack for C++ simple buffer implementation
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_SBUFFER_DECL_HPP
+#define MSGPACK_SBUFFER_DECL_HPP
+
+#include "msgpack/v1/sbuffer_decl.hpp"
+#include "msgpack/v2/sbuffer_decl.hpp"
+#include "msgpack/v3/sbuffer_decl.hpp"
+
+
+#endif // MSGPACK_SBUFFER_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/sysdep.h b/third_party/msgpack/include/msgpack/sysdep.h
new file mode 100644
index 0000000000..569ae4cdf7
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/sysdep.h
@@ -0,0 +1,201 @@
+/*
+ * MessagePack system dependencies
+ *
+ * Copyright (C) 2008-2010 FURUHASHI Sadayuki
+ *
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ */
+#ifndef MSGPACK_SYSDEP_H
+#define MSGPACK_SYSDEP_H
+
+#include <msgpack/predef.h>
+
+#include <stdlib.h>
+#include <stddef.h>
+
+#if defined(_MSC_VER) && _MSC_VER <= 1800
+# define snprintf(buf, len, format,...) _snprintf_s(buf, len, len, format, __VA_ARGS__)
+#endif
+
+#if defined(_MSC_VER) && _MSC_VER < 1600
+ typedef signed __int8 int8_t;
+ typedef unsigned __int8 uint8_t;
+ typedef signed __int16 int16_t;
+ typedef unsigned __int16 uint16_t;
+ typedef signed __int32 int32_t;
+ typedef unsigned __int32 uint32_t;
+ typedef signed __int64 int64_t;
+ typedef unsigned __int64 uint64_t;
+#elif defined(_MSC_VER) // && _MSC_VER >= 1600
+# include <stdint.h>
+#else
+# include <stdint.h>
+# include <stdbool.h>
+#endif
+
+#if !defined(MSGPACK_DLLEXPORT)
+#if defined(_MSC_VER)
+# define MSGPACK_DLLEXPORT __declspec(dllexport)
+#else /* _MSC_VER */
+# define MSGPACK_DLLEXPORT
+#endif /* _MSC_VER */
+#endif
+
+#ifdef _WIN32
+# define _msgpack_atomic_counter_header <windows.h>
+# if !defined(WIN32_LEAN_AND_MEAN)
+# define WIN32_LEAN_AND_MEAN
+# endif /* WIN32_LEAN_AND_MEAN */
+ typedef long _msgpack_atomic_counter_t;
+# define _msgpack_sync_decr_and_fetch(ptr) InterlockedDecrement(ptr)
+# define _msgpack_sync_incr_and_fetch(ptr) InterlockedIncrement(ptr)
+#elif defined(__GNUC__) && ((__GNUC__*10 + __GNUC_MINOR__) < 41)
+
+# if defined(__cplusplus)
+# define _msgpack_atomic_counter_header "msgpack/gcc_atomic.hpp"
+# else
+# define _msgpack_atomic_counter_header "msgpack/gcc_atomic.h"
+# endif
+
+#else
+ typedef unsigned int _msgpack_atomic_counter_t;
+# define _msgpack_sync_decr_and_fetch(ptr) __sync_sub_and_fetch(ptr, 1)
+# define _msgpack_sync_incr_and_fetch(ptr) __sync_add_and_fetch(ptr, 1)
+#endif
+
+#ifdef _WIN32
+
+# ifdef __cplusplus
+ /* numeric_limits<T>::min,max */
+# ifdef max
+# undef max
+# endif
+# ifdef min
+# undef min
+# endif
+# endif
+
+#elif defined(unix) || defined(__unix) || defined(__APPLE__) || defined(__OpenBSD__)
+
+#include <arpa/inet.h> /* __BYTE_ORDER */
+# if defined(linux)
+# include <byteswap.h>
+# endif
+
+#endif
+
+#if MSGPACK_ENDIAN_LITTLE_BYTE
+
+# if defined(unix) || defined(__unix) || defined(__APPLE__) || defined(__OpenBSD__)
+# define _msgpack_be16(x) ntohs(x)
+# else
+# if defined(ntohs)
+# define _msgpack_be16(x) ntohs(x)
+# elif defined(_byteswap_ushort) || (defined(_MSC_VER) && _MSC_VER >= 1400)
+# define _msgpack_be16(x) ((uint16_t)_byteswap_ushort((unsigned short)x))
+# else
+# define _msgpack_be16(x) ( \
+ ((((uint16_t)x) << 8) ) | \
+ ((((uint16_t)x) >> 8) ) )
+# endif
+# endif
+
+# if defined(unix) || defined(__unix) || defined(__APPLE__) || defined(__OpenBSD__)
+# define _msgpack_be32(x) ntohl(x)
+# else
+# if defined(ntohl)
+# define _msgpack_be32(x) ntohl(x)
+# elif defined(_byteswap_ulong) || (defined(_MSC_VER) && _MSC_VER >= 1400)
+# define _msgpack_be32(x) ((uint32_t)_byteswap_ulong((unsigned long)x))
+# else
+# define _msgpack_be32(x) \
+ ( ((((uint32_t)x) << 24) ) | \
+ ((((uint32_t)x) << 8) & 0x00ff0000U ) | \
+ ((((uint32_t)x) >> 8) & 0x0000ff00U ) | \
+ ((((uint32_t)x) >> 24) ) )
+# endif
+# endif
+
+# if defined(_byteswap_uint64) || (defined(_MSC_VER) && _MSC_VER >= 1400)
+# define _msgpack_be64(x) (_byteswap_uint64(x))
+# elif defined(bswap_64)
+# define _msgpack_be64(x) bswap_64(x)
+# elif defined(__DARWIN_OSSwapInt64)
+# define _msgpack_be64(x) __DARWIN_OSSwapInt64(x)
+# else
+# define _msgpack_be64(x) \
+ ( ((((uint64_t)x) << 56) ) | \
+ ((((uint64_t)x) << 40) & 0x00ff000000000000ULL ) | \
+ ((((uint64_t)x) << 24) & 0x0000ff0000000000ULL ) | \
+ ((((uint64_t)x) << 8) & 0x000000ff00000000ULL ) | \
+ ((((uint64_t)x) >> 8) & 0x00000000ff000000ULL ) | \
+ ((((uint64_t)x) >> 24) & 0x0000000000ff0000ULL ) | \
+ ((((uint64_t)x) >> 40) & 0x000000000000ff00ULL ) | \
+ ((((uint64_t)x) >> 56) ) )
+# endif
+
+#elif MSGPACK_ENDIAN_BIG_BYTE
+
+# define _msgpack_be16(x) (x)
+# define _msgpack_be32(x) (x)
+# define _msgpack_be64(x) (x)
+
+#else
+# error msgpack-c supports only big endian and little endian
+#endif /* MSGPACK_ENDIAN_LITTLE_BYTE */
+
+#define _msgpack_load16(cast, from, to) do { \
+ memcpy((cast*)(to), (from), sizeof(cast)); \
+ *(to) = _msgpack_be16(*(to)); \
+ } while (0);
+
+#define _msgpack_load32(cast, from, to) do { \
+ memcpy((cast*)(to), (from), sizeof(cast)); \
+ *(to) = _msgpack_be32(*(to)); \
+ } while (0);
+#define _msgpack_load64(cast, from, to) do { \
+ memcpy((cast*)(to), (from), sizeof(cast)); \
+ *(to) = _msgpack_be64(*(to)); \
+ } while (0);
+
+#define _msgpack_store16(to, num) \
+ do { uint16_t val = _msgpack_be16(num); memcpy(to, &val, 2); } while(0)
+#define _msgpack_store32(to, num) \
+ do { uint32_t val = _msgpack_be32(num); memcpy(to, &val, 4); } while(0)
+#define _msgpack_store64(to, num) \
+ do { uint64_t val = _msgpack_be64(num); memcpy(to, &val, 8); } while(0)
+
+/*
+#define _msgpack_load16(cast, from) \
+ ({ cast val; memcpy(&val, (char*)from, 2); _msgpack_be16(val); })
+#define _msgpack_load32(cast, from) \
+ ({ cast val; memcpy(&val, (char*)from, 4); _msgpack_be32(val); })
+#define _msgpack_load64(cast, from) \
+ ({ cast val; memcpy(&val, (char*)from, 8); _msgpack_be64(val); })
+*/
+
+
+#if !defined(__cplusplus) && defined(_MSC_VER)
+# if !defined(FALSE)
+# define FALSE (0)
+# endif
+# if !defined(TRUE)
+# define TRUE (!FALSE)
+# endif
+# if _MSC_VER >= 1800
+# include <stdbool.h>
+# else
+# define bool int
+# define true TRUE
+# define false FALSE
+# endif
+# define inline __inline
+#endif
+
+#ifdef __APPLE__
+# include <TargetConditionals.h>
+#endif
+
+#endif /* msgpack/sysdep.h */
diff --git a/third_party/msgpack/include/msgpack/timestamp.h b/third_party/msgpack/include/msgpack/timestamp.h
new file mode 100644
index 0000000000..4d7df83d09
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/timestamp.h
@@ -0,0 +1,54 @@
+/*
+ * MessagePack for C TimeStamp
+ *
+ * Copyright (C) 2018 KONDO Takatoshi
+ *
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ */
+#ifndef MSGPACK_TIMESTAMP_H
+#define MSGPACK_TIMESTAMP_H
+
+#include <msgpack/object.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+typedef struct msgpack_timestamp {
+ int64_t tv_sec;
+ uint32_t tv_nsec;
+} msgpack_timestamp;
+
+static inline bool msgpack_object_to_timestamp(const msgpack_object* obj, msgpack_timestamp* ts) {
+ if (obj->type != MSGPACK_OBJECT_EXT) return false;
+ if (obj->via.ext.type != -1) return false;
+ switch (obj->via.ext.size) {
+ case 4:
+ ts->tv_nsec = 0;
+ _msgpack_load32(uint32_t, obj->via.ext.ptr, &ts->tv_sec);
+ return true;
+ case 8: {
+ uint64_t value;
+ _msgpack_load64(uint64_t, obj->via.ext.ptr, &value);
+ ts->tv_nsec = (uint32_t)(value >> 34);
+ ts->tv_sec = value & 0x00000003ffffffffL;
+ return true;
+ }
+ case 12:
+ _msgpack_load32(uint32_t, obj->via.ext.ptr, &ts->tv_nsec);
+ _msgpack_load64(int64_t, obj->via.ext.ptr + 4, &ts->tv_sec);
+ return true;
+ default:
+ return false;
+ }
+}
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* msgpack/timestamp.h */
diff --git a/third_party/msgpack/include/msgpack/type.hpp b/third_party/msgpack/include/msgpack/type.hpp
new file mode 100644
index 0000000000..1a866c5684
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/type.hpp
@@ -0,0 +1,68 @@
+#include "cpp_config.hpp"
+#include "adaptor/array_ref.hpp"
+#include "adaptor/bool.hpp"
+#include "adaptor/carray.hpp"
+#include "adaptor/char_ptr.hpp"
+#include "adaptor/deque.hpp"
+#include "adaptor/ext.hpp"
+#include "adaptor/fixint.hpp"
+#include "adaptor/float.hpp"
+#include "adaptor/int.hpp"
+#include "adaptor/list.hpp"
+#include "adaptor/map.hpp"
+#include "adaptor/nil.hpp"
+#include "adaptor/pair.hpp"
+#include "adaptor/raw.hpp"
+#include "adaptor/v4raw.hpp"
+#include "adaptor/set.hpp"
+#include "adaptor/size_equal_only.hpp"
+#include "adaptor/string.hpp"
+#include "adaptor/vector.hpp"
+#include "adaptor/vector_bool.hpp"
+#include "adaptor/vector_char.hpp"
+#include "adaptor/vector_unsigned_char.hpp"
+#include "adaptor/msgpack_tuple.hpp"
+#include "adaptor/define.hpp"
+
+#if defined(MSGPACK_USE_CPP03)
+
+#include "adaptor/tr1/unordered_map.hpp"
+#include "adaptor/tr1/unordered_set.hpp"
+
+#else // defined(MSGPACK_USE_CPP03)
+
+#include "adaptor/cpp11/array.hpp"
+#include "adaptor/cpp11/array_char.hpp"
+#include "adaptor/cpp11/array_unsigned_char.hpp"
+#include "adaptor/cpp11/chrono.hpp"
+#include "adaptor/cpp11/forward_list.hpp"
+#include "adaptor/cpp11/reference_wrapper.hpp"
+#include "adaptor/cpp11/shared_ptr.hpp"
+#include "adaptor/cpp11/tuple.hpp"
+#include "adaptor/cpp11/unique_ptr.hpp"
+#include "adaptor/cpp11/unordered_map.hpp"
+#include "adaptor/cpp11/unordered_set.hpp"
+
+#if MSGPACK_HAS_INCLUDE(<optional>)
+#include "adaptor/cpp17/optional.hpp"
+#endif // MSGPACK_HAS_INCLUDE(<optional>)
+
+#if MSGPACK_HAS_INCLUDE(<string_view>)
+#include "adaptor/cpp17/string_view.hpp"
+#endif // MSGPACK_HAS_INCLUDE(<string_view>)
+
+#include "adaptor/cpp17/byte.hpp"
+#include "adaptor/cpp17/carray_byte.hpp"
+#include "adaptor/cpp17/vector_byte.hpp"
+
+#endif // defined(MSGPACK_USE_CPP03)
+
+#if defined(MSGPACK_USE_BOOST)
+
+#include "adaptor/boost/fusion.hpp"
+#include "adaptor/boost/msgpack_variant.hpp"
+#include "adaptor/boost/optional.hpp"
+#include "adaptor/boost/string_ref.hpp"
+#include "adaptor/boost/string_view.hpp"
+
+#endif // defined(MSGPACK_USE_BOOST)
diff --git a/third_party/msgpack/include/msgpack/unpack.h b/third_party/msgpack/include/msgpack/unpack.h
new file mode 100644
index 0000000000..036d575eba
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/unpack.h
@@ -0,0 +1,281 @@
+/*
+ * MessagePack for C unpacking routine
+ *
+ * Copyright (C) 2008-2009 FURUHASHI Sadayuki
+ *
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ */
+#ifndef MSGPACK_UNPACKER_H
+#define MSGPACK_UNPACKER_H
+
+#include "zone.h"
+#include "object.h"
+#include <string.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/**
+ * @defgroup msgpack_unpack Deserializer
+ * @ingroup msgpack
+ * @{
+ */
+
+typedef struct msgpack_unpacked {
+ msgpack_zone* zone;
+ msgpack_object data;
+} msgpack_unpacked;
+
+typedef enum {
+ MSGPACK_UNPACK_SUCCESS = 2,
+ MSGPACK_UNPACK_EXTRA_BYTES = 1,
+ MSGPACK_UNPACK_CONTINUE = 0,
+ MSGPACK_UNPACK_PARSE_ERROR = -1,
+ MSGPACK_UNPACK_NOMEM_ERROR = -2
+} msgpack_unpack_return;
+
+
+MSGPACK_DLLEXPORT
+msgpack_unpack_return
+msgpack_unpack_next(msgpack_unpacked* result,
+ const char* data, size_t len, size_t* off);
+
+/** @} */
+
+
+/**
+ * @defgroup msgpack_unpacker Streaming deserializer
+ * @ingroup msgpack
+ * @{
+ */
+
+typedef struct msgpack_unpacker {
+ char* buffer;
+ size_t used;
+ size_t free;
+ size_t off;
+ size_t parsed;
+ msgpack_zone* z;
+ size_t initial_buffer_size;
+ void* ctx;
+} msgpack_unpacker;
+
+
+#ifndef MSGPACK_UNPACKER_INIT_BUFFER_SIZE
+#define MSGPACK_UNPACKER_INIT_BUFFER_SIZE (64*1024)
+#endif
+
+/**
+ * Initializes a streaming deserializer.
+ * The initialized deserializer must be destroyed by msgpack_unpacker_destroy(msgpack_unpacker*).
+ */
+MSGPACK_DLLEXPORT
+bool msgpack_unpacker_init(msgpack_unpacker* mpac, size_t initial_buffer_size);
+
+/**
+ * Destroys a streaming deserializer initialized by msgpack_unpacker_init(msgpack_unpacker*, size_t).
+ */
+MSGPACK_DLLEXPORT
+void msgpack_unpacker_destroy(msgpack_unpacker* mpac);
+
+
+/**
+ * Creates a streaming deserializer.
+ * The created deserializer must be destroyed by msgpack_unpacker_free(msgpack_unpacker*).
+ */
+MSGPACK_DLLEXPORT
+msgpack_unpacker* msgpack_unpacker_new(size_t initial_buffer_size);
+
+/**
+ * Frees a streaming deserializer created by msgpack_unpacker_new(size_t).
+ */
+MSGPACK_DLLEXPORT
+void msgpack_unpacker_free(msgpack_unpacker* mpac);
+
+
+#ifndef MSGPACK_UNPACKER_RESERVE_SIZE
+#define MSGPACK_UNPACKER_RESERVE_SIZE (32*1024)
+#endif
+
+/**
+ * Reserves free space of the internal buffer.
+ * Use this function to fill the internal buffer with
+ * msgpack_unpacker_buffer(msgpack_unpacker*),
+ * msgpack_unpacker_buffer_capacity(const msgpack_unpacker*) and
+ * msgpack_unpacker_buffer_consumed(msgpack_unpacker*).
+ */
+static inline bool msgpack_unpacker_reserve_buffer(msgpack_unpacker* mpac, size_t size);
+
+/**
+ * Gets pointer to the free space of the internal buffer.
+ * Use this function to fill the internal buffer with
+ * msgpack_unpacker_reserve_buffer(msgpack_unpacker*, size_t),
+ * msgpack_unpacker_buffer_capacity(const msgpack_unpacker*) and
+ * msgpack_unpacker_buffer_consumed(msgpack_unpacker*).
+ */
+static inline char* msgpack_unpacker_buffer(msgpack_unpacker* mpac);
+
+/**
+ * Gets size of the free space of the internal buffer.
+ * Use this function to fill the internal buffer with
+ * msgpack_unpacker_reserve_buffer(msgpack_unpacker*, size_t),
+ * msgpack_unpacker_buffer(const msgpack_unpacker*) and
+ * msgpack_unpacker_buffer_consumed(msgpack_unpacker*).
+ */
+static inline size_t msgpack_unpacker_buffer_capacity(const msgpack_unpacker* mpac);
+
+/**
+ * Notifies the deserializer that the internal buffer filled.
+ * Use this function to fill the internal buffer with
+ * msgpack_unpacker_reserve_buffer(msgpack_unpacker*, size_t),
+ * msgpack_unpacker_buffer(msgpack_unpacker*) and
+ * msgpack_unpacker_buffer_capacity(const msgpack_unpacker*).
+ */
+static inline void msgpack_unpacker_buffer_consumed(msgpack_unpacker* mpac, size_t size);
+
+
+/**
+ * Deserializes one object.
+ * Returns true if it successes. Otherwise false is returned.
+ * @param pac pointer to an initialized msgpack_unpacked object.
+ */
+MSGPACK_DLLEXPORT
+msgpack_unpack_return msgpack_unpacker_next(msgpack_unpacker* mpac, msgpack_unpacked* pac);
+
+/**
+ * Deserializes one object and set the number of parsed bytes involved.
+ * Returns true if it successes. Otherwise false is returned.
+ * @param mpac pointer to an initialized msgpack_unpacker object.
+ * @param result pointer to an initialized msgpack_unpacked object.
+ * @param p_bytes pointer to variable that will be set with the number of parsed bytes.
+ */
+MSGPACK_DLLEXPORT
+msgpack_unpack_return msgpack_unpacker_next_with_size(msgpack_unpacker* mpac,
+ msgpack_unpacked* result,
+ size_t *p_bytes);
+
+/**
+ * Initializes a msgpack_unpacked object.
+ * The initialized object must be destroyed by msgpack_unpacked_destroy(msgpack_unpacker*).
+ * Use the object with msgpack_unpacker_next(msgpack_unpacker*, msgpack_unpacked*) or
+ * msgpack_unpack_next(msgpack_unpacked*, const char*, size_t, size_t*).
+ */
+static inline void msgpack_unpacked_init(msgpack_unpacked* result);
+
+/**
+ * Destroys a streaming deserializer initialized by msgpack_unpacked().
+ */
+static inline void msgpack_unpacked_destroy(msgpack_unpacked* result);
+
+/**
+ * Releases the memory zone from msgpack_unpacked object.
+ * The released zone must be freed by msgpack_zone_free(msgpack_zone*).
+ */
+static inline msgpack_zone* msgpack_unpacked_release_zone(msgpack_unpacked* result);
+
+
+MSGPACK_DLLEXPORT
+int msgpack_unpacker_execute(msgpack_unpacker* mpac);
+
+MSGPACK_DLLEXPORT
+msgpack_object msgpack_unpacker_data(msgpack_unpacker* mpac);
+
+MSGPACK_DLLEXPORT
+msgpack_zone* msgpack_unpacker_release_zone(msgpack_unpacker* mpac);
+
+MSGPACK_DLLEXPORT
+void msgpack_unpacker_reset_zone(msgpack_unpacker* mpac);
+
+MSGPACK_DLLEXPORT
+void msgpack_unpacker_reset(msgpack_unpacker* mpac);
+
+static inline size_t msgpack_unpacker_message_size(const msgpack_unpacker* mpac);
+
+
+/** @} */
+
+
+// obsolete
+MSGPACK_DLLEXPORT
+msgpack_unpack_return
+msgpack_unpack(const char* data, size_t len, size_t* off,
+ msgpack_zone* result_zone, msgpack_object* result);
+
+
+
+
+static inline size_t msgpack_unpacker_parsed_size(const msgpack_unpacker* mpac);
+
+MSGPACK_DLLEXPORT
+bool msgpack_unpacker_flush_zone(msgpack_unpacker* mpac);
+
+MSGPACK_DLLEXPORT
+bool msgpack_unpacker_expand_buffer(msgpack_unpacker* mpac, size_t size);
+
+static inline bool msgpack_unpacker_reserve_buffer(msgpack_unpacker* mpac, size_t size)
+{
+ if(mpac->free >= size) { return true; }
+ return msgpack_unpacker_expand_buffer(mpac, size);
+}
+
+static inline char* msgpack_unpacker_buffer(msgpack_unpacker* mpac)
+{
+ return mpac->buffer + mpac->used;
+}
+
+static inline size_t msgpack_unpacker_buffer_capacity(const msgpack_unpacker* mpac)
+{
+ return mpac->free;
+}
+
+static inline void msgpack_unpacker_buffer_consumed(msgpack_unpacker* mpac, size_t size)
+{
+ mpac->used += size;
+ mpac->free -= size;
+}
+
+static inline size_t msgpack_unpacker_message_size(const msgpack_unpacker* mpac)
+{
+ return mpac->parsed - mpac->off + mpac->used;
+}
+
+static inline size_t msgpack_unpacker_parsed_size(const msgpack_unpacker* mpac)
+{
+ return mpac->parsed;
+}
+
+
+static inline void msgpack_unpacked_init(msgpack_unpacked* result)
+{
+ memset(result, 0, sizeof(msgpack_unpacked));
+}
+
+static inline void msgpack_unpacked_destroy(msgpack_unpacked* result)
+{
+ if(result->zone != NULL) {
+ msgpack_zone_free(result->zone);
+ result->zone = NULL;
+ memset(&result->data, 0, sizeof(msgpack_object));
+ }
+}
+
+static inline msgpack_zone* msgpack_unpacked_release_zone(msgpack_unpacked* result)
+{
+ if(result->zone != NULL) {
+ msgpack_zone* z = result->zone;
+ result->zone = NULL;
+ return z;
+ }
+ return NULL;
+}
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* msgpack/unpack.h */
diff --git a/third_party/msgpack/include/msgpack/unpack.hpp b/third_party/msgpack/include/msgpack/unpack.hpp
new file mode 100644
index 0000000000..d1e4292968
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/unpack.hpp
@@ -0,0 +1,19 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_UNPACK_HPP
+#define MSGPACK_UNPACK_HPP
+
+#include "msgpack/unpack_decl.hpp"
+
+#include "msgpack/v1/unpack.hpp"
+#include "msgpack/v2/unpack.hpp"
+#include "msgpack/v3/unpack.hpp"
+
+#endif // MSGPACK_UNPACK_HPP
diff --git a/third_party/msgpack/include/msgpack/unpack_decl.hpp b/third_party/msgpack/include/msgpack/unpack_decl.hpp
new file mode 100644
index 0000000000..69a751d030
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/unpack_decl.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_UNPACK_DECL_HPP
+#define MSGPACK_UNPACK_DECL_HPP
+
+#include "msgpack/v1/unpack_decl.hpp"
+#include "msgpack/v2/unpack_decl.hpp"
+#include "msgpack/v3/unpack_decl.hpp"
+
+#endif // MSGPACK_UNPACK_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/unpack_define.h b/third_party/msgpack/include/msgpack/unpack_define.h
new file mode 100644
index 0000000000..c7decf6599
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/unpack_define.h
@@ -0,0 +1,89 @@
+/*
+ * MessagePack unpacking routine template
+ *
+ * Copyright (C) 2008-2010 FURUHASHI Sadayuki
+ *
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ */
+#ifndef MSGPACK_UNPACK_DEFINE_H
+#define MSGPACK_UNPACK_DEFINE_H
+
+#include "msgpack/sysdep.h"
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <stdio.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#ifndef MSGPACK_EMBED_STACK_SIZE
+#define MSGPACK_EMBED_STACK_SIZE 32
+#endif
+
+
+typedef enum {
+ MSGPACK_CS_HEADER = 0x00, // nil
+
+ //MSGPACK_CS_ = 0x01,
+ //MSGPACK_CS_ = 0x02, // false
+ //MSGPACK_CS_ = 0x03, // true
+
+ MSGPACK_CS_BIN_8 = 0x04,
+ MSGPACK_CS_BIN_16 = 0x05,
+ MSGPACK_CS_BIN_32 = 0x06,
+
+ MSGPACK_CS_EXT_8 = 0x07,
+ MSGPACK_CS_EXT_16 = 0x08,
+ MSGPACK_CS_EXT_32 = 0x09,
+
+ MSGPACK_CS_FLOAT = 0x0a,
+ MSGPACK_CS_DOUBLE = 0x0b,
+ MSGPACK_CS_UINT_8 = 0x0c,
+ MSGPACK_CS_UINT_16 = 0x0d,
+ MSGPACK_CS_UINT_32 = 0x0e,
+ MSGPACK_CS_UINT_64 = 0x0f,
+ MSGPACK_CS_INT_8 = 0x10,
+ MSGPACK_CS_INT_16 = 0x11,
+ MSGPACK_CS_INT_32 = 0x12,
+ MSGPACK_CS_INT_64 = 0x13,
+
+ MSGPACK_CS_FIXEXT_1 = 0x14,
+ MSGPACK_CS_FIXEXT_2 = 0x15,
+ MSGPACK_CS_FIXEXT_4 = 0x16,
+ MSGPACK_CS_FIXEXT_8 = 0x17,
+ MSGPACK_CS_FIXEXT_16 = 0x18,
+
+ MSGPACK_CS_STR_8 = 0x19, // str8
+ MSGPACK_CS_STR_16 = 0x1a, // str16
+ MSGPACK_CS_STR_32 = 0x1b, // str32
+ MSGPACK_CS_ARRAY_16 = 0x1c,
+ MSGPACK_CS_ARRAY_32 = 0x1d,
+ MSGPACK_CS_MAP_16 = 0x1e,
+ MSGPACK_CS_MAP_32 = 0x1f,
+
+ //MSGPACK_ACS_BIG_INT_VALUE,
+ //MSGPACK_ACS_BIG_FLOAT_VALUE,
+ MSGPACK_ACS_STR_VALUE,
+ MSGPACK_ACS_BIN_VALUE,
+ MSGPACK_ACS_EXT_VALUE
+} msgpack_unpack_state;
+
+
+typedef enum {
+ MSGPACK_CT_ARRAY_ITEM,
+ MSGPACK_CT_MAP_KEY,
+ MSGPACK_CT_MAP_VALUE
+} msgpack_container_type;
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* msgpack/unpack_define.h */
+
diff --git a/third_party/msgpack/include/msgpack/unpack_exception.hpp b/third_party/msgpack/include/msgpack/unpack_exception.hpp
new file mode 100644
index 0000000000..fa28f74977
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/unpack_exception.hpp
@@ -0,0 +1,15 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2017 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_UNPACK_EXCEPTION_HPP
+#define MSGPACK_UNPACK_EXCEPTION_HPP
+
+#include "msgpack/v1/unpack_exception.hpp"
+
+#endif // MSGPACK_UNPACK_EXCEPTION_HPP
diff --git a/third_party/msgpack/include/msgpack/unpack_template.h b/third_party/msgpack/include/msgpack/unpack_template.h
new file mode 100644
index 0000000000..e557bb6df9
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/unpack_template.h
@@ -0,0 +1,466 @@
+/*
+ * MessagePack unpacking routine template
+ *
+ * Copyright (C) 2008-2010 FURUHASHI Sadayuki
+ *
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ */
+
+#ifndef msgpack_unpack_func
+#error msgpack_unpack_func template is not defined
+#endif
+
+#ifndef msgpack_unpack_callback
+#error msgpack_unpack_callback template is not defined
+#endif
+
+#ifndef msgpack_unpack_struct
+#error msgpack_unpack_struct template is not defined
+#endif
+
+#ifndef msgpack_unpack_struct_decl
+#define msgpack_unpack_struct_decl(name) msgpack_unpack_struct(name)
+#endif
+
+#ifndef msgpack_unpack_object
+#error msgpack_unpack_object type is not defined
+#endif
+
+#ifndef msgpack_unpack_user
+#error msgpack_unpack_user type is not defined
+#endif
+
+#ifndef USE_CASE_RANGE
+#if !defined(_MSC_VER)
+#define USE_CASE_RANGE
+#endif
+#endif
+
+msgpack_unpack_struct_decl(_stack) {
+ msgpack_unpack_object obj;
+ size_t count;
+ unsigned int ct;
+ msgpack_unpack_object map_key;
+};
+
+msgpack_unpack_struct_decl(_context) {
+ msgpack_unpack_user user;
+ unsigned int cs;
+ unsigned int trail;
+ unsigned int top;
+ /*
+ msgpack_unpack_struct(_stack)* stack;
+ unsigned int stack_size;
+ msgpack_unpack_struct(_stack) embed_stack[MSGPACK_EMBED_STACK_SIZE];
+ */
+ msgpack_unpack_struct(_stack) stack[MSGPACK_EMBED_STACK_SIZE];
+};
+
+
+msgpack_unpack_func(void, _init)(msgpack_unpack_struct(_context)* ctx)
+{
+ ctx->cs = MSGPACK_CS_HEADER;
+ ctx->trail = 0;
+ ctx->top = 0;
+ /*
+ ctx->stack = ctx->embed_stack;
+ ctx->stack_size = MSGPACK_EMBED_STACK_SIZE;
+ */
+ ctx->stack[0].obj = msgpack_unpack_callback(_root)(&ctx->user);
+}
+
+/*
+msgpack_unpack_func(void, _destroy)(msgpack_unpack_struct(_context)* ctx)
+{
+ if(ctx->stack_size != MSGPACK_EMBED_STACK_SIZE) {
+ free(ctx->stack);
+ }
+}
+*/
+
+msgpack_unpack_func(msgpack_unpack_object, _data)(msgpack_unpack_struct(_context)* ctx)
+{
+ return (ctx)->stack[0].obj;
+}
+
+
+msgpack_unpack_func(int, _execute)(msgpack_unpack_struct(_context)* ctx, const char* data, size_t len, size_t* off)
+{
+ assert(len >= *off);
+ {
+ const unsigned char* p = (unsigned char*)data + *off;
+ const unsigned char* const pe = (unsigned char*)data + len;
+ const void* n = NULL;
+
+ unsigned int trail = ctx->trail;
+ unsigned int cs = ctx->cs;
+ unsigned int top = ctx->top;
+ msgpack_unpack_struct(_stack)* stack = ctx->stack;
+ /*
+ unsigned int stack_size = ctx->stack_size;
+ */
+ msgpack_unpack_user* user = &ctx->user;
+
+ msgpack_unpack_object obj;
+ msgpack_unpack_struct(_stack)* c = NULL;
+
+ int ret;
+
+#define push_simple_value(func) \
+ ret = msgpack_unpack_callback(func)(user, &obj); \
+ if(ret < 0) { goto _failed; } \
+ goto _push
+#define push_fixed_value(func, arg) \
+ ret = msgpack_unpack_callback(func)(user, arg, &obj); \
+ if(ret < 0) { goto _failed; } \
+ goto _push
+#define push_variable_value(func, base, pos, len) \
+ ret = msgpack_unpack_callback(func)(user, \
+ (const char*)base, (const char*)pos, len, &obj); \
+ if(ret < 0) { goto _failed; } \
+ goto _push
+
+#define again_fixed_trail(_cs, trail_len) \
+ trail = trail_len; \
+ cs = _cs; \
+ goto _fixed_trail_again
+#define again_fixed_trail_if_zero(_cs, trail_len, ifzero) \
+ trail = trail_len; \
+ if(trail == 0) { goto ifzero; } \
+ cs = _cs; \
+ goto _fixed_trail_again
+
+#define start_container(func, count_, ct_) \
+ if(top >= MSGPACK_EMBED_STACK_SIZE) { \
+ ret = MSGPACK_UNPACK_NOMEM_ERROR; \
+ goto _failed; \
+ } /* FIXME */ \
+ ret = msgpack_unpack_callback(func)(user, count_, &stack[top].obj); \
+ if(ret < 0) { goto _failed; } \
+ if((count_) == 0) { obj = stack[top].obj; goto _push; } \
+ stack[top].ct = ct_; \
+ stack[top].count = count_; \
+ ++top; \
+ goto _header_again
+
+#define NEXT_CS(p) \
+ ((unsigned int)*p & 0x1f)
+
+#ifdef USE_CASE_RANGE
+#define SWITCH_RANGE_BEGIN switch(*p) {
+#define SWITCH_RANGE(FROM, TO) case FROM ... TO:
+#define SWITCH_RANGE_DEFAULT default:
+#define SWITCH_RANGE_END }
+#else
+#define SWITCH_RANGE_BEGIN { if(0) {
+#define SWITCH_RANGE(FROM, TO) } else if(FROM <= *p && *p <= TO) {
+#define SWITCH_RANGE_DEFAULT } else {
+#define SWITCH_RANGE_END } }
+#endif
+
+ if(p == pe) { goto _out; }
+ do {
+ switch(cs) {
+ case MSGPACK_CS_HEADER:
+ SWITCH_RANGE_BEGIN
+ SWITCH_RANGE(0x00, 0x7f) // Positive Fixnum
+ push_fixed_value(_uint8, *(uint8_t*)p);
+ SWITCH_RANGE(0xe0, 0xff) // Negative Fixnum
+ push_fixed_value(_int8, *(int8_t*)p);
+ SWITCH_RANGE(0xc0, 0xdf) // Variable
+ switch(*p) {
+ case 0xc0: // nil
+ push_simple_value(_nil);
+ //case 0xc1: // string
+ // again_terminal_trail(NEXT_CS(p), p+1);
+ case 0xc2: // false
+ push_simple_value(_false);
+ case 0xc3: // true
+ push_simple_value(_true);
+ case 0xc4: // bin 8
+ case 0xc5: // bin 16
+ case 0xc6: // bin 32
+ again_fixed_trail(NEXT_CS(p), 1 << (((unsigned int)*p) & 0x03));
+ case 0xc7: // ext 8
+ case 0xc8: // ext 16
+ case 0xc9: // ext 32
+ again_fixed_trail(NEXT_CS(p), 1 << ((((unsigned int)*p) + 1) & 0x03));
+ case 0xca: // float
+ case 0xcb: // double
+ case 0xcc: // unsigned int 8
+ case 0xcd: // unsigned int 16
+ case 0xce: // unsigned int 32
+ case 0xcf: // unsigned int 64
+ case 0xd0: // signed int 8
+ case 0xd1: // signed int 16
+ case 0xd2: // signed int 32
+ case 0xd3: // signed int 64
+ again_fixed_trail(NEXT_CS(p), 1 << (((unsigned int)*p) & 0x03));
+ case 0xd4: // fixext 1
+ case 0xd5: // fixext 2
+ case 0xd6: // fixext 4
+ case 0xd7: // fixext 8
+ again_fixed_trail_if_zero(MSGPACK_ACS_EXT_VALUE,
+ (1 << (((unsigned int)*p) & 0x03)) + 1, _ext_zero);
+ case 0xd8: // fixext 16
+ again_fixed_trail_if_zero(MSGPACK_ACS_EXT_VALUE, 16+1, _ext_zero);
+
+ case 0xd9: // str 8
+ case 0xda: // str 16
+ case 0xdb: // str 32
+ again_fixed_trail(NEXT_CS(p), 1 << ((((unsigned int)*p) & 0x03) - 1));
+ case 0xdc: // array 16
+ case 0xdd: // array 32
+ case 0xde: // map 16
+ case 0xdf: // map 32
+ again_fixed_trail(NEXT_CS(p), 2u << (((unsigned int)*p) & 0x01));
+ default:
+ ret = MSGPACK_UNPACK_PARSE_ERROR;
+ goto _failed;
+ }
+ SWITCH_RANGE(0xa0, 0xbf) // FixStr
+ again_fixed_trail_if_zero(MSGPACK_ACS_STR_VALUE, ((unsigned int)*p & 0x1f), _str_zero);
+ SWITCH_RANGE(0x90, 0x9f) // FixArray
+ start_container(_array, ((unsigned int)*p) & 0x0f, MSGPACK_CT_ARRAY_ITEM);
+ SWITCH_RANGE(0x80, 0x8f) // FixMap
+ start_container(_map, ((unsigned int)*p) & 0x0f, MSGPACK_CT_MAP_KEY);
+
+ SWITCH_RANGE_DEFAULT
+ ret = MSGPACK_UNPACK_PARSE_ERROR;
+ goto _failed;
+ SWITCH_RANGE_END
+ // end MSGPACK_CS_HEADER
+
+
+ _fixed_trail_again:
+ ++p;
+ // fallthrough
+
+ default:
+ if((size_t)(pe - p) < trail) { goto _out; }
+ n = p; p += trail - 1;
+ switch(cs) {
+ //case MSGPACK_CS_
+ //case MSGPACK_CS_
+ case MSGPACK_CS_FLOAT: {
+ union { uint32_t i; float f; } mem;
+ _msgpack_load32(uint32_t, n, &mem.i);
+ push_fixed_value(_float, mem.f); }
+ case MSGPACK_CS_DOUBLE: {
+ union { uint64_t i; double f; } mem;
+ _msgpack_load64(uint64_t, n, &mem.i);
+#if defined(TARGET_OS_IPHONE)
+ // ok
+#elif defined(__arm__) && !(__ARM_EABI__) // arm-oabi
+ // https://github.com/msgpack/msgpack-perl/pull/1
+ mem.i = (mem.i & 0xFFFFFFFFUL) << 32UL | (mem.i >> 32UL);
+#endif
+ push_fixed_value(_double, mem.f); }
+ case MSGPACK_CS_UINT_8:
+ push_fixed_value(_uint8, *(uint8_t*)n);
+ case MSGPACK_CS_UINT_16:{
+ uint16_t tmp;
+ _msgpack_load16(uint16_t,n,&tmp);
+ push_fixed_value(_uint16, tmp);
+ }
+ case MSGPACK_CS_UINT_32:{
+ uint32_t tmp;
+ _msgpack_load32(uint32_t,n,&tmp);
+ push_fixed_value(_uint32, tmp);
+ }
+ case MSGPACK_CS_UINT_64:{
+ uint64_t tmp;
+ _msgpack_load64(uint64_t,n,&tmp);
+ push_fixed_value(_uint64, tmp);
+ }
+ case MSGPACK_CS_INT_8:
+ push_fixed_value(_int8, *(int8_t*)n);
+ case MSGPACK_CS_INT_16:{
+ int16_t tmp;
+ _msgpack_load16(int16_t,n,&tmp);
+ push_fixed_value(_int16, tmp);
+ }
+ case MSGPACK_CS_INT_32:{
+ int32_t tmp;
+ _msgpack_load32(int32_t,n,&tmp);
+ push_fixed_value(_int32, tmp);
+ }
+ case MSGPACK_CS_INT_64:{
+ int64_t tmp;
+ _msgpack_load64(int64_t,n,&tmp);
+ push_fixed_value(_int64, tmp);
+ }
+ case MSGPACK_CS_FIXEXT_1:
+ again_fixed_trail_if_zero(MSGPACK_ACS_EXT_VALUE, 1+1, _ext_zero);
+ case MSGPACK_CS_FIXEXT_2:
+ again_fixed_trail_if_zero(MSGPACK_ACS_EXT_VALUE, 2+1, _ext_zero);
+ case MSGPACK_CS_FIXEXT_4:
+ again_fixed_trail_if_zero(MSGPACK_ACS_EXT_VALUE, 4+1, _ext_zero);
+ case MSGPACK_CS_FIXEXT_8:
+ again_fixed_trail_if_zero(MSGPACK_ACS_EXT_VALUE, 8+1, _ext_zero);
+ case MSGPACK_CS_FIXEXT_16:
+ again_fixed_trail_if_zero(MSGPACK_ACS_EXT_VALUE, 16+1, _ext_zero);
+ case MSGPACK_CS_STR_8:
+ again_fixed_trail_if_zero(MSGPACK_ACS_STR_VALUE, *(uint8_t*)n, _str_zero);
+ case MSGPACK_CS_BIN_8:
+ again_fixed_trail_if_zero(MSGPACK_ACS_BIN_VALUE, *(uint8_t*)n, _bin_zero);
+ case MSGPACK_CS_EXT_8:
+ again_fixed_trail_if_zero(MSGPACK_ACS_EXT_VALUE, (*(uint8_t*)n) + 1, _ext_zero);
+ case MSGPACK_CS_STR_16:{
+ uint16_t tmp;
+ _msgpack_load16(uint16_t,n,&tmp);
+ again_fixed_trail_if_zero(MSGPACK_ACS_STR_VALUE, tmp, _str_zero);
+ }
+ case MSGPACK_CS_BIN_16:{
+ uint16_t tmp;
+ _msgpack_load16(uint16_t,n,&tmp);
+ again_fixed_trail_if_zero(MSGPACK_ACS_BIN_VALUE, tmp, _bin_zero);
+ }
+ case MSGPACK_CS_EXT_16:{
+ uint16_t tmp;
+ _msgpack_load16(uint16_t,n,&tmp);
+ again_fixed_trail_if_zero(MSGPACK_ACS_EXT_VALUE, tmp + 1, _ext_zero);
+ }
+ case MSGPACK_CS_STR_32:{
+ uint32_t tmp;
+ _msgpack_load32(uint32_t,n,&tmp);
+ again_fixed_trail_if_zero(MSGPACK_ACS_STR_VALUE, tmp, _str_zero);
+ }
+ case MSGPACK_CS_BIN_32:{
+ uint32_t tmp;
+ _msgpack_load32(uint32_t,n,&tmp);
+ again_fixed_trail_if_zero(MSGPACK_ACS_BIN_VALUE, tmp, _bin_zero);
+ }
+ case MSGPACK_CS_EXT_32:{
+ uint32_t tmp;
+ _msgpack_load32(uint32_t,n,&tmp);
+ again_fixed_trail_if_zero(MSGPACK_ACS_EXT_VALUE, tmp + 1, _ext_zero);
+ }
+ case MSGPACK_ACS_STR_VALUE:
+ _str_zero:
+ push_variable_value(_str, data, n, trail);
+ case MSGPACK_ACS_BIN_VALUE:
+ _bin_zero:
+ push_variable_value(_bin, data, n, trail);
+ case MSGPACK_ACS_EXT_VALUE:
+ _ext_zero:
+ push_variable_value(_ext, data, n, trail);
+
+ case MSGPACK_CS_ARRAY_16:{
+ uint16_t tmp;
+ _msgpack_load16(uint16_t,n,&tmp);
+ start_container(_array, tmp, MSGPACK_CT_ARRAY_ITEM);
+ }
+ case MSGPACK_CS_ARRAY_32:{
+ /* FIXME security guard */
+ uint32_t tmp;
+ _msgpack_load32(uint32_t,n,&tmp);
+ start_container(_array, tmp, MSGPACK_CT_ARRAY_ITEM);
+ }
+
+ case MSGPACK_CS_MAP_16:{
+ uint16_t tmp;
+ _msgpack_load16(uint16_t,n,&tmp);
+ start_container(_map, tmp, MSGPACK_CT_MAP_KEY);
+ }
+ case MSGPACK_CS_MAP_32:{
+ /* FIXME security guard */
+ uint32_t tmp;
+ _msgpack_load32(uint32_t,n,&tmp);
+ start_container(_map, tmp, MSGPACK_CT_MAP_KEY);
+ }
+
+ default:
+ ret = MSGPACK_UNPACK_PARSE_ERROR;
+ goto _failed;
+ }
+ }
+
+ _push:
+ if(top == 0) { goto _finish; }
+ c = &stack[top-1];
+ switch(c->ct) {
+ case MSGPACK_CT_ARRAY_ITEM:
+ ret = msgpack_unpack_callback(_array_item)(user, &c->obj, obj); \
+ if(ret < 0) { goto _failed; }
+ if(--c->count == 0) {
+ obj = c->obj;
+ --top;
+ /*printf("stack pop %d\n", top);*/
+ goto _push;
+ }
+ goto _header_again;
+ case MSGPACK_CT_MAP_KEY:
+ c->map_key = obj;
+ c->ct = MSGPACK_CT_MAP_VALUE;
+ goto _header_again;
+ case MSGPACK_CT_MAP_VALUE:
+ ret = msgpack_unpack_callback(_map_item)(user, &c->obj, c->map_key, obj); \
+ if(ret < 0) { goto _failed; }
+ if(--c->count == 0) {
+ obj = c->obj;
+ --top;
+ /*printf("stack pop %d\n", top);*/
+ goto _push;
+ }
+ c->ct = MSGPACK_CT_MAP_KEY;
+ goto _header_again;
+
+ default:
+ ret = MSGPACK_UNPACK_PARSE_ERROR;
+ goto _failed;
+ }
+
+ _header_again:
+ cs = MSGPACK_CS_HEADER;
+ ++p;
+ } while(p != pe);
+ goto _out;
+
+
+ _finish:
+ stack[0].obj = obj;
+ ++p;
+ ret = 1;
+ /*printf("-- finish --\n"); */
+ goto _end;
+
+ _failed:
+ /*printf("** FAILED **\n"); */
+ goto _end;
+
+ _out:
+ ret = 0;
+ goto _end;
+
+ _end:
+ ctx->cs = cs;
+ ctx->trail = trail;
+ ctx->top = top;
+ *off = (size_t)(p - (const unsigned char*)data);
+
+ return ret;
+ }
+}
+
+#undef msgpack_unpack_func
+#undef msgpack_unpack_callback
+#undef msgpack_unpack_struct
+#undef msgpack_unpack_object
+#undef msgpack_unpack_user
+
+#undef push_simple_value
+#undef push_fixed_value
+#undef push_variable_value
+#undef again_fixed_trail
+#undef again_fixed_trail_if_zero
+#undef start_container
+
+#undef NEXT_CS
+
+#undef SWITCH_RANGE_BEGIN
+#undef SWITCH_RANGE
+#undef SWITCH_RANGE_DEFAULT
+#undef SWITCH_RANGE_END
diff --git a/third_party/msgpack/include/msgpack/util.h b/third_party/msgpack/include/msgpack/util.h
new file mode 100644
index 0000000000..959b56bec0
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/util.h
@@ -0,0 +1,15 @@
+/*
+ * MessagePack for C utilities
+ *
+ * Copyright (C) 2014 FURUHASHI Sadayuki
+ *
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ */
+#ifndef MSGPACK_UTIL_H
+#define MSGPACK_UTIL_H
+
+#define MSGPACK_UNUSED(a) (void)(a)
+
+#endif /* MSGPACK_UTIL_H */
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/adaptor_base.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/adaptor_base.hpp
new file mode 100644
index 0000000000..489362b4d0
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/adaptor_base.hpp
@@ -0,0 +1,116 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015-2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_ADAPTOR_BASE_HPP
+#define MSGPACK_V1_ADAPTOR_BASE_HPP
+
+#include "msgpack/v1/adaptor/adaptor_base_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+
+namespace adaptor {
+
+// Adaptor functors
+
+template <typename T, typename Enabler>
+struct convert {
+ msgpack::object const& operator()(msgpack::object const& o, T& v) const;
+};
+
+template <typename T, typename Enabler>
+struct pack {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, T const& v) const;
+};
+
+template <typename T, typename Enabler>
+struct object {
+ void operator()(msgpack::object& o, T const& v) const;
+};
+
+template <typename T, typename Enabler>
+struct object_with_zone {
+ void operator()(msgpack::object::with_zone& o, T const& v) const;
+};
+
+} // namespace adaptor
+
+// operators
+
+template <typename T>
+inline
+typename msgpack::enable_if<
+ !is_array<T>::value,
+ msgpack::object const&
+>::type
+operator>> (msgpack::object const& o, T& v) {
+ return msgpack::adaptor::convert<T>()(o, v);
+}
+template <typename T, std::size_t N>
+inline
+msgpack::object const& operator>> (msgpack::object const& o, T(&v)[N]) {
+ return msgpack::adaptor::convert<T[N]>()(o, v);
+}
+
+template <typename Stream, typename T>
+inline
+typename msgpack::enable_if<
+ !is_array<T>::value,
+ msgpack::packer<Stream>&
+>::type
+operator<< (msgpack::packer<Stream>& o, T const& v) {
+ return msgpack::adaptor::pack<T>()(o, v);
+}
+template <typename Stream, typename T, std::size_t N>
+inline
+msgpack::packer<Stream>& operator<< (msgpack::packer<Stream>& o, const T(&v)[N]) {
+ return msgpack::adaptor::pack<T[N]>()(o, v);
+}
+
+template <typename T>
+inline
+typename msgpack::enable_if<
+ !is_array<T>::value
+>::type
+operator<< (msgpack::object& o, T const& v) {
+ msgpack::adaptor::object<T>()(o, v);
+}
+template <typename T, std::size_t N>
+inline
+void operator<< (msgpack::v1::object& o, const T(&v)[N]) {
+ msgpack::v1::adaptor::object<T[N]>()(o, v);
+}
+
+template <typename T>
+inline
+typename msgpack::enable_if<
+ !is_array<T>::value
+>::type
+operator<< (msgpack::object::with_zone& o, T const& v) {
+ msgpack::adaptor::object_with_zone<T>()(o, v);
+}
+template <typename T, std::size_t N>
+inline
+void operator<< (msgpack::object::with_zone& o, const T(&v)[N]) {
+ msgpack::adaptor::object_with_zone<T[N]>()(o, v);
+}
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+
+#endif // MSGPACK_V1_ADAPTOR_BASE_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/adaptor_base_decl.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/adaptor_base_decl.hpp
new file mode 100644
index 0000000000..42e8f0e38e
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/adaptor_base_decl.hpp
@@ -0,0 +1,86 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_ADAPTOR_BASE_DECL_HPP
+#define MSGPACK_V1_ADAPTOR_BASE_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/object_fwd.hpp"
+#include "msgpack/pack.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+template <typename Stream>
+class packer;
+
+namespace adaptor {
+
+// Adaptor functors
+
+template <typename T, typename Enabler = void>
+struct convert;
+
+template <typename T, typename Enabler = void>
+struct pack;
+
+template <typename T, typename Enabler = void>
+struct object;
+
+template <typename T, typename Enabler = void>
+struct object_with_zone;
+
+} // namespace adaptor
+
+// operators
+
+template <typename T>
+typename msgpack::enable_if<
+ !is_array<T>::value,
+ msgpack::object const&
+>::type
+operator>> (msgpack::object const& o, T& v);
+template <typename T, std::size_t N>
+msgpack::object const& operator>> (msgpack::object const& o, T(&v)[N]);
+
+template <typename Stream, typename T>
+typename msgpack::enable_if<
+ !is_array<T>::value,
+ msgpack::packer<Stream>&
+>::type
+operator<< (msgpack::packer<Stream>& o, T const& v);
+template <typename Stream, typename T, std::size_t N>
+msgpack::packer<Stream>& operator<< (msgpack::packer<Stream>& o, const T(&v)[N]);
+
+template <typename T>
+typename msgpack::enable_if<
+ !is_array<T>::value
+>::type
+operator<< (msgpack::object& o, T const& v);
+template <typename T, std::size_t N>
+void operator<< (msgpack::object& o, const T(&v)[N]);
+
+template <typename T>
+typename msgpack::enable_if<
+ !is_array<T>::value
+>::type
+operator<< (msgpack::object::with_zone& o, T const& v);
+template <typename T, std::size_t N>
+void operator<< (msgpack::object::with_zone& o, const T(&v)[N]);
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_ADAPTOR_BASE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/array_ref.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/array_ref.hpp
new file mode 100644
index 0000000000..f81df47c04
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/array_ref.hpp
@@ -0,0 +1,305 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_ARRAY_REF_HPP
+#define MSGPACK_V1_TYPE_ARRAY_REF_HPP
+
+#include "msgpack/v1/adaptor/array_ref.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+#include "msgpack/cpp_config.hpp"
+#include <cstring>
+#include <string>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace type {
+
+template <typename T>
+struct array_ref {
+ array_ref() : data(MSGPACK_NULLPTR) {}
+ array_ref(T& t) : data(&t) {}
+
+ T* data;
+
+ std::size_t size() const {
+ return data->size();
+ }
+
+ template <typename U>
+ bool operator==(array_ref<U> const& t) const {
+ return *data == *t.data;
+ }
+ template <typename U>
+ bool operator!=(array_ref<U> const& t) const {
+ return !(*data == *t.data);
+ }
+ template <typename U>
+ bool operator< (array_ref<U> const& t) const
+ {
+ return *data < *t.data;
+ }
+ template <typename U>
+ bool operator> (array_ref<U> const& t) const
+ {
+ return *t.data < *data;
+ }
+ template <typename U>
+ bool operator<= (array_ref<U> const& t) const
+ {
+ return !(*t.data < *data);
+ }
+ template <typename U>
+ bool operator>= (array_ref<U> const& t) const
+ {
+ return !(*data < *t.data);
+ }
+};
+
+template <typename T, std::size_t N>
+struct array_ref<T[N]> {
+ array_ref() : data(MSGPACK_NULLPTR) {}
+ array_ref(T(&t)[N]) : data(t) {}
+
+ T* data;
+
+ std::size_t size() const {
+ return N;
+ }
+
+ template <typename U>
+ bool operator==(array_ref<U> const& t) const {
+ if (N != t.size()) return false;
+ T const* pself = data;
+ U const* pother = t.data;
+ for (; pself != &data[N]; ++pself, ++pother) {
+ if (*pself != *pother) return false;
+ }
+ return true;
+ }
+ template <typename U>
+ bool operator!=(array_ref<U> const& t) const {
+ return !(*this == t);
+ }
+ template <typename U>
+ bool operator< (array_ref<U> const& t) const
+ {
+ T const* pself = data;
+ U const* pother = t.data;
+ for (; pself != &data[N] && pother != t.data[t.size()]; ++pself, ++pother) {
+ if (*pself < *pother) return true;
+ }
+ if (N < t.size()) return true;
+ return false;
+ }
+ template <typename U>
+ bool operator> (array_ref<U> const& t) const
+ {
+ return t.data < data;
+ }
+ template <typename U>
+ bool operator<= (array_ref<U> const& t) const
+ {
+ return !(t.data < data);
+ }
+ template <typename U>
+ bool operator>= (array_ref<U> const& t) const
+ {
+ return !(data < t.data);
+ }
+};
+
+template <typename T>
+inline
+typename msgpack::enable_if<
+ !msgpack::is_array<T const>::value,
+ array_ref<T const>
+>::type
+make_array_ref(const T& t) {
+ return array_ref<T const>(t);
+}
+
+template <typename T>
+inline
+typename msgpack::enable_if<
+ !msgpack::is_array<T>::value,
+ array_ref<T>
+>::type
+make_array_ref(T& t) {
+ return array_ref<T>(t);
+}
+
+template <typename T, std::size_t N>
+inline array_ref<const T[N]> make_array_ref(const T(&t)[N]) {
+ return array_ref<const T[N]>(t);
+}
+
+template <typename T, std::size_t N>
+inline array_ref<T[N]> make_array_ref(T(&t)[N]) {
+ return array_ref<T[N]>(t);
+}
+
+} // namespace type
+
+namespace adaptor {
+
+template <typename T>
+struct convert<msgpack::type::array_ref<T> > {
+ msgpack::object const& operator()(msgpack::object const& o, msgpack::type::array_ref<T>& v) const {
+ if (!v.data) { throw msgpack::type_error(); }
+ if (o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ if (v.size() < o.via.bin.size) { throw msgpack::type_error(); }
+ if (o.via.array.size > 0) {
+ msgpack::object* p = o.via.array.ptr;
+ msgpack::object* const pend = o.via.array.ptr + o.via.array.size;
+ typename T::iterator it = v.data->begin();
+ do {
+ p->convert(*it);
+ ++p;
+ ++it;
+ } while(p < pend);
+ }
+ return o;
+ }
+};
+
+template <typename T, std::size_t N>
+struct convert<msgpack::type::array_ref<T[N]> > {
+ msgpack::object const& operator()(msgpack::object const& o, msgpack::type::array_ref<T[N]>& v) const {
+ if (!v.data) { throw msgpack::type_error(); }
+ if (o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ if (v.size() < o.via.bin.size) { throw msgpack::type_error(); }
+ if (o.via.array.size > 0) {
+ msgpack::object* p = o.via.array.ptr;
+ msgpack::object* const pend = o.via.array.ptr + o.via.array.size;
+ T* it = v.data;
+ do {
+ p->convert(*it);
+ ++p;
+ ++it;
+ } while(p < pend);
+ }
+ return o;
+ }
+};
+
+template <typename T>
+struct convert<msgpack::type::array_ref<std::vector<T> > > {
+ msgpack::object const& operator()(msgpack::object const& o, msgpack::type::array_ref<std::vector<T> >& v) const {
+ if (!v.data) { throw msgpack::type_error(); }
+ if (o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ v.data->resize(o.via.bin.size);
+ if (o.via.array.size > 0) {
+ msgpack::object* p = o.via.array.ptr;
+ msgpack::object* const pend = o.via.array.ptr + o.via.array.size;
+ typename std::vector<T>::iterator it = v.data->begin();
+ do {
+ p->convert(*it);
+ ++p;
+ ++it;
+ } while(p < pend);
+ }
+ return o;
+ }
+};
+
+template <typename T>
+struct pack<msgpack::type::array_ref<T> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const msgpack::type::array_ref<T>& v) const {
+ if (!v.data) { throw msgpack::type_error(); }
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_array(size);
+ for (typename T::const_iterator it(v.data->begin()), it_end(v.data->end());
+ it != it_end; ++it) {
+ o.pack(*it);
+ }
+ return o;
+ }
+};
+
+template <typename T, std::size_t N>
+struct pack<msgpack::type::array_ref<T[N]> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const msgpack::type::array_ref<T[N]>& v) const {
+ if (!v.data) { throw msgpack::type_error(); }
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_array(size);
+ for (T const* it = v.data;
+ it != &v.data[v.size()]; ++it) {
+ o.pack(*it);
+ }
+ return o;
+ }
+};
+
+template <typename T>
+struct object_with_zone<msgpack::type::array_ref<T> > {
+ void operator()(msgpack::object::with_zone& o, const msgpack::type::array_ref<T>& v) const {
+ if (!v.data) { throw msgpack::type_error(); }
+ o.type = msgpack::type::ARRAY;
+ if (v.data->empty()) {
+ o.via.array.ptr = MSGPACK_NULLPTR;
+ o.via.array.size = 0;
+ }
+ else {
+ uint32_t size = checked_get_container_size(v.size());
+ msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ msgpack::object* const pend = p + size;
+ o.via.array.ptr = p;
+ o.via.array.size = size;
+ typename T::const_iterator it(v.data->begin());
+ do {
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
+#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+ *p = msgpack::object(*it, o.zone);
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+#pragma GCC diagnostic pop
+#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+ ++p;
+ ++it;
+ } while(p < pend);
+ }
+ }
+};
+
+template <typename T, std::size_t N>
+struct object_with_zone<msgpack::type::array_ref<T[N]> > {
+ void operator()(msgpack::object::with_zone& o, const msgpack::type::array_ref<T[N]>& v) const {
+ if (!v.data) { throw msgpack::type_error(); }
+ o.type = msgpack::type::ARRAY;
+ uint32_t size = checked_get_container_size(v.size());
+ msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ msgpack::object* const pend = p + size;
+ o.via.array.ptr = p;
+ o.via.array.size = size;
+ T const* it = v.data;
+ do {
+ *p = msgpack::object(*it, o.zone);
+ ++p;
+ ++it;
+ } while(p < pend);
+ }
+};
+
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_ARRAY_REF_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/array_ref_decl.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/array_ref_decl.hpp
new file mode 100644
index 0000000000..433e24f663
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/array_ref_decl.hpp
@@ -0,0 +1,55 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_ARRAY_REF_DECL_HPP
+#define MSGPACK_V1_TYPE_ARRAY_REF_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace type {
+
+template <typename T>
+struct array_ref;
+
+template <typename T>
+typename msgpack::enable_if<
+ !msgpack::is_array<T const>::value,
+ array_ref<T const>
+>::type
+make_array_ref(T const& t);
+
+template <typename T>
+typename msgpack::enable_if<
+ !msgpack::is_array<T>::value,
+ array_ref<T>
+>::type
+make_array_ref(T& t);
+
+template <typename T, std::size_t N>
+array_ref<const T[N]> make_array_ref(const T(&t)[N]);
+
+template <typename T, std::size_t N>
+array_ref<T[N]> make_array_ref(T(&t)[N]);
+
+} // namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_ARRAY_REF_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/bool.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/bool.hpp
new file mode 100644
index 0000000000..95cd704f3a
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/bool.hpp
@@ -0,0 +1,66 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_BOOL_HPP
+#define MSGPACK_V1_TYPE_BOOL_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+template <>
+struct convert<bool> {
+ msgpack::object const& operator()(msgpack::object const& o, bool& v) const {
+ if(o.type != msgpack::type::BOOLEAN) { throw msgpack::type_error(); }
+ v = o.via.boolean;
+ return o;
+ }
+};
+
+template <>
+struct pack<bool> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const bool& v) const {
+ if(v) { o.pack_true(); }
+ else { o.pack_false(); }
+ return o;
+ }
+};
+
+template <>
+struct object<bool> {
+ void operator()(msgpack::object& o, bool v) const {
+ o.type = msgpack::type::BOOLEAN;
+ o.via.boolean = v;
+ }
+};
+
+template <>
+struct object_with_zone<bool> {
+ void operator()(msgpack::object::with_zone& o, bool v) const {
+ static_cast<msgpack::object&>(o) << v;
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_BOOL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/boost/fusion.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/boost/fusion.hpp
new file mode 100644
index 0000000000..69a1124067
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/boost/fusion.hpp
@@ -0,0 +1,203 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015-2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_BOOST_FUSION_HPP
+#define MSGPACK_V1_TYPE_BOOST_FUSION_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+#include "msgpack/meta.hpp"
+
+#include "msgpack/adaptor/pair.hpp"
+
+#if !defined (MSGPACK_USE_CPP03)
+#include "msgpack/adaptor/cpp11/tuple.hpp"
+#endif // #if !defined (MSGPACK_USE_CPP03)
+
+#include <boost/fusion/support/is_sequence.hpp>
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/fusion/algorithm/iteration/for_each.hpp>
+#include <boost/fusion/sequence/intrinsic/at.hpp>
+#include <boost/fusion/include/mpl.hpp>
+#include <boost/mpl/size.hpp>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+namespace detail {
+
+template <typename T>
+struct is_std_pair {
+ static bool const value = false;
+};
+
+template <typename T, typename U>
+struct is_std_pair<std::pair<T, U> > {
+ static bool const value = true;
+};
+
+#if !defined(MSGPACK_USE_CPP03)
+
+template <typename T>
+struct is_std_tuple {
+ static bool const value = false;
+};
+
+template <typename... Args>
+struct is_std_tuple<std::tuple<Args...>> {
+ static bool const value = true;
+};
+
+#endif // !defined(MSGPACK_USE_CPP03)
+
+template <typename T>
+struct is_seq_no_pair_no_tuple {
+ static bool const value =
+ boost::fusion::traits::is_sequence<T>::value
+ &&
+ !is_std_pair<T>::value
+#if !defined (MSGPACK_USE_CPP03)
+ &&
+ !is_std_tuple<T>::value
+#endif // !defined (MSGPACK_USE_CPP03)
+ ;
+};
+
+} // namespace detail
+
+#if !defined (MSGPACK_USE_CPP03)
+
+template <typename T>
+struct as<
+ T,
+ typename msgpack::enable_if<
+ detail::is_seq_no_pair_no_tuple<T>::value &&
+ boost::mpl::fold<
+ T,
+ boost::mpl::bool_<true>,
+ boost::mpl::if_ <
+ boost::mpl::or_<
+ boost::mpl::_1,
+ msgpack::has_as<boost::mpl::_2>
+ >,
+ boost::mpl::bool_<true>,
+ boost::mpl::bool_<false>
+ >
+ >::type::value
+ >::type
+> {
+ T operator()(msgpack::object const& o) const {
+ if (o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ if (o.via.array.size != checked_get_container_size(boost::mpl::size<T>::value)) {
+ throw msgpack::type_error();
+ }
+ using tuple_t = decltype(to_tuple(std::declval<T>(), gen_seq<boost::mpl::size<T>::value>()));
+ return to_t(
+ o.as<tuple_t>(),
+ msgpack::gen_seq<boost::mpl::size<T>::value>());
+ }
+ template<std::size_t... Is, typename U>
+ static std::tuple<
+ typename std::remove_reference<
+ typename boost::fusion::result_of::at_c<T, Is>::type
+ >::type...>
+ to_tuple(U const& u, seq<Is...>) {
+ return std::make_tuple(boost::fusion::at_c<Is>(u)...);
+ }
+ template<std::size_t... Is, typename U>
+ static T to_t(U const& u, seq<Is...>) {
+ return T(std::get<Is>(u)...);
+ }
+};
+
+#endif // !defined (MSGPACK_USE_CPP03)
+
+template <typename T>
+struct convert<T, typename msgpack::enable_if<detail::is_seq_no_pair_no_tuple<T>::value>::type > {
+ msgpack::object const& operator()(msgpack::object const& o, T& v) const {
+ if (o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ if (o.via.array.size != checked_get_container_size(boost::fusion::size(v))) {
+ throw msgpack::type_error();
+ }
+ uint32_t index = 0;
+ boost::fusion::for_each(v, convert_imp(o, index));
+ return o;
+ }
+private:
+ struct convert_imp {
+ convert_imp(msgpack::object const& obj, uint32_t& index):obj_(obj), index_(index) {}
+ template <typename U>
+ void operator()(U& v) const {
+ msgpack::adaptor::convert<U>()(obj_.via.array.ptr[index_++], v);
+ }
+ private:
+ msgpack::object const& obj_;
+ uint32_t& index_;
+ };
+};
+
+template <typename T>
+struct pack<T, typename msgpack::enable_if<detail::is_seq_no_pair_no_tuple<T>::value>::type > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const T& v) const {
+ uint32_t size = checked_get_container_size(boost::fusion::size(v));
+ o.pack_array(size);
+ boost::fusion::for_each(v, pack_imp<Stream>(o));
+ return o;
+ }
+private:
+ template <typename Stream>
+ struct pack_imp {
+ pack_imp(msgpack::packer<Stream>& stream):stream_(stream) {}
+ template <typename U>
+ void operator()(U const& v) const {
+ stream_.pack(v);
+ }
+ private:
+ msgpack::packer<Stream>& stream_;
+ };
+};
+
+template <typename T>
+struct object_with_zone<T, typename msgpack::enable_if<detail::is_seq_no_pair_no_tuple<T>::value>::type > {
+ void operator()(msgpack::object::with_zone& o, const T& v) const {
+ uint32_t size = checked_get_container_size(boost::fusion::size(v));
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = size;
+ uint32_t count = 0;
+ boost::fusion::for_each(v, with_zone_imp(o, count));
+ }
+private:
+ struct with_zone_imp {
+ with_zone_imp(msgpack::object::with_zone const& obj, uint32_t& count):obj_(obj), count_(count) {}
+ template <typename U>
+ void operator()(U const& v) const {
+ obj_.via.array.ptr[count_++] = msgpack::object(v, obj_.zone);
+ }
+ msgpack::object::with_zone const& obj_;
+ uint32_t& count_;
+ };
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_BOOST_FUSION_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/boost/msgpack_variant.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/boost/msgpack_variant.hpp
new file mode 100644
index 0000000000..26eff00bb0
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/boost/msgpack_variant.hpp
@@ -0,0 +1,443 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015-2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_BOOST_MSGPACK_VARIANT_HPP
+#define MSGPACK_V1_TYPE_BOOST_MSGPACK_VARIANT_HPP
+
+#if defined(MSGPACK_USE_BOOST)
+
+#include "msgpack/v1/adaptor/boost/msgpack_variant_decl.hpp"
+
+#include "msgpack/adaptor/check_container_size.hpp"
+#include "msgpack/adaptor/boost/string_ref.hpp"
+
+#include "msgpack/adaptor/nil.hpp"
+#include "msgpack/adaptor/bool.hpp"
+#include "msgpack/adaptor/int.hpp"
+#include "msgpack/adaptor/float.hpp"
+#include "msgpack/adaptor/string.hpp"
+#include "msgpack/adaptor/vector_char.hpp"
+#include "msgpack/adaptor/raw.hpp"
+#include "msgpack/adaptor/ext.hpp"
+#include "msgpack/adaptor/vector.hpp"
+#include "msgpack/adaptor/map.hpp"
+
+#include <boost/variant.hpp>
+#include <boost/operators.hpp>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace type {
+
+
+template <typename STR, typename BIN, typename EXT>
+struct basic_variant :
+ boost::variant<
+ nil_t, // NIL
+ bool, // BOOL
+ int64_t, // NEGATIVE_INTEGER
+ uint64_t, // POSITIVE_INTEGER
+ double, // FLOAT32, FLOAT64
+ std::string, // STR
+#if (BOOST_VERSION / 100000) >= 1 && ((BOOST_VERSION / 100) % 1000) >= 53
+ boost::string_ref, // STR
+#endif // (BOOST_VERSION / 100000) >= 1 && ((BOOST_VERSION / 100) % 1000) >= 53
+ std::vector<char>, // BIN
+ msgpack::type::raw_ref, // BIN
+ msgpack::type::ext, // EXT
+ msgpack::type::ext_ref, // EXT
+ boost::recursive_wrapper<std::vector<basic_variant<STR, BIN, EXT> > >, // ARRAY
+ boost::recursive_wrapper<std::map<basic_variant<STR, BIN, EXT>, basic_variant<STR, BIN, EXT> > >, // MAP
+ boost::recursive_wrapper<std::multimap<basic_variant<STR, BIN, EXT>, basic_variant<STR, BIN, EXT> > >// MAP
+ >,
+ private boost::totally_ordered<basic_variant<STR, BIN, EXT> > {
+ typedef boost::variant<
+ nil_t, // NIL
+ bool, // BOOL
+ int64_t, // NEGATIVE_INTEGER
+ uint64_t, // POSITIVE_INTEGER
+ double, // FLOAT32, FLOAT64
+ std::string, // STR
+#if (BOOST_VERSION / 100000) >= 1 && ((BOOST_VERSION / 100) % 1000) >= 53
+ boost::string_ref, // STR
+#endif // (BOOST_VERSION / 100000) >= 1 && ((BOOST_VERSION / 100) % 1000) >= 53
+ std::vector<char>, // BIN
+ msgpack::type::raw_ref, // BIN
+ msgpack::type::ext, // EXT
+ msgpack::type::ext_ref, // EXT
+ boost::recursive_wrapper<std::vector<basic_variant<STR, BIN, EXT> > >, // ARRAY
+ boost::recursive_wrapper<std::map<basic_variant<STR, BIN, EXT>, basic_variant<STR, BIN, EXT> > >, // MAP
+ boost::recursive_wrapper<std::multimap<basic_variant<STR, BIN, EXT>, basic_variant<STR, BIN, EXT> > >// MAP
+ > base;
+ basic_variant() {}
+ template <typename T>
+ basic_variant(T const& t):base(t) {}
+
+#if defined(_MSC_VER) && _MSC_VER < 1700
+ // The following redundant functions are required to avoid MSVC
+ // See https://svn.boost.org/trac/boost/ticket/592
+ basic_variant(basic_variant const& other):base(static_cast<base const&>(other)) {}
+ basic_variant& operator=(basic_variant const& other) {
+ *static_cast<base*>(this) = static_cast<base const&>(other);
+ return *this;
+ }
+#endif // defined(_MSC_VER) && _MSC_VER < 1700
+
+ basic_variant(char const* p):base(std::string(p)) {}
+ basic_variant(char v) {
+ int_init(v);
+ }
+ basic_variant(signed char v) {
+ int_init(v);
+ }
+ basic_variant(unsigned char v):base(uint64_t(v)) {}
+ basic_variant(signed int v) {
+ int_init(v);
+ }
+ basic_variant(unsigned int v):base(uint64_t(v)) {}
+ basic_variant(signed long v) {
+ int_init(v);
+ }
+ basic_variant(unsigned long v):base(uint64_t(v)) {}
+ basic_variant(signed long long v) {
+ int_init(v);
+ }
+ basic_variant(unsigned long long v):base(uint64_t(v)) {}
+
+ bool is_nil() const {
+ return boost::get<msgpack::type::nil_t>(this) != MSGPACK_NULLPTR;
+ }
+ bool is_bool() const {
+ return boost::get<bool>(this) != MSGPACK_NULLPTR;
+ }
+ bool is_int64_t() const {
+ return boost::get<int64_t>(this) != MSGPACK_NULLPTR;
+ }
+ bool is_uint64_t() const {
+ return boost::get<uint64_t>(this) != MSGPACK_NULLPTR;
+ }
+ bool is_double() const {
+ return boost::get<double>(this) != MSGPACK_NULLPTR;
+ }
+ bool is_string() const {
+ return boost::get<std::string>(this) != MSGPACK_NULLPTR;
+ }
+#if (BOOST_VERSION / 100000) >= 1 && ((BOOST_VERSION / 100) % 1000) >= 53
+ bool is_boost_string_ref() const {
+ return boost::get<boost::string_ref>(this) != MSGPACK_NULLPTR;
+ }
+#endif // (BOOST_VERSION / 100000) >= 1 && ((BOOST_VERSION / 100) % 1000) >= 53
+ bool is_vector_char() const {
+ return boost::get<std::vector<char> >(this) != MSGPACK_NULLPTR;
+ }
+ bool is_vector_char() {
+ return boost::get<std::vector<char> >(this) != MSGPACK_NULLPTR;
+ }
+ bool is_raw_ref() const {
+ return boost::get<raw_ref>(this) != MSGPACK_NULLPTR;
+ }
+ bool is_ext() const {
+ return boost::get<ext>(this) != MSGPACK_NULLPTR;
+ }
+ bool is_ext_ref() const {
+ return boost::get<ext_ref>(this) != MSGPACK_NULLPTR;
+ }
+ bool is_vector() const {
+ return boost::get<std::vector<basic_variant<STR, BIN, EXT> > >(this) != MSGPACK_NULLPTR;
+ }
+ bool is_map() const {
+ return boost::get<std::map<basic_variant<STR, BIN, EXT>, basic_variant<STR, BIN, EXT> > >(this) != MSGPACK_NULLPTR;
+ }
+ bool is_multimap() const {
+ return boost::get<std::multimap<basic_variant<STR, BIN, EXT>, basic_variant<STR, BIN, EXT> > >(this) != MSGPACK_NULLPTR;
+ }
+
+ bool as_bool() const {
+ return boost::get<bool>(*this);
+ }
+ int64_t as_int64_t() const {
+ return boost::get<int64_t>(*this);
+ }
+ int64_t& as_int64_t() {
+ return boost::get<int64_t>(*this);
+ }
+ uint64_t as_uint64_t() const {
+ return boost::get<uint64_t>(*this);
+ }
+ uint64_t& as_uint64_t() {
+ return boost::get<uint64_t>(*this);
+ }
+ double as_double() const {
+ return boost::get<double>(*this);
+ }
+ double& as_double() {
+ return boost::get<double>(*this);
+ }
+ std::string const& as_string() const {
+ return boost::get<std::string>(*this);
+ }
+ std::string& as_string() {
+ return boost::get<std::string>(*this);
+ }
+#if (BOOST_VERSION / 100000) >= 1 && ((BOOST_VERSION / 100) % 1000) >= 53
+ boost::string_ref const& as_boost_string_ref() const {
+ return boost::get<boost::string_ref>(*this);
+ }
+ boost::string_ref& as_boost_string_ref() {
+ return boost::get<boost::string_ref>(*this);
+ }
+#endif // (BOOST_VERSION / 100000) >= 1 && ((BOOST_VERSION / 100) % 1000) >= 53
+ std::vector<char> const& as_vector_char() const {
+ return boost::get<std::vector<char> >(*this);
+ }
+ std::vector<char>& as_vector_char() {
+ return boost::get<std::vector<char> >(*this);
+ }
+ raw_ref const& as_raw_ref() const {
+ return boost::get<raw_ref>(*this);
+ }
+ ext const& as_ext() const {
+ return boost::get<ext>(*this);
+ }
+ ext& as_ext() {
+ return boost::get<ext>(*this);
+ }
+ ext_ref const& as_ext_ref() const {
+ return boost::get<ext_ref>(*this);
+ }
+ std::vector<basic_variant<STR, BIN, EXT> > const& as_vector() const {
+ return boost::get<std::vector<basic_variant<STR, BIN, EXT> > >(*this);
+ }
+ std::vector<basic_variant<STR, BIN, EXT> >& as_vector() {
+ return boost::get<std::vector<basic_variant<STR, BIN, EXT> > >(*this);
+ }
+ std::map<basic_variant<STR, BIN, EXT>, basic_variant<STR, BIN, EXT> > const& as_map() const {
+ return boost::get<std::map<basic_variant<STR, BIN, EXT>, basic_variant<STR, BIN, EXT> > >(*this);
+ }
+ std::map<basic_variant<STR, BIN, EXT>, basic_variant<STR, BIN, EXT> >& as_map() {
+ return boost::get<std::map<basic_variant<STR, BIN, EXT>, basic_variant<STR, BIN, EXT> > >(*this);
+ }
+ std::multimap<basic_variant<STR, BIN, EXT>, basic_variant<STR, BIN, EXT> > const& as_multimap() const {
+ return boost::get<std::multimap<basic_variant<STR, BIN, EXT>, basic_variant<STR, BIN, EXT> > >(*this);
+ }
+ std::multimap<basic_variant<STR, BIN, EXT>, basic_variant<STR, BIN, EXT> >& as_multimap() {
+ return boost::get<std::multimap<basic_variant<STR, BIN, EXT>, basic_variant<STR, BIN, EXT> > >(*this);
+ }
+private:
+ template <typename T>
+ void int_init(T v) {
+ if (v < 0) {
+ static_cast<base&>(*this) = int64_t(v);
+ }
+ else {
+ static_cast<base&>(*this) = uint64_t(v);
+ }
+ }
+};
+
+template <typename STR, typename BIN, typename EXT>
+inline bool operator<(basic_variant<STR, BIN, EXT> const& lhs, basic_variant<STR, BIN, EXT> const& rhs) {
+ return
+ static_cast<typename basic_variant<STR, BIN, EXT>::base const&>(lhs) <
+ static_cast<typename basic_variant<STR, BIN, EXT>::base const&>(rhs);
+}
+
+template <typename STR, typename BIN, typename EXT>
+inline bool operator==(basic_variant<STR, BIN, EXT> const& lhs, basic_variant<STR, BIN, EXT> const& rhs) {
+ return
+ static_cast<typename basic_variant<STR, BIN, EXT>::base const&>(lhs) ==
+ static_cast<typename basic_variant<STR, BIN, EXT>::base const&>(rhs);
+}
+
+typedef basic_variant<std::string, std::vector<char>, ext> variant;
+typedef basic_variant<
+#if (BOOST_VERSION / 100000) >= 1 && ((BOOST_VERSION / 100) % 1000) >= 53
+ boost::string_ref,
+#else // (BOOST_VERSION / 100000) >= 1 && ((BOOST_VERSION / 100) % 1000) >= 53
+ std::string,
+#endif // (BOOST_VERSION / 100000) >= 1 && ((BOOST_VERSION / 100) % 1000) >= 53
+ raw_ref, ext_ref> variant_ref;
+
+} // namespace type
+
+namespace adaptor {
+
+#if !defined (MSGPACK_USE_CPP03)
+
+template <typename STR, typename BIN, typename EXT>
+struct as<type::basic_variant<STR, BIN, EXT> > {
+ type::basic_variant<STR, BIN, EXT> operator()(msgpack::object const& o) const {
+ switch(o.type) {
+ case type::NIL:
+ return o.as<msgpack::type::nil_t>();
+ case type::BOOLEAN:
+ return o.as<bool>();
+ case type::POSITIVE_INTEGER:
+ return o.as<uint64_t>();
+ case type::NEGATIVE_INTEGER:
+ return o.as<int64_t>();
+ case type::FLOAT32:
+ case type::FLOAT64:
+ return o.as<double>();
+ case type::STR:
+ return o.as<STR>();
+ case type::BIN:
+ return o.as<BIN>();
+ case type::EXT:
+ return o.as<EXT>();
+ case type::ARRAY:
+ return o.as<std::vector<type::basic_variant<STR, BIN, EXT> > >();
+ case type::MAP:
+ return o.as<std::multimap<type::basic_variant<STR, BIN, EXT>, type::basic_variant<STR, BIN, EXT> > >();
+ default:
+ break;
+ }
+ return type::basic_variant<STR, BIN, EXT>();
+ }
+};
+
+#endif // !defined (MSGPACK_USE_CPP03)
+
+
+template <typename STR, typename BIN, typename EXT>
+struct convert<type::basic_variant<STR, BIN, EXT> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::basic_variant<STR, BIN, EXT>& v) const {
+ switch(o.type) {
+ case type::NIL:
+ v = o.as<msgpack::type::nil_t>();
+ break;
+ case type::BOOLEAN:
+ v = o.as<bool>();
+ break;
+ case type::POSITIVE_INTEGER:
+ v = o.as<uint64_t>();
+ break;
+ case type::NEGATIVE_INTEGER:
+ v = o.as<int64_t>();
+ break;
+ case type::FLOAT32:
+ case type::FLOAT64:
+ v = o.as<double>();
+ break;
+ case type::STR:
+ v = o.as<STR>();
+ break;
+ case type::BIN:
+ v = o.as<BIN>();
+ break;
+ case type::EXT:
+ v = o.as<EXT>();
+ break;
+ case type::ARRAY:
+ v = o.as<std::vector<type::basic_variant<STR, BIN, EXT> > >();
+ break;
+ case type::MAP:
+ v = o.as<std::multimap<type::basic_variant<STR, BIN, EXT>, type::basic_variant<STR, BIN, EXT> > >();
+ break;
+ default:
+ break;
+ }
+ return o;
+ }
+};
+
+namespace detail {
+
+template <typename Stream>
+struct pack_imp : boost::static_visitor<void> {
+ template <typename T>
+ void operator()(T const& value) const {
+ pack<T>()(o_, value);
+ }
+ pack_imp(packer<Stream>& o):o_(o) {}
+ packer<Stream>& o_;
+};
+
+} // namespace detail
+
+template <typename STR, typename BIN, typename EXT>
+struct pack<type::basic_variant<STR, BIN, EXT> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const type::basic_variant<STR, BIN, EXT>& v) const {
+ boost::apply_visitor(detail::pack_imp<Stream>(o), v);
+ return o;
+ }
+};
+
+namespace detail {
+
+struct object_imp : boost::static_visitor<void> {
+ void operator()(msgpack::type::nil_t const& v) const {
+ object<msgpack::type::nil_t>()(o_, v);
+ }
+ void operator()(bool const& v) const {
+ object<bool>()(o_, v);
+ }
+ void operator()(uint64_t const& v) const {
+ object<uint64_t>()(o_, v);
+ }
+ void operator()(int64_t const& v) const {
+ object<int64_t>()(o_, v);
+ }
+ void operator()(double const& v) const {
+ object<double>()(o_, v);
+ }
+ template <typename T>
+ void operator()(T const&) const {
+ throw msgpack::type_error();
+ }
+ object_imp(msgpack::object& o):o_(o) {}
+ msgpack::object& o_;
+};
+
+} // namespace detail
+
+template <typename STR, typename BIN, typename EXT>
+struct object<type::basic_variant<STR, BIN, EXT> > {
+ void operator()(msgpack::object& o, const type::basic_variant<STR, BIN, EXT>& v) const {
+ boost::apply_visitor(detail::object_imp(o), v);
+ }
+};
+
+namespace detail {
+
+struct object_with_zone_imp : boost::static_visitor<void> {
+ template <typename T>
+ void operator()(T const& v) const {
+ object_with_zone<T>()(o_, v);
+ }
+ object_with_zone_imp(msgpack::object::with_zone& o):o_(o) {}
+ msgpack::object::with_zone& o_;
+};
+
+} // namespace detail
+
+template <typename STR, typename BIN, typename EXT>
+struct object_with_zone<type::basic_variant<STR, BIN, EXT> > {
+ void operator()(msgpack::object::with_zone& o, const type::basic_variant<STR, BIN, EXT>& v) const {
+ boost::apply_visitor(detail::object_with_zone_imp(o), v);
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_USE_BOOST
+#endif // MSGPACK_V1_TYPE_BOOST_MSGPACK_VARIANT_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/boost/msgpack_variant_decl.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/boost/msgpack_variant_decl.hpp
new file mode 100644
index 0000000000..2bbf91e49d
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/boost/msgpack_variant_decl.hpp
@@ -0,0 +1,62 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015-2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_BOOST_MSGPACK_VARIANT_DECL_HPP
+#define MSGPACK_V1_TYPE_BOOST_MSGPACK_VARIANT_DECL_HPP
+
+#if defined(MSGPACK_USE_BOOST)
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+#include "msgpack/adaptor/boost/string_ref.hpp"
+#include "msgpack/adaptor/ext.hpp"
+#include "msgpack/adaptor/raw.hpp"
+
+#include <string>
+#include <vector>
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace type {
+
+template <typename STR, typename BIN, typename EXT>
+struct basic_variant;
+
+template <typename STR, typename BIN, typename EXT>
+bool operator<(basic_variant<STR, BIN, EXT> const& lhs, basic_variant<STR, BIN, EXT> const& rhs);
+
+template <typename STR, typename BIN, typename EXT>
+bool operator==(basic_variant<STR, BIN, EXT> const& lhs, basic_variant<STR, BIN, EXT> const& rhs);
+
+template <typename STR, typename BIN, typename EXT>
+bool operator!=(basic_variant<STR, BIN, EXT> const& lhs, basic_variant<STR, BIN, EXT> const& rhs);
+
+typedef basic_variant<std::string, std::vector<char>, msgpack::type::ext> variant;
+typedef basic_variant<
+#if (BOOST_VERSION / 100000) >= 1 && ((BOOST_VERSION / 100) % 1000) >= 53
+ boost::string_ref,
+#else // (BOOST_VERSION / 100000) >= 1 && ((BOOST_VERSION / 100) % 1000) >= 53
+ std::string,
+#endif // (BOOST_VERSION / 100000) >= 1 && ((BOOST_VERSION / 100) % 1000) >= 53
+ msgpack::type::raw_ref, msgpack::type::ext_ref> variant_ref;
+
+} // namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_USE_BOOST
+#endif // MSGPACK_V1_TYPE_BOOST_MSGPACK_VARIANT_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/boost/optional.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/boost/optional.hpp
new file mode 100644
index 0000000000..449937a5a9
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/boost/optional.hpp
@@ -0,0 +1,96 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_BOOST_OPTIONAL_HPP
+#define MSGPACK_V1_TYPE_BOOST_OPTIONAL_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+
+// To suppress warning on Boost.1.58.0
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) || defined(__clang__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wunused-parameter"
+#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) || defined(__clang__)
+
+#include <boost/optional.hpp>
+
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) || defined(__clang__)
+#pragma GCC diagnostic pop
+#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) || defined(__clang__)
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+#if !defined (MSGPACK_USE_CPP03)
+
+template <typename T>
+struct as<boost::optional<T>, typename std::enable_if<msgpack::has_as<T>::value>::type> {
+ boost::optional<T> operator()(msgpack::object const& o) const {
+ if(o.is_nil()) return boost::none;
+ return o.as<T>();
+ }
+};
+
+#endif // !defined (MSGPACK_USE_CPP03)
+
+template <typename T>
+struct convert<boost::optional<T> > {
+ msgpack::object const& operator()(msgpack::object const& o, boost::optional<T>& v) const {
+ if(o.is_nil()) v = boost::none;
+ else {
+ T t;
+ msgpack::adaptor::convert<T>()(o, t);
+ v = t;
+ }
+ return o;
+ }
+};
+
+template <typename T>
+struct pack<boost::optional<T> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const boost::optional<T>& v) const {
+ if (v) o.pack(*v);
+ else o.pack_nil();
+ return o;
+ }
+};
+
+template <typename T>
+struct object<boost::optional<T> > {
+ void operator()(msgpack::object& o, const boost::optional<T>& v) const {
+ if (v) msgpack::adaptor::object<T>()(o, *v);
+ else o.type = msgpack::type::NIL;
+ }
+};
+
+template <typename T>
+struct object_with_zone<boost::optional<T> > {
+ void operator()(msgpack::object::with_zone& o, const boost::optional<T>& v) const {
+ if (v) msgpack::adaptor::object_with_zone<T>()(o, *v);
+ else o.type = msgpack::type::NIL;
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_BOOST_OPTIONAL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/boost/string_ref.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/boost/string_ref.hpp
new file mode 100644
index 0000000000..9af03898bf
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/boost/string_ref.hpp
@@ -0,0 +1,87 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_BOOST_STRING_REF_HPP
+#define MSGPACK_V1_TYPE_BOOST_STRING_REF_HPP
+
+#include <boost/version.hpp>
+#if (BOOST_VERSION / 100000) >= 1 && ((BOOST_VERSION / 100) % 1000) >= 53
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+
+#include <boost/utility/string_ref.hpp>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+template <>
+struct convert<boost::string_ref> {
+ msgpack::object const& operator()(msgpack::object const& o, boost::string_ref& v) const {
+ switch (o.type) {
+ case msgpack::type::BIN:
+ v = boost::string_ref(o.via.bin.ptr, o.via.bin.size);
+ break;
+ case msgpack::type::STR:
+ v = boost::string_ref(o.via.str.ptr, o.via.str.size);
+ break;
+ default:
+ throw msgpack::type_error();
+ break;
+ }
+ return o;
+ }
+};
+
+template <>
+struct pack<boost::string_ref> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const boost::string_ref& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_str(size);
+ o.pack_str_body(v.data(), size);
+ return o;
+ }
+};
+
+template <>
+struct object<boost::string_ref> {
+ void operator()(msgpack::object& o, const boost::string_ref& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.type = msgpack::type::STR;
+ o.via.str.ptr = v.data();
+ o.via.str.size = size;
+ }
+};
+
+template <>
+struct object_with_zone<boost::string_ref> {
+ void operator()(msgpack::object::with_zone& o, const boost::string_ref& v) const {
+ static_cast<msgpack::object&>(o) << v;
+ }
+};
+
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // (BOOST_VERSION / 100000) >= 1 && ((BOOST_VERSION / 100) % 1000) >= 53
+
+#endif // MSGPACK_V1_TYPE_BOOST_STRING_REF_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/boost/string_view.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/boost/string_view.hpp
new file mode 100644
index 0000000000..e3023ca329
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/boost/string_view.hpp
@@ -0,0 +1,87 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2017 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_BOOST_STRING_VIEW_HPP
+#define MSGPACK_V1_TYPE_BOOST_STRING_VIEW_HPP
+
+#include <boost/version.hpp>
+#if (BOOST_VERSION / 100000) >= 1 && ((BOOST_VERSION / 100) % 1000) >= 61
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+
+#include <boost/utility/string_view.hpp>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+template <>
+struct convert<boost::string_view> {
+ msgpack::object const& operator()(msgpack::object const& o, boost::string_view& v) const {
+ switch (o.type) {
+ case msgpack::type::BIN:
+ v = boost::string_view(o.via.bin.ptr, o.via.bin.size);
+ break;
+ case msgpack::type::STR:
+ v = boost::string_view(o.via.str.ptr, o.via.str.size);
+ break;
+ default:
+ throw msgpack::type_error();
+ break;
+ }
+ return o;
+ }
+};
+
+template <>
+struct pack<boost::string_view> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const boost::string_view& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_str(size);
+ o.pack_str_body(v.data(), size);
+ return o;
+ }
+};
+
+template <>
+struct object<boost::string_view> {
+ void operator()(msgpack::object& o, const boost::string_view& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.type = msgpack::type::STR;
+ o.via.str.ptr = v.data();
+ o.via.str.size = size;
+ }
+};
+
+template <>
+struct object_with_zone<boost::string_view> {
+ void operator()(msgpack::object::with_zone& o, const boost::string_view& v) const {
+ static_cast<msgpack::object&>(o) << v;
+ }
+};
+
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // (BOOST_VERSION / 100000) >= 1 && ((BOOST_VERSION / 100) % 1000) >= 53
+
+#endif // MSGPACK_V1_TYPE_BOOST_STRING_VIEW_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/carray.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/carray.hpp
new file mode 100644
index 0000000000..8fff446887
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/carray.hpp
@@ -0,0 +1,253 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_CARRAY_HPP
+#define MSGPACK_V1_TYPE_CARRAY_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/object_fwd.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+template <typename T, std::size_t N>
+struct convert<T[N]> {
+ msgpack::object const& operator()(msgpack::object const& o, T* v) const {
+ if (o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ if (o.via.array.size > N) { throw msgpack::type_error(); }
+ msgpack::object* p = o.via.array.ptr;
+ msgpack::object* const pend = o.via.array.ptr + o.via.array.size;
+ do {
+ p->convert(*v);
+ ++p;
+ ++v;
+ } while(p < pend);
+ return o;
+ }
+};
+
+template <std::size_t N>
+struct convert<char[N]> {
+ msgpack::object const& operator()(msgpack::object const& o, char(&v)[N]) const {
+ switch (o.type) {
+ case msgpack::type::BIN:
+ if (o.via.bin.size > N) { throw msgpack::type_error(); }
+ std::memcpy(v, o.via.bin.ptr, o.via.bin.size);
+ break;
+ case msgpack::type::STR:
+ if (o.via.str.size > N) { throw msgpack::type_error(); }
+ std::memcpy(v, o.via.str.ptr, o.via.str.size);
+ if (o.via.str.size < N) v[o.via.str.size] = '\0';
+ break;
+ default:
+ throw msgpack::type_error();
+ break;
+ }
+ return o;
+ }
+};
+
+template <std::size_t N>
+struct convert<unsigned char[N]> {
+ msgpack::object const& operator()(msgpack::object const& o, unsigned char(&v)[N]) const {
+ switch (o.type) {
+ case msgpack::type::BIN:
+ if (o.via.bin.size > N) { throw msgpack::type_error(); }
+ std::memcpy(v, o.via.bin.ptr, o.via.bin.size);
+ break;
+ case msgpack::type::STR:
+ if (o.via.str.size > N) { throw msgpack::type_error(); }
+ std::memcpy(v, o.via.str.ptr, o.via.str.size);
+ if (o.via.str.size < N) v[o.via.str.size] = '\0';
+ break;
+ default:
+ throw msgpack::type_error();
+ break;
+ }
+ return o;
+ }
+};
+
+
+template <typename T, std::size_t N>
+struct pack<T[N]> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const T(&v)[N]) const {
+ uint32_t size = checked_get_container_size(N);
+ o.pack_array(size);
+ const T* ptr = v;
+ for (; ptr != &v[N]; ++ptr) o.pack(*ptr);
+ return o;
+ }
+};
+
+template <std::size_t N>
+struct pack<char[N]> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const char(&v)[N]) const {
+ char const* p = v;
+ uint32_t size = checked_get_container_size(N);
+ char const* p2 = static_cast<char const*>(std::memchr(p, '\0', size));
+ uint32_t adjusted_size = p2 ? static_cast<uint32_t>(p2 - p) : size;
+ o.pack_str(adjusted_size);
+ o.pack_str_body(p, adjusted_size);
+ return o;
+ }
+};
+
+template <std::size_t N>
+struct pack<const char[N]> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const char(&v)[N]) const {
+ uint32_t size = checked_get_container_size(N);
+ char const* p = v;
+ char const* p2 = static_cast<char const*>(std::memchr(p, '\0', size));
+ uint32_t adjusted_size = p2 ? static_cast<uint32_t>(p2 - p) : size;
+ o.pack_str(adjusted_size);
+ o.pack_str_body(p, adjusted_size);
+ return o;
+ }
+};
+
+template <std::size_t N>
+struct pack<unsigned char[N]> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const unsigned char(&v)[N]) const {
+ unsigned char const* p = v;
+ uint32_t size = checked_get_container_size(N);
+ o.pack_bin(size);
+ o.pack_bin_body(reinterpret_cast<char const*>(p), size);
+ return o;
+ }
+};
+
+template <std::size_t N>
+struct pack<const unsigned char[N]> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const unsigned char(&v)[N]) const {
+ unsigned char const* p = v;
+ uint32_t size = checked_get_container_size(N);
+ o.pack_bin(size);
+ o.pack_bin_body(reinterpret_cast<char const*>(p), size);
+ return o;
+ }
+};
+
+template <typename T, std::size_t N>
+struct object_with_zone<T[N]> {
+ void operator()(msgpack::object::with_zone& o, const T(&v)[N]) const {
+ uint32_t size = checked_get_container_size(N);
+ o.type = msgpack::type::ARRAY;
+ msgpack::object* ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object) * size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.ptr = ptr;
+ o.via.array.size = size;
+ const T* pv = v;
+ for (; pv != &v[size]; ++pv) {
+ *ptr++ = msgpack::object(*pv, o.zone);
+ }
+ }
+};
+
+template <std::size_t N>
+struct object_with_zone<char[N]> {
+ void operator()(msgpack::object::with_zone& o, const char(&v)[N]) const {
+ char const* p = v;
+ uint32_t size = checked_get_container_size(N);
+ char const* p2 = static_cast<char const*>(std::memchr(p, '\0', size));
+ uint32_t adjusted_size = p2 ? static_cast<uint32_t>(p2 - p) : size;
+ o.type = msgpack::type::STR;
+ char* ptr = static_cast<char*>(o.zone.allocate_align(adjusted_size, MSGPACK_ZONE_ALIGNOF(char)));
+ o.via.str.ptr = ptr;
+ o.via.str.size = adjusted_size;
+ std::memcpy(ptr, p, adjusted_size);
+ }
+};
+
+template <std::size_t N>
+struct object_with_zone<const char[N]> {
+ void operator()(msgpack::object::with_zone& o, const char(&v)[N]) const {
+ char const* p = v;
+ uint32_t size = checked_get_container_size(N);
+ char const* p2 = static_cast<char const*>(std::memchr(p, '\0', size));
+ uint32_t adjusted_size = p2 ? static_cast<uint32_t>(p2 - p) : size;
+ o.type = msgpack::type::STR;
+ char* ptr = static_cast<char*>(o.zone.allocate_align(adjusted_size, MSGPACK_ZONE_ALIGNOF(char)));
+ o.via.str.ptr = ptr;
+ o.via.str.size = adjusted_size;
+ std::memcpy(ptr, p, adjusted_size);
+ }
+};
+
+template <std::size_t N>
+struct object_with_zone<unsigned char[N]> {
+ void operator()(msgpack::object::with_zone& o, const unsigned char(&v)[N]) const {
+ uint32_t size = checked_get_container_size(N);
+ o.type = msgpack::type::BIN;
+ char* ptr = static_cast<char*>(o.zone.allocate_align(size, MSGPACK_ZONE_ALIGNOF(char)));
+ o.via.bin.ptr = ptr;
+ o.via.bin.size = size;
+ std::memcpy(ptr, v, size);
+ }
+};
+
+template <std::size_t N>
+struct object_with_zone<const unsigned char[N]> {
+ void operator()(msgpack::object::with_zone& o, const unsigned char(&v)[N]) const {
+ uint32_t size = checked_get_container_size(N);
+ o.type = msgpack::type::BIN;
+ char* ptr = static_cast<char*>(o.zone.allocate_align(size, MSGPACK_ZONE_ALIGNOF(char)));
+ o.via.bin.ptr = ptr;
+ o.via.bin.size = size;
+ std::memcpy(ptr, v, size);
+ }
+};
+
+template <std::size_t N>
+struct object<char[N]> {
+ void operator()(msgpack::object& o, const char(&v)[N]) const {
+ char const* p = v;
+ uint32_t size = checked_get_container_size(N);
+ char const* p2 = static_cast<char const*>(std::memchr(p, '\0', size));
+ uint32_t adjusted_size = p2 ? static_cast<uint32_t>(p2 - p) : size;
+ o.type = msgpack::type::STR;
+ o.via.str.ptr = p;
+ o.via.str.size = adjusted_size;
+ }
+};
+
+template <std::size_t N>
+struct object<const char[N]> {
+ void operator()(msgpack::object& o, const char(&v)[N]) const {
+ char const* p = v;
+ uint32_t size = checked_get_container_size(N);
+ char const* p2 = static_cast<char const*>(std::memchr(p, '\0', size));
+ uint32_t adjusted_size = p2 ? static_cast<uint32_t>(p2 - p) : size;
+ o.type = msgpack::type::STR;
+ o.via.str.ptr = p;
+ o.via.str.size = adjusted_size;
+ }
+};
+
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_CARRAY_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/char_ptr.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/char_ptr.hpp
new file mode 100644
index 0000000000..a405fa3c3b
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/char_ptr.hpp
@@ -0,0 +1,92 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2014-2015 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_CHAR_PTR_HPP
+#define MSGPACK_V1_TYPE_CHAR_PTR_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/object_fwd.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+
+#include <cstring>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+template <>
+struct pack<const char*> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const char* v) const {
+ uint32_t size = checked_get_container_size(std::strlen(v));
+ o.pack_str(size);
+ o.pack_str_body(v, size);
+ return o;
+ }
+};
+
+template <>
+struct object_with_zone<const char*> {
+ void operator()(msgpack::object::with_zone& o, const char* v) const {
+ uint32_t size = checked_get_container_size(std::strlen(v));
+ o.type = msgpack::type::STR;
+ char* ptr = static_cast<char*>(o.zone.allocate_align(size, MSGPACK_ZONE_ALIGNOF(char)));
+ o.via.str.ptr = ptr;
+ o.via.str.size = size;
+ std::memcpy(ptr, v, size);
+ }
+};
+
+template <>
+struct object<const char*> {
+ void operator()(msgpack::object& o, const char* v) const {
+ uint32_t size = checked_get_container_size(std::strlen(v));
+ o.type = msgpack::type::STR;
+ o.via.str.ptr = v;
+ o.via.str.size = size;
+ }
+};
+
+
+template <>
+struct pack<char*> {
+ template <typename Stream>
+ packer<Stream>& operator()(packer<Stream>& o, char* v) const {
+ return o << static_cast<const char*>(v);
+ }
+};
+
+template <>
+struct object_with_zone<char*> {
+ void operator()(msgpack::object::with_zone& o, char* v) const {
+ o << static_cast<const char*>(v);
+ }
+};
+
+template <>
+struct object<char*> {
+ void operator()(msgpack::object& o, char* v) const {
+ o << static_cast<const char*>(v);
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_CHAR_PTR_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/check_container_size.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/check_container_size.hpp
new file mode 100644
index 0000000000..3f8409ab58
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/check_container_size.hpp
@@ -0,0 +1,67 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_CHECK_CONTAINER_SIZE_HPP
+#define MSGPACK_V1_CHECK_CONTAINER_SIZE_HPP
+
+#include "msgpack/v1/adaptor/check_container_size_decl.hpp"
+#include <stdexcept>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+struct container_size_overflow : public std::runtime_error {
+ explicit container_size_overflow(const std::string& msg)
+ :std::runtime_error(msg) {}
+#if !defined(MSGPACK_USE_CPP03)
+ explicit container_size_overflow(const char* msg):
+ std::runtime_error(msg) {}
+#endif // !defined(MSGPACK_USE_CPP03)
+};
+
+namespace detail {
+
+template <std::size_t N>
+inline void check_container_size(std::size_t size) {
+ if (size > 0xffffffff) throw container_size_overflow("container size overflow");
+}
+
+template <>
+inline void check_container_size<4>(std::size_t /*size*/) {
+}
+
+template <std::size_t N>
+inline void check_container_size_for_ext(std::size_t size) {
+ if (size > 0xffffffff) throw container_size_overflow("container size overflow");
+}
+
+template <>
+inline void check_container_size_for_ext<4>(std::size_t size) {
+ if (size > 0xfffffffe) throw container_size_overflow("container size overflow");
+}
+
+} // namespace detail
+
+template <typename T>
+inline uint32_t checked_get_container_size(T size) {
+ detail::check_container_size<sizeof(T)>(size);
+ return static_cast<uint32_t>(size);
+}
+
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_CHECK_CONTAINER_SIZE_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/check_container_size_decl.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/check_container_size_decl.hpp
new file mode 100644
index 0000000000..7d06c4b82f
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/check_container_size_decl.hpp
@@ -0,0 +1,44 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015-2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_CHECK_CONTAINER_SIZE_DECL_HPP
+#define MSGPACK_V1_CHECK_CONTAINER_SIZE_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+#include <cstdlib>
+#include "msgpack/sysdep.h"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+struct container_size_overflow;
+
+namespace detail {
+
+template <std::size_t N>
+inline void check_container_size(std::size_t size);
+
+template <std::size_t N>
+inline void check_container_size_for_ext(std::size_t size);
+
+} // namespace detail
+
+template <typename T>
+inline uint32_t checked_get_container_size(T size);
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_CHECK_CONTAINER_SIZE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/array.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/array.hpp
new file mode 100644
index 0000000000..1a5ba36bb0
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/array.hpp
@@ -0,0 +1,138 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2014-2015 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_V1_TYPE_CPP11_ARRAY_HPP
+#define MSGPACK_V1_TYPE_CPP11_ARRAY_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+#include "msgpack/meta.hpp"
+
+#include <array>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+namespace detail {
+
+namespace array {
+
+template<typename T, std::size_t N1, std::size_t... I1, std::size_t N2, std::size_t... I2>
+inline std::array<T, N1+N2> concat(
+ std::array<T, N1>&& a1,
+ std::array<T, N2>&& a2,
+ msgpack::seq<I1...>,
+ msgpack::seq<I2...>) {
+ return {{ std::move(a1[I1])..., std::move(a2[I2])... }};
+}
+
+template<typename T, std::size_t N1, std::size_t N2>
+inline std::array<T, N1+N2> concat(std::array<T, N1>&& a1, std::array<T, N2>&& a2) {
+ return concat(std::move(a1), std::move(a2), msgpack::gen_seq<N1>(), msgpack::gen_seq<N2>());
+}
+
+template <typename T, std::size_t N>
+struct as_impl {
+ static std::array<T, N> as(msgpack::object const& o) {
+ msgpack::object* p = o.via.array.ptr + N - 1;
+ return concat(as_impl<T, N-1>::as(o), std::array<T, 1>{{p->as<T>()}});
+ }
+};
+
+template <typename T>
+struct as_impl<T, 1> {
+ static std::array<T, 1> as(msgpack::object const& o) {
+ msgpack::object* p = o.via.array.ptr;
+ return std::array<T, 1>{{p->as<T>()}};
+ }
+};
+
+template <typename T>
+struct as_impl<T, 0> {
+ static std::array<T, 0> as(msgpack::object const&) {
+ return std::array<T, 0>();
+ }
+};
+
+} // namespace array
+
+} // namespace detail
+
+template <typename T, std::size_t N>
+struct as<std::array<T, N>, typename std::enable_if<msgpack::has_as<T>::value>::type> {
+ std::array<T, N> operator()(msgpack::object const& o) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ if(o.via.array.size > N) { throw msgpack::type_error(); }
+ return detail::array::as_impl<T, N>::as(o);
+ }
+};
+
+template <typename T, std::size_t N>
+struct convert<std::array<T, N>> {
+ msgpack::object const& operator()(msgpack::object const& o, std::array<T, N>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ if(o.via.array.size > N) { throw msgpack::type_error(); }
+ if(o.via.array.size > 0) {
+ msgpack::object* p = o.via.array.ptr;
+ msgpack::object* const pend = o.via.array.ptr + o.via.array.size;
+ T* it = &v[0];
+ do {
+ p->convert(*it);
+ ++p;
+ ++it;
+ } while(p < pend);
+ }
+ return o;
+ }
+};
+
+template <typename T, std::size_t N>
+struct pack<std::array<T, N>> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::array<T, N>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_array(size);
+ for(auto const& e : v) o.pack(e);
+ return o;
+ }
+};
+
+template <typename T, std::size_t N>
+struct object_with_zone<std::array<T, N>> {
+ void operator()(msgpack::object::with_zone& o, const std::array<T, N>& v) const {
+ o.type = msgpack::type::ARRAY;
+ if(v.empty()) {
+ o.via.array.ptr = MSGPACK_NULLPTR;
+ o.via.array.size = 0;
+ } else {
+ uint32_t size = checked_get_container_size(v.size());
+ msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = size;
+ o.via.array.ptr = p;
+ for (auto const& e : v) *p++ = msgpack::object(e, o.zone);
+ }
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_CPP11_ARRAY_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/array_char.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/array_char.hpp
new file mode 100644
index 0000000000..865e77eb53
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/array_char.hpp
@@ -0,0 +1,97 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2014-2015 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_CPP11_ARRAY_CHAR_HPP
+#define MSGPACK_V1_TYPE_CPP11_ARRAY_CHAR_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+
+#include <array>
+#include <cstring>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+template <std::size_t N>
+struct convert<std::array<char, N>> {
+ msgpack::object const& operator()(msgpack::object const& o, std::array<char, N>& v) const {
+ switch (o.type) {
+ case msgpack::type::BIN:
+ if(o.via.bin.size > N) { throw msgpack::type_error(); }
+ std::memcpy(v.data(), o.via.bin.ptr, o.via.bin.size);
+ break;
+ case msgpack::type::STR:
+ if(o.via.str.size > N) { throw msgpack::type_error(); }
+ std::memcpy(v.data(), o.via.str.ptr, N);
+ break;
+ default:
+ throw msgpack::type_error();
+ break;
+ }
+ return o;
+ }
+};
+
+template <>
+struct convert<std::array<char, 0>> {
+ msgpack::object const& operator()(msgpack::object const& o, std::array<char, 0>&) const {
+ return o;
+ }
+};
+
+template <std::size_t N>
+struct pack<std::array<char, N>> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::array<char, N>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_bin(size);
+ o.pack_bin_body(v.data(), size);
+
+ return o;
+ }
+};
+
+template <std::size_t N>
+struct object<std::array<char, N>> {
+ void operator()(msgpack::object& o, const std::array<char, N>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.type = msgpack::type::BIN;
+ o.via.bin.ptr = v.data();
+ o.via.bin.size = size;
+ }
+};
+
+template <std::size_t N>
+struct object_with_zone<std::array<char, N>> {
+ void operator()(msgpack::object::with_zone& o, const std::array<char, N>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.type = msgpack::type::BIN;
+ char* ptr = static_cast<char*>(o.zone.allocate_align(size, MSGPACK_ZONE_ALIGNOF(char)));
+ o.via.bin.ptr = ptr;
+ o.via.bin.size = size;
+ std::memcpy(ptr, v.data(), size);
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_CPP11_ARRAY_CHAR_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/array_unsigned_char.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/array_unsigned_char.hpp
new file mode 100644
index 0000000000..5b35d15f70
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/array_unsigned_char.hpp
@@ -0,0 +1,97 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2014-2015 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_CPP11_ARRAY_UNSIGNED_CHAR_HPP
+#define MSGPACK_V1_TYPE_CPP11_ARRAY_UNSIGNED_CHAR_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+
+#include <array>
+#include <cstring>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+template <std::size_t N>
+struct convert<std::array<unsigned char, N>> {
+ msgpack::object const& operator()(msgpack::object const& o, std::array<unsigned char, N>& v) const {
+ switch (o.type) {
+ case msgpack::type::BIN:
+ if(o.via.bin.size > N) { throw msgpack::type_error(); }
+ std::memcpy(v.data(), o.via.bin.ptr, o.via.bin.size);
+ break;
+ case msgpack::type::STR:
+ if(o.via.str.size > N) { throw msgpack::type_error(); }
+ std::memcpy(v.data(), o.via.str.ptr, N);
+ break;
+ default:
+ throw msgpack::type_error();
+ break;
+ }
+ return o;
+ }
+};
+
+template <>
+struct convert<std::array<unsigned char, 0>> {
+ msgpack::object const& operator()(msgpack::object const& o, std::array<unsigned char, 0>&) const {
+ return o;
+ }
+};
+
+template <std::size_t N>
+struct pack<std::array<unsigned char, N>> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::array<unsigned char, N>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_bin(size);
+ o.pack_bin_body(reinterpret_cast<char const*>(v.data()), size);
+
+ return o;
+ }
+};
+
+template <std::size_t N>
+struct object<std::array<unsigned char, N>> {
+ void operator()(msgpack::object& o, const std::array<unsigned char, N>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.type = msgpack::type::BIN;
+ o.via.bin.ptr = reinterpret_cast<char const*>(v.data());
+ o.via.bin.size = size;
+ }
+};
+
+template <std::size_t N>
+struct object_with_zone<std::array<unsigned char, N>> {
+ void operator()(msgpack::object::with_zone& o, const std::array<unsigned char, N>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.type = msgpack::type::BIN;
+ char* ptr = static_cast<char*>(o.zone.allocate_align(size, MSGPACK_ZONE_ALIGNOF(char)));
+ o.via.bin.ptr = ptr;
+ o.via.bin.size = size;
+ std::memcpy(ptr, v.data(), size);
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_CPP11_ARRAY_UNSIGNED_CHAR_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/chrono.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/chrono.hpp
new file mode 100644
index 0000000000..1e08355e60
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/chrono.hpp
@@ -0,0 +1,215 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2017 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_V1_TYPE_CPP11_CHRONO_HPP
+#define MSGPACK_V1_TYPE_CPP11_CHRONO_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+
+#include <chrono>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+template <>
+struct as<std::chrono::system_clock::time_point> {
+ typename std::chrono::system_clock::time_point operator()(msgpack::object const& o) const {
+ if(o.type != msgpack::type::EXT) { throw msgpack::type_error(); }
+ if(o.via.ext.type() != -1) { throw msgpack::type_error(); }
+ std::chrono::system_clock::time_point tp;
+ switch(o.via.ext.size) {
+ case 4: {
+ uint32_t sec;
+ _msgpack_load32(uint32_t, o.via.ext.data(), &sec);
+ tp += std::chrono::seconds(sec);
+ } break;
+ case 8: {
+ uint64_t value;
+ _msgpack_load64(uint64_t, o.via.ext.data(), &value);
+ uint32_t nanosec = static_cast<uint32_t>(value >> 34);
+ uint64_t sec = value & 0x00000003ffffffffL;
+ tp += std::chrono::duration_cast<std::chrono::system_clock::duration>(
+ std::chrono::nanoseconds(nanosec));
+ tp += std::chrono::seconds(sec);
+ } break;
+ case 12: {
+ uint32_t nanosec;
+ _msgpack_load32(uint32_t, o.via.ext.data(), &nanosec);
+ int64_t sec;
+ _msgpack_load64(int64_t, o.via.ext.data() + 4, &sec);
+ tp += std::chrono::duration_cast<std::chrono::system_clock::duration>(
+ std::chrono::nanoseconds(nanosec));
+ tp += std::chrono::seconds(sec);
+ } break;
+ default:
+ throw msgpack::type_error();
+ }
+ return tp;
+ }
+};
+
+template <>
+struct convert<std::chrono::system_clock::time_point> {
+ msgpack::object const& operator()(msgpack::object const& o, std::chrono::system_clock::time_point& v) const {
+ if(o.type != msgpack::type::EXT) { throw msgpack::type_error(); }
+ if(o.via.ext.type() != -1) { throw msgpack::type_error(); }
+ std::chrono::system_clock::time_point tp;
+ switch(o.via.ext.size) {
+ case 4: {
+ uint32_t sec;
+ _msgpack_load32(uint32_t, o.via.ext.data(), &sec);
+ tp += std::chrono::seconds(sec);
+ v = tp;
+ } break;
+ case 8: {
+ uint64_t value;
+ _msgpack_load64(uint64_t, o.via.ext.data(), &value);
+ uint32_t nanosec = static_cast<uint32_t>(value >> 34);
+ uint64_t sec = value & 0x00000003ffffffffL;
+ tp += std::chrono::duration_cast<std::chrono::system_clock::duration>(
+ std::chrono::nanoseconds(nanosec));
+ tp += std::chrono::seconds(sec);
+ v = tp;
+ } break;
+ case 12: {
+ uint32_t nanosec;
+ _msgpack_load32(uint32_t, o.via.ext.data(), &nanosec);
+ int64_t sec;
+ _msgpack_load64(int64_t, o.via.ext.data() + 4, &sec);
+ tp += std::chrono::duration_cast<std::chrono::system_clock::duration>(
+ std::chrono::nanoseconds(nanosec));
+ tp += std::chrono::seconds(sec);
+ v = tp;
+ } break;
+ default:
+ throw msgpack::type_error();
+ }
+ return o;
+ }
+};
+
+template <>
+struct pack<std::chrono::system_clock::time_point> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::chrono::system_clock::time_point& v) const {
+ int64_t count = static_cast<int64_t>(v.time_since_epoch().count());
+
+ int64_t nano_num =
+ std::chrono::system_clock::duration::period::ratio::num *
+ (1000000000 / std::chrono::system_clock::duration::period::ratio::den);
+
+ int64_t nanosec = count % (1000000000 / nano_num) * nano_num;
+ int64_t sec = 0;
+ if (nanosec < 0) {
+ nanosec = 1000000000 + nanosec;
+ --sec;
+ }
+ sec += count
+ * std::chrono::system_clock::duration::period::ratio::num
+ / std::chrono::system_clock::duration::period::ratio::den;
+ if ((sec >> 34) == 0) {
+ uint64_t data64 = (nanosec << 34) | sec;
+ if ((data64 & 0xffffffff00000000L) == 0) {
+ // timestamp 32
+ o.pack_ext(4, -1);
+ uint32_t data32 = static_cast<uint32_t>(data64);
+ char buf[4];
+ _msgpack_store32(buf, data32);
+ o.pack_ext_body(buf, 4);
+ }
+ else {
+ // timestamp 64
+ o.pack_ext(8, -1);
+ char buf[8];
+ _msgpack_store64(buf, data64);
+ o.pack_ext_body(buf, 8);
+ }
+ }
+ else {
+ // timestamp 96
+ o.pack_ext(12, -1);
+ char buf[12];
+ _msgpack_store32(&buf[0], static_cast<uint32_t>(nanosec));
+ _msgpack_store64(&buf[4], sec);
+ o.pack_ext_body(buf, 12);
+ }
+ return o;
+ }
+};
+
+template <>
+struct object_with_zone<std::chrono::system_clock::time_point> {
+ void operator()(msgpack::object::with_zone& o, const std::chrono::system_clock::time_point& v) const {
+ int64_t count = static_cast<int64_t>(v.time_since_epoch().count());
+
+ int64_t nano_num =
+ std::chrono::system_clock::duration::period::ratio::num *
+ (1000000000 / std::chrono::system_clock::duration::period::ratio::den);
+
+ int64_t nanosec = count % (1000000000 / nano_num) * nano_num;
+ int64_t sec = 0;
+ if (nanosec < 0) {
+ nanosec = 1000000000 + nanosec;
+ --sec;
+ }
+ sec += count
+ * std::chrono::system_clock::duration::period::ratio::num
+ / std::chrono::system_clock::duration::period::ratio::den;
+ if ((sec >> 34) == 0) {
+ uint64_t data64 = (nanosec << 34) | sec;
+ if ((data64 & 0xffffffff00000000L) == 0) {
+ // timestamp 32
+ o.type = msgpack::type::EXT;
+ o.via.ext.size = 4;
+ char* p = static_cast<char*>(o.zone.allocate_no_align(o.via.ext.size + 1));
+ p[0] = -1;
+ uint32_t data32 = static_cast<uint32_t>(data64);
+ _msgpack_store32(&p[1], data32);
+ o.via.ext.ptr = p;
+ }
+ else {
+ // timestamp 64
+ o.type = msgpack::type::EXT;
+ o.via.ext.size = 8;
+ char* p = static_cast<char*>(o.zone.allocate_no_align(o.via.ext.size + 1));
+ p[0] = -1;
+ _msgpack_store64(&p[1], data64);
+ o.via.ext.ptr = p;
+ }
+ }
+ else {
+ // timestamp 96
+ o.type = msgpack::type::EXT;
+ o.via.ext.size = 12;
+ char* p = static_cast<char*>(o.zone.allocate_no_align(o.via.ext.size + 1));
+ p[0] = -1;
+ _msgpack_store32(&p[1], static_cast<uint32_t>(nanosec));
+ _msgpack_store64(&p[1 + 4], sec);
+ o.via.ext.ptr = p;
+ }
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_CPP11_CHRONO_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/forward_list.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/forward_list.hpp
new file mode 100644
index 0000000000..c207c04725
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/forward_list.hpp
@@ -0,0 +1,94 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2014 KONDO-2015 Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_V1_TYPE_CPP11_FORWARD_LIST_HPP
+#define MSGPACK_V1_TYPE_CPP11_FORWARD_LIST_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+
+#include <forward_list>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+template <typename T, typename Alloc>
+ struct as<std::forward_list<T, Alloc>, typename std::enable_if<msgpack::has_as<T>::value>::type> {
+ std::forward_list<T, Alloc> operator()(msgpack::object const& o) const {
+ if (o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ std::forward_list<T, Alloc> v;
+ msgpack::object* p = o.via.array.ptr + o.via.array.size;
+ msgpack::object* const pend = o.via.array.ptr;
+ while (p != pend) {
+ --p;
+ v.push_front(p->as<T>());
+ }
+ return v;
+ }
+};
+
+template <typename T, typename Alloc>
+struct convert<std::forward_list<T, Alloc>> {
+ msgpack::object const& operator()(msgpack::object const& o, std::forward_list<T, Alloc>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ v.resize(o.via.array.size);
+ msgpack::object* p = o.via.array.ptr;
+ for (auto &e : v) {
+ p->convert(e);
+ ++p;
+ }
+ return o;
+ }
+};
+
+template <typename T, typename Alloc>
+struct pack<std::forward_list<T, Alloc>> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::forward_list<T, Alloc>& v) const {
+ uint32_t size = checked_get_container_size(std::distance(v.begin(), v.end()));
+ o.pack_array(size);
+ for(auto const& e : v) o.pack(e);
+ return o;
+ }
+};
+
+template <typename T, typename Alloc>
+struct object_with_zone<std::forward_list<T, Alloc>> {
+ void operator()(msgpack::object::with_zone& o, const std::forward_list<T, Alloc>& v) const {
+ o.type = msgpack::type::ARRAY;
+ if(v.empty()) {
+ o.via.array.ptr = MSGPACK_NULLPTR;
+ o.via.array.size = 0;
+ } else {
+ uint32_t size = checked_get_container_size(std::distance(v.begin(), v.end()));
+ o.via.array.size = size;
+ msgpack::object* p = static_cast<msgpack::object*>(
+ o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.ptr = p;
+ for(auto const& e : v) *p++ = msgpack::object(e, o.zone);
+ }
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_CPP11_FORWARD_LIST_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/reference_wrapper.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/reference_wrapper.hpp
new file mode 100644
index 0000000000..02abe8376d
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/reference_wrapper.hpp
@@ -0,0 +1,68 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_V1_TYPE_CPP11_REFERENCE_WRAPPER_HPP
+#define MSGPACK_V1_TYPE_CPP11_REFERENCE_WRAPPER_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+
+#include <memory>
+#include <type_traits>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+template <typename T>
+struct convert<std::reference_wrapper<T>> {
+ msgpack::object const& operator()(msgpack::object const& o, std::reference_wrapper<T>& v) const {
+ msgpack::adaptor::convert<T>()(o, v.get());
+ return o;
+ }
+};
+
+template <typename T>
+struct pack<std::reference_wrapper<T>> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::reference_wrapper<T>& v) const {
+ o.pack(v.get());
+ return o;
+ }
+};
+
+template <typename T>
+struct object<std::reference_wrapper<T> > {
+ void operator()(msgpack::object& o, const std::reference_wrapper<T>& v) const {
+ msgpack::adaptor::object<typename std::remove_const<T>::type>()(o, v.get());
+ }
+};
+
+template <typename T>
+struct object_with_zone<std::reference_wrapper<T>> {
+ void operator()(msgpack::object::with_zone& o, const std::reference_wrapper<T>& v) const {
+ msgpack::adaptor::object_with_zone<typename std::remove_const<T>::type>()(o, v.get());
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_CPP11_REFERENCE_WRAPPER_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/shared_ptr.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/shared_ptr.hpp
new file mode 100644
index 0000000000..f11d63d983
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/shared_ptr.hpp
@@ -0,0 +1,82 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_V1_TYPE_CPP11_SHARED_PTR_HPP
+#define MSGPACK_V1_TYPE_CPP11_SHARED_PTR_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+
+#include <memory>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+template <typename T>
+struct as<std::shared_ptr<T>, typename std::enable_if<msgpack::has_as<T>::value>::type> {
+ std::shared_ptr<T> operator()(msgpack::object const& o) const {
+ if(o.is_nil()) return MSGPACK_NULLPTR;
+ return std::make_shared<T>(o.as<T>());
+ }
+};
+
+template <typename T>
+struct convert<std::shared_ptr<T>> {
+ msgpack::object const& operator()(msgpack::object const& o, std::shared_ptr<T>& v) const {
+ if(o.is_nil()) v.reset();
+ else {
+ v = std::make_shared<T>();
+ msgpack::adaptor::convert<T>()(o, *v);
+ }
+ return o;
+ }
+};
+
+template <typename T>
+struct pack<std::shared_ptr<T>> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::shared_ptr<T>& v) const {
+ if (v) o.pack(*v);
+ else o.pack_nil();
+ return o;
+ }
+};
+
+template <typename T>
+struct object<std::shared_ptr<T> > {
+ void operator()(msgpack::object& o, const std::shared_ptr<T>& v) const {
+ if (v) msgpack::adaptor::object<T>()(o, *v);
+ else o.type = msgpack::type::NIL;
+ }
+};
+
+template <typename T>
+struct object_with_zone<std::shared_ptr<T>> {
+ void operator()(msgpack::object::with_zone& o, const std::shared_ptr<T>& v) const {
+ if (v) msgpack::adaptor::object_with_zone<T>()(o, *v);
+ else o.type = msgpack::type::NIL;
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_CPP11_SHARED_PTR_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/tuple.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/tuple.hpp
new file mode 100644
index 0000000000..08b14f5c4a
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/tuple.hpp
@@ -0,0 +1,175 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2015 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_CPP11_TUPLE_HPP
+#define MSGPACK_V1_TYPE_CPP11_TUPLE_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+#include "msgpack/meta.hpp"
+
+#include <tuple>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+// --- Pack from tuple to packer stream ---
+template <typename Stream, typename Tuple, std::size_t N>
+struct StdTuplePacker {
+ static void pack(
+ msgpack::packer<Stream>& o,
+ const Tuple& v) {
+ StdTuplePacker<Stream, Tuple, N-1>::pack(o, v);
+ o.pack(std::get<N-1>(v));
+ }
+};
+
+template <typename Stream, typename Tuple>
+struct StdTuplePacker<Stream, Tuple, 0> {
+ static void pack (
+ msgpack::packer<Stream>&,
+ const Tuple&) {
+ }
+};
+
+namespace adaptor {
+
+template <typename... Args>
+struct pack<std::tuple<Args...>> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const std::tuple<Args...>& v) const {
+ uint32_t size = checked_get_container_size(sizeof...(Args));
+ o.pack_array(size);
+ StdTuplePacker<Stream, decltype(v), sizeof...(Args)>::pack(o, v);
+ return o;
+ }
+};
+
+} // namespace adaptor
+
+// --- Convert from tuple to object ---
+
+template <typename... Args>
+struct StdTupleAs;
+
+template <typename T, typename... Args>
+struct StdTupleAsImpl {
+ static std::tuple<T, Args...> as(msgpack::object const& o) {
+ return std::tuple_cat(
+ std::make_tuple(o.via.array.ptr[o.via.array.size - sizeof...(Args) - 1].as<T>()),
+ StdTupleAs<Args...>::as(o));
+ }
+};
+
+template <typename... Args>
+struct StdTupleAs {
+ static std::tuple<Args...> as(msgpack::object const& o) {
+ return StdTupleAsImpl<Args...>::as(o);
+ }
+};
+
+template <>
+struct StdTupleAs<> {
+ static std::tuple<> as (msgpack::object const&) {
+ return std::tuple<>();
+ }
+};
+
+template <typename Tuple, std::size_t N>
+struct StdTupleConverter {
+ static void convert(
+ msgpack::object const& o,
+ Tuple& v) {
+ StdTupleConverter<Tuple, N-1>::convert(o, v);
+ if (o.via.array.size >= N)
+ o.via.array.ptr[N-1].convert<typename std::remove_reference<decltype(std::get<N-1>(v))>::type>(std::get<N-1>(v));
+ }
+};
+
+template <typename Tuple>
+struct StdTupleConverter<Tuple, 0> {
+ static void convert (
+ msgpack::object const&,
+ Tuple&) {
+ }
+};
+
+namespace adaptor {
+
+template <typename... Args>
+struct as<std::tuple<Args...>, typename std::enable_if<msgpack::any_of<msgpack::has_as, Args...>::value>::type> {
+ std::tuple<Args...> operator()(
+ msgpack::object const& o) const {
+ if (o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ return StdTupleAs<Args...>::as(o);
+ }
+};
+
+template <typename... Args>
+struct convert<std::tuple<Args...>> {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ std::tuple<Args...>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ StdTupleConverter<decltype(v), sizeof...(Args)>::convert(o, v);
+ return o;
+ }
+};
+
+} // namespace adaptor
+
+// --- Convert from tuple to object with zone ---
+template <typename Tuple, std::size_t N>
+struct StdTupleToObjectWithZone {
+ static void convert(
+ msgpack::object::with_zone& o,
+ const Tuple& v) {
+ StdTupleToObjectWithZone<Tuple, N-1>::convert(o, v);
+ o.via.array.ptr[N-1] = msgpack::object(std::get<N-1>(v), o.zone);
+ }
+};
+
+template <typename Tuple>
+struct StdTupleToObjectWithZone<Tuple, 0> {
+ static void convert (
+ msgpack::object::with_zone&,
+ const Tuple&) {
+ }
+};
+
+namespace adaptor {
+
+template <typename... Args>
+struct object_with_zone<std::tuple<Args...>> {
+ void operator()(
+ msgpack::object::with_zone& o,
+ std::tuple<Args...> const& v) const {
+ uint32_t size = checked_get_container_size(sizeof...(Args));
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = size;
+ StdTupleToObjectWithZone<decltype(v), sizeof...(Args)>::convert(o, v);
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_CPP11_TUPLE_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/unique_ptr.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/unique_ptr.hpp
new file mode 100644
index 0000000000..a175a84e53
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/unique_ptr.hpp
@@ -0,0 +1,82 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_V1_TYPE_CPP11_UNIQUE_PTR_HPP
+#define MSGPACK_V1_TYPE_CPP11_UNIQUE_PTR_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+
+#include <memory>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+template <typename T>
+struct as<std::unique_ptr<T>, typename std::enable_if<msgpack::has_as<T>::value>::type> {
+ std::unique_ptr<T> operator()(msgpack::object const& o) const {
+ if(o.is_nil()) return MSGPACK_NULLPTR;
+ return std::unique_ptr<T>(new T(o.as<T>()));
+ }
+};
+
+template <typename T>
+struct convert<std::unique_ptr<T>> {
+ msgpack::object const& operator()(msgpack::object const& o, std::unique_ptr<T>& v) const {
+ if(o.is_nil()) v.reset();
+ else {
+ v.reset(new T);
+ msgpack::adaptor::convert<T>()(o, *v);
+ }
+ return o;
+ }
+};
+
+template <typename T>
+struct pack<std::unique_ptr<T>> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::unique_ptr<T>& v) const {
+ if (v) o.pack(*v);
+ else o.pack_nil();
+ return o;
+ }
+};
+
+template <typename T>
+struct object<std::unique_ptr<T> > {
+ void operator()(msgpack::object& o, const std::unique_ptr<T>& v) const {
+ if (v) msgpack::adaptor::object<T>()(o, *v);
+ else o.type = msgpack::type::NIL;
+ }
+};
+
+template <typename T>
+struct object_with_zone<std::unique_ptr<T>> {
+ void operator()(msgpack::object::with_zone& o, const std::unique_ptr<T>& v) const {
+ if (v) msgpack::adaptor::object_with_zone<T>()(o, *v);
+ else o.type = msgpack::type::NIL;
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_CPP11_UNIQUE_PTR_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/unordered_map.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/unordered_map.hpp
new file mode 100644
index 0000000000..bcd8fddc96
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/unordered_map.hpp
@@ -0,0 +1,182 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2014-2015 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_CPP11_UNORDERED_MAP_HPP
+#define MSGPACK_V1_TYPE_CPP11_UNORDERED_MAP_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+
+#include <unordered_map>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+template <typename K, typename V, typename Hash, typename Compare, typename Alloc>
+struct as<
+ std::unordered_map<K, V, Hash, Compare, Alloc>,
+ typename std::enable_if<msgpack::has_as<K>::value || msgpack::has_as<V>::value>::type> {
+ std::unordered_map<K, V, Hash, Compare, Alloc> operator()(msgpack::object const& o) const {
+ if (o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ msgpack::object_kv* p(o.via.map.ptr);
+ msgpack::object_kv* const pend(o.via.map.ptr + o.via.map.size);
+ std::unordered_map<K, V, Hash, Compare, Alloc> v;
+ for (; p != pend; ++p) {
+ v.emplace(p->key.as<K>(), p->val.as<V>());
+ }
+ return v;
+ }
+};
+
+template <typename K, typename V, typename Hash, typename Compare, typename Alloc>
+struct convert<std::unordered_map<K, V, Hash, Compare, Alloc>> {
+ msgpack::object const& operator()(msgpack::object const& o, std::unordered_map<K, V, Hash, Compare, Alloc>& v) const {
+ if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ msgpack::object_kv* p(o.via.map.ptr);
+ msgpack::object_kv* const pend(o.via.map.ptr + o.via.map.size);
+ std::unordered_map<K, V, Hash, Compare, Alloc> tmp;
+ for(; p != pend; ++p) {
+ K key;
+ p->key.convert(key);
+ p->val.convert(tmp[std::move(key)]);
+ }
+ v = std::move(tmp);
+ return o;
+ }
+};
+
+template <typename K, typename V, typename Hash, typename Compare, typename Alloc>
+struct pack<std::unordered_map<K, V, Hash, Compare, Alloc>> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::unordered_map<K, V, Hash, Compare, Alloc>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_map(size);
+ for(typename std::unordered_map<K, V, Hash, Compare, Alloc>::const_iterator it(v.begin()), it_end(v.end());
+ it != it_end; ++it) {
+ o.pack(it->first);
+ o.pack(it->second);
+ }
+ return o;
+ }
+};
+
+template <typename K, typename V, typename Hash, typename Compare, typename Alloc>
+struct object_with_zone<std::unordered_map<K, V, Hash, Compare, Alloc>> {
+ void operator()(msgpack::object::with_zone& o, const std::unordered_map<K, V, Hash, Compare, Alloc>& v) const {
+ o.type = msgpack::type::MAP;
+ if(v.empty()) {
+ o.via.map.ptr = MSGPACK_NULLPTR;
+ o.via.map.size = 0;
+ } else {
+ uint32_t size = checked_get_container_size(v.size());
+ msgpack::object_kv* p = static_cast<msgpack::object_kv*>(o.zone.allocate_align(sizeof(msgpack::object_kv)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
+ msgpack::object_kv* const pend = p + size;
+ o.via.map.ptr = p;
+ o.via.map.size = size;
+ typename std::unordered_map<K, V, Hash, Compare, Alloc>::const_iterator it(v.begin());
+ do {
+ p->key = msgpack::object(it->first, o.zone);
+ p->val = msgpack::object(it->second, o.zone);
+ ++p;
+ ++it;
+ } while(p < pend);
+ }
+ }
+};
+
+
+template <typename K, typename V, typename Hash, typename Compare, typename Alloc>
+struct as<
+ std::unordered_multimap<K, V, Hash, Compare, Alloc>,
+ typename std::enable_if<msgpack::has_as<K>::value || msgpack::has_as<V>::value>::type> {
+ std::unordered_multimap<K, V, Hash, Compare, Alloc> operator()(msgpack::object const& o) const {
+ if (o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ msgpack::object_kv* p(o.via.map.ptr);
+ msgpack::object_kv* const pend(o.via.map.ptr + o.via.map.size);
+ std::unordered_multimap<K, V, Hash, Compare, Alloc> v;
+ for (; p != pend; ++p) {
+ v.emplace(p->key.as<K>(), p->val.as<V>());
+ }
+ return v;
+ }
+};
+
+template <typename K, typename V, typename Hash, typename Compare, typename Alloc>
+struct convert<std::unordered_multimap<K, V, Hash, Compare, Alloc>> {
+ msgpack::object const& operator()(msgpack::object const& o, std::unordered_multimap<K, V, Hash, Compare, Alloc>& v) const {
+ if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ msgpack::object_kv* p(o.via.map.ptr);
+ msgpack::object_kv* const pend(o.via.map.ptr + o.via.map.size);
+ std::unordered_multimap<K, V, Hash, Compare, Alloc> tmp;
+ for(; p != pend; ++p) {
+ std::pair<K, V> value;
+ p->key.convert(value.first);
+ p->val.convert(value.second);
+ tmp.insert(std::move(value));
+ }
+ v = std::move(tmp);
+ return o;
+ }
+};
+
+template <typename K, typename V, typename Hash, typename Compare, typename Alloc>
+struct pack<std::unordered_multimap<K, V, Hash, Compare, Alloc>> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::unordered_multimap<K, V, Hash, Compare, Alloc>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_map(size);
+ for(typename std::unordered_multimap<K, V, Hash, Compare, Alloc>::const_iterator it(v.begin()), it_end(v.end());
+ it != it_end; ++it) {
+ o.pack(it->first);
+ o.pack(it->second);
+ }
+ return o;
+ }
+};
+
+template <typename K, typename V, typename Hash, typename Compare, typename Alloc>
+struct object_with_zone<std::unordered_multimap<K, V, Hash, Compare, Alloc>> {
+ void operator()(msgpack::object::with_zone& o, const std::unordered_multimap<K, V, Hash, Compare, Alloc>& v) const {
+ o.type = msgpack::type::MAP;
+ if(v.empty()) {
+ o.via.map.ptr = MSGPACK_NULLPTR;
+ o.via.map.size = 0;
+ } else {
+ uint32_t size = checked_get_container_size(v.size());
+ msgpack::object_kv* p = static_cast<msgpack::object_kv*>(o.zone.allocate_align(sizeof(msgpack::object_kv)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
+ msgpack::object_kv* const pend = p + size;
+ o.via.map.ptr = p;
+ o.via.map.size = size;
+ typename std::unordered_multimap<K, V, Hash, Compare, Alloc>::const_iterator it(v.begin());
+ do {
+ p->key = msgpack::object(it->first, o.zone);
+ p->val = msgpack::object(it->second, o.zone);
+ ++p;
+ ++it;
+ } while(p < pend);
+ }
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+
+#endif // MSGPACK_V1_TYPE_CPP11_UNORDERED_MAP_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/unordered_set.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/unordered_set.hpp
new file mode 100644
index 0000000000..44a3cc3b6a
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/cpp11/unordered_set.hpp
@@ -0,0 +1,172 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2014-2015 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_CPP11_UNORDERED_SET_HPP
+#define MSGPACK_V1_TYPE_CPP11_UNORDERED_SET_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+
+#include <unordered_set>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+template <typename Key, typename Hash, typename Compare, typename Alloc>
+struct as<std::unordered_set<Key, Hash, Compare, Alloc>, typename std::enable_if<msgpack::has_as<Key>::value>::type> {
+ std::unordered_set<Key, Hash, Compare, Alloc> operator()(msgpack::object const& o) const {
+ if (o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ msgpack::object* p = o.via.array.ptr + o.via.array.size;
+ msgpack::object* const pbegin = o.via.array.ptr;
+ std::unordered_set<Key, Hash, Compare, Alloc> v;
+ while (p > pbegin) {
+ --p;
+ v.insert(p->as<Key>());
+ }
+ return v;
+ }
+};
+
+template <typename Key, typename Hash, typename Compare, typename Alloc>
+struct convert<std::unordered_set<Key, Hash, Compare, Alloc>> {
+ msgpack::object const& operator()(msgpack::object const& o, std::unordered_set<Key, Hash, Compare, Alloc>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ msgpack::object* p = o.via.array.ptr + o.via.array.size;
+ msgpack::object* const pbegin = o.via.array.ptr;
+ std::unordered_set<Key, Hash, Compare, Alloc> tmp;
+ while(p > pbegin) {
+ --p;
+ tmp.insert(p->as<Key>());
+ }
+ v = std::move(tmp);
+ return o;
+ }
+};
+
+template <typename Key, typename Hash, typename Compare, typename Alloc>
+struct pack<std::unordered_set<Key, Hash, Compare, Alloc>> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::unordered_set<Key, Hash, Compare, Alloc>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_array(size);
+ for(typename std::unordered_set<Key, Hash, Compare, Alloc>::const_iterator it(v.begin()), it_end(v.end());
+ it != it_end; ++it) {
+ o.pack(*it);
+ }
+ return o;
+ }
+};
+
+template <typename Key, typename Hash, typename Compare, typename Alloc>
+struct object_with_zone<std::unordered_set<Key, Hash, Compare, Alloc>> {
+ void operator()(msgpack::object::with_zone& o, const std::unordered_set<Key, Hash, Compare, Alloc>& v) const {
+ o.type = msgpack::type::ARRAY;
+ if(v.empty()) {
+ o.via.array.ptr = MSGPACK_NULLPTR;
+ o.via.array.size = 0;
+ } else {
+ uint32_t size = checked_get_container_size(v.size());
+ msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ msgpack::object* const pend = p + size;
+ o.via.array.ptr = p;
+ o.via.array.size = size;
+ typename std::unordered_set<Key, Hash, Compare, Alloc>::const_iterator it(v.begin());
+ do {
+ *p = msgpack::object(*it, o.zone);
+ ++p;
+ ++it;
+ } while(p < pend);
+ }
+ }
+};
+
+
+template <typename Key, typename Hash, typename Compare, typename Alloc>
+struct as<std::unordered_multiset<Key, Hash, Compare, Alloc>, typename std::enable_if<msgpack::has_as<Key>::value>::type> {
+ std::unordered_multiset<Key, Hash, Compare, Alloc> operator()(msgpack::object const& o) const {
+ if (o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ msgpack::object* p = o.via.array.ptr + o.via.array.size;
+ msgpack::object* const pbegin = o.via.array.ptr;
+ std::unordered_multiset<Key, Hash, Compare, Alloc> v;
+ while (p > pbegin) {
+ --p;
+ v.insert(p->as<Key>());
+ }
+ return v;
+ }
+};
+
+template <typename Key, typename Hash, typename Compare, typename Alloc>
+struct convert<std::unordered_multiset<Key, Hash, Compare, Alloc>> {
+ msgpack::object const& operator()(msgpack::object const& o, std::unordered_multiset<Key, Hash, Compare, Alloc>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ msgpack::object* p = o.via.array.ptr + o.via.array.size;
+ msgpack::object* const pbegin = o.via.array.ptr;
+ std::unordered_multiset<Key, Hash, Compare, Alloc> tmp;
+ while(p > pbegin) {
+ --p;
+ tmp.insert(p->as<Key>());
+ }
+ v = std::move(tmp);
+ return o;
+ }
+};
+
+template <typename Key, typename Hash, typename Compare, typename Alloc>
+struct pack<std::unordered_multiset<Key, Hash, Compare, Alloc>> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::unordered_multiset<Key, Hash, Compare, Alloc>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_array(size);
+ for(typename std::unordered_multiset<Key, Hash, Compare, Alloc>::const_iterator it(v.begin()), it_end(v.end());
+ it != it_end; ++it) {
+ o.pack(*it);
+ }
+ return o;
+ }
+};
+
+template <typename Key, typename Hash, typename Compare, typename Alloc>
+struct object_with_zone<std::unordered_multiset<Key, Hash, Compare, Alloc>> {
+ void operator()(msgpack::object::with_zone& o, const std::unordered_multiset<Key, Hash, Compare, Alloc>& v) const {
+ o.type = msgpack::type::ARRAY;
+ if(v.empty()) {
+ o.via.array.ptr = MSGPACK_NULLPTR;
+ o.via.array.size = 0;
+ } else {
+ uint32_t size = checked_get_container_size(v.size());
+ msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ msgpack::object* const pend = p + size;
+ o.via.array.ptr = p;
+ o.via.array.size = size;
+ typename std::unordered_multiset<Key, Hash, Compare, Alloc>::const_iterator it(v.begin());
+ do {
+ *p = msgpack::object(*it, o.zone);
+ ++p;
+ ++it;
+ } while(p < pend);
+ }
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_CPP11_UNORDERED_SET_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/cpp17/byte.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/cpp17/byte.hpp
new file mode 100644
index 0000000000..a1d1204719
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/cpp17/byte.hpp
@@ -0,0 +1,74 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_BYTE_HPP
+#define MSGPACK_V1_TYPE_BYTE_HPP
+
+#if __cplusplus >= 201703
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/int_decl.hpp"
+#include "msgpack/object.hpp"
+
+#include <cstddef>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+template <>
+struct convert<std::byte> {
+ msgpack::object const& operator()(msgpack::object const& o, std::byte& v) const {
+ v = static_cast<std::byte>(type::detail::convert_integer<unsigned char>(o));
+ return o;
+ }
+};
+
+template <>
+struct pack<std::byte> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, std::byte v) const {
+ o.pack_unsigned_char(static_cast<unsigned char>(v));
+ return o;
+ }
+};
+
+template <>
+struct object<std::byte> {
+ void operator()(msgpack::object& o, std::byte v) const {
+ o.type = msgpack::type::POSITIVE_INTEGER;
+ o.via.u64 = static_cast<unsigned char>(v);
+ }
+};
+
+template <>
+struct object_with_zone<std::byte> {
+ void operator()(msgpack::object::with_zone& o, const std::byte& v) const {
+ static_cast<msgpack::object&>(o) << v;
+ }
+};
+
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // __cplusplus >= 201703
+
+#endif // MSGPACK_V1_TYPE_BYTE_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/cpp17/carray_byte.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/cpp17/carray_byte.hpp
new file mode 100644
index 0000000000..e2be6bc0ea
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/cpp17/carray_byte.hpp
@@ -0,0 +1,109 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_CARRAY_BYTE_HPP
+#define MSGPACK_V1_TYPE_CARRAY_BYTE_HPP
+
+#if __cplusplus >= 201703
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+
+#include <cstring>
+#include <cstddef>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+template <std::size_t N>
+struct convert<std::byte[N]> {
+ msgpack::object const& operator()(msgpack::object const& o, std::byte(&v)[N]) const {
+ switch (o.type) {
+ case msgpack::type::BIN:
+ if (o.via.bin.size > N) { throw msgpack::type_error(); }
+ std::memcpy(v, o.via.bin.ptr, o.via.bin.size);
+ break;
+ case msgpack::type::STR:
+ if (o.via.str.size > N) { throw msgpack::type_error(); }
+ std::memcpy(v, o.via.str.ptr, o.via.str.size);
+ if (o.via.str.size < N) v[o.via.str.size] = std::byte{'\0'};
+ break;
+ default:
+ throw msgpack::type_error();
+ break;
+ }
+ return o;
+ }
+};
+
+template <std::size_t N>
+struct pack<std::byte[N]> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::byte(&v)[N]) const {
+ std::byte const* p = v;
+ uint32_t size = checked_get_container_size(N);
+ o.pack_bin(size);
+ o.pack_bin_body(reinterpret_cast<char const*>(p), size);
+ return o;
+ }
+};
+
+template <std::size_t N>
+struct pack<const std::byte[N]> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::byte(&v)[N]) const {
+ std::byte const* p = v;
+ uint32_t size = checked_get_container_size(N);
+ o.pack_bin(size);
+ o.pack_bin_body(reinterpret_cast<char const*>(p), size);
+ return o;
+ }
+};
+
+template <std::size_t N>
+struct object_with_zone<std::byte[N]> {
+ void operator()(msgpack::object::with_zone& o, const std::byte(&v)[N]) const {
+ uint32_t size = checked_get_container_size(N);
+ o.type = msgpack::type::BIN;
+ char* ptr = static_cast<char*>(o.zone.allocate_align(size, MSGPACK_ZONE_ALIGNOF(char)));
+ o.via.bin.ptr = ptr;
+ o.via.bin.size = size;
+ std::memcpy(ptr, v, size);
+ }
+};
+
+template <std::size_t N>
+struct object_with_zone<const std::byte[N]> {
+ void operator()(msgpack::object::with_zone& o, const std::byte(&v)[N]) const {
+ uint32_t size = checked_get_container_size(N);
+ o.type = msgpack::type::BIN;
+ char* ptr = static_cast<char*>(o.zone.allocate_align(size, MSGPACK_ZONE_ALIGNOF(char)));
+ o.via.bin.ptr = ptr;
+ o.via.bin.size = size;
+ std::memcpy(ptr, v, size);
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // __cplusplus >= 201703
+
+#endif // MSGPACK_V1_TYPE_CARRAY_BYTE_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/cpp17/optional.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/cpp17/optional.hpp
new file mode 100644
index 0000000000..2179ac081a
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/cpp17/optional.hpp
@@ -0,0 +1,90 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2017 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_OPTIONAL_HPP
+#define MSGPACK_V1_TYPE_OPTIONAL_HPP
+
+#if __cplusplus >= 201703
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+
+#include <optional>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+#if !defined (MSGPACK_USE_CPP03)
+
+template <typename T>
+struct as<std::optional<T>, typename std::enable_if<msgpack::has_as<T>::value>::type> {
+ std::optional<T> operator()(msgpack::object const& o) const {
+ if(o.is_nil()) return std::nullopt;
+ return o.as<T>();
+ }
+};
+
+#endif // !defined (MSGPACK_USE_CPP03)
+
+template <typename T>
+struct convert<std::optional<T> > {
+ msgpack::object const& operator()(msgpack::object const& o, std::optional<T>& v) const {
+ if(o.is_nil()) v = std::nullopt;
+ else {
+ T t;
+ msgpack::adaptor::convert<T>()(o, t);
+ v = t;
+ }
+ return o;
+ }
+};
+
+template <typename T>
+struct pack<std::optional<T> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::optional<T>& v) const {
+ if (v) o.pack(*v);
+ else o.pack_nil();
+ return o;
+ }
+};
+
+template <typename T>
+struct object<std::optional<T> > {
+ void operator()(msgpack::object& o, const std::optional<T>& v) const {
+ if (v) msgpack::adaptor::object<T>()(o, *v);
+ else o.type = msgpack::type::NIL;
+ }
+};
+
+template <typename T>
+struct object_with_zone<std::optional<T> > {
+ void operator()(msgpack::object::with_zone& o, const std::optional<T>& v) const {
+ if (v) msgpack::adaptor::object_with_zone<T>()(o, *v);
+ else o.type = msgpack::type::NIL;
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // __cplusplus >= 201703
+
+#endif // MSGPACK_V1_TYPE_OPTIONAL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/cpp17/string_view.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/cpp17/string_view.hpp
new file mode 100644
index 0000000000..8ec56c26cf
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/cpp17/string_view.hpp
@@ -0,0 +1,86 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2017 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_STRING_VIEW_HPP
+#define MSGPACK_V1_TYPE_STRING_VIEW_HPP
+
+#if __cplusplus >= 201703
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+
+#include <string_view>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+template <>
+struct convert<std::string_view> {
+ msgpack::object const& operator()(msgpack::object const& o, std::string_view& v) const {
+ switch (o.type) {
+ case msgpack::type::BIN:
+ v = std::string_view(o.via.bin.ptr, o.via.bin.size);
+ break;
+ case msgpack::type::STR:
+ v = std::string_view(o.via.str.ptr, o.via.str.size);
+ break;
+ default:
+ throw msgpack::type_error();
+ break;
+ }
+ return o;
+ }
+};
+
+template <>
+struct pack<std::string_view> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::string_view& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_str(size);
+ o.pack_str_body(v.data(), size);
+ return o;
+ }
+};
+
+template <>
+struct object<std::string_view> {
+ void operator()(msgpack::object& o, const std::string_view& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.type = msgpack::type::STR;
+ o.via.str.ptr = v.data();
+ o.via.str.size = size;
+ }
+};
+
+template <>
+struct object_with_zone<std::string_view> {
+ void operator()(msgpack::object::with_zone& o, const std::string_view& v) const {
+ static_cast<msgpack::object&>(o) << v;
+ }
+};
+
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // __cplusplus >= 201703
+
+#endif // MSGPACK_V1_TYPE_STRING_VIEW_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/cpp17/vector_byte.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/cpp17/vector_byte.hpp
new file mode 100644
index 0000000000..e291667edb
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/cpp17/vector_byte.hpp
@@ -0,0 +1,119 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_VECTOR_BYTE_HPP
+#define MSGPACK_V1_TYPE_VECTOR_BYTE_HPP
+
+#if __cplusplus >= 201703
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+
+#include <vector>
+#include <cstring>
+#include <cstddef>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+template <typename Alloc>
+struct convert<std::vector<std::byte, Alloc> > {
+ msgpack::object const& operator()(msgpack::object const& o, std::vector<std::byte, Alloc>& v) const {
+ switch (o.type) {
+ case msgpack::type::BIN:
+ v.resize(o.via.bin.size);
+ if (o.via.bin.size != 0) {
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
+#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+ std::memcpy(&v.front(), o.via.bin.ptr, o.via.bin.size);
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+#pragma GCC diagnostic pop
+#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+ }
+ break;
+ case msgpack::type::STR:
+ v.resize(o.via.str.size);
+ if (o.via.str.size != 0) {
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
+#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+ std::memcpy(&v.front(), o.via.str.ptr, o.via.str.size);
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+#pragma GCC diagnostic pop
+#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+ }
+ break;
+ default:
+ throw msgpack::type_error();
+ break;
+ }
+ return o;
+ }
+};
+
+template <typename Alloc>
+struct pack<std::vector<std::byte, Alloc> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::vector<std::byte, Alloc>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_bin(size);
+ if (size != 0) {
+ o.pack_bin_body(reinterpret_cast<char const*>(&v.front()), size);
+ }
+
+ return o;
+ }
+};
+
+template <typename Alloc>
+struct object<std::vector<std::byte, Alloc> > {
+ void operator()(msgpack::object& o, const std::vector<std::byte, Alloc>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.type = msgpack::type::BIN;
+ if (size != 0) {
+ o.via.bin.ptr = reinterpret_cast<char const*>(&v.front());
+ }
+ o.via.bin.size = size;
+ }
+};
+
+template <typename Alloc>
+struct object_with_zone<std::vector<std::byte, Alloc> > {
+ void operator()(msgpack::object::with_zone& o, const std::vector<std::byte, Alloc>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.type = msgpack::type::BIN;
+ o.via.bin.size = size;
+ if (size != 0) {
+ char* ptr = static_cast<char*>(o.zone.allocate_align(size, MSGPACK_ZONE_ALIGNOF(char)));
+ o.via.bin.ptr = ptr;
+ std::memcpy(ptr, &v.front(), size);
+ }
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // __cplusplus >= 201703
+
+#endif // MSGPACK_V1_TYPE_VECTOR_BYTE_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/define.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/define.hpp
new file mode 100644
index 0000000000..6a547c7531
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/define.hpp
@@ -0,0 +1,21 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2014 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_DEFINE_HPP
+#define MSGPACK_V1_DEFINE_HPP
+
+#if defined(MSGPACK_USE_CPP03)
+#include "msgpack/v1/adaptor/detail/cpp03_define_array.hpp"
+#include "msgpack/v1/adaptor/detail/cpp03_define_map.hpp"
+#else // MSGPACK_USE_CPP03
+#include "msgpack/v1/adaptor/detail/cpp11_define_array.hpp"
+#include "msgpack/v1/adaptor/detail/cpp11_define_map.hpp"
+#endif // MSGPACK_USE_CPP03
+
+#endif // MSGPACK_V1_DEFINE_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/define_decl.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/define_decl.hpp
new file mode 100644
index 0000000000..4e2c9afba8
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/define_decl.hpp
@@ -0,0 +1,23 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_DEFINE_DECL_HPP
+#define MSGPACK_V1_DEFINE_DECL_HPP
+
+#include "msgpack/cpp_config.hpp"
+
+#if defined(MSGPACK_USE_CPP03)
+#include "msgpack/v1/adaptor/detail/cpp03_define_array_decl.hpp"
+#include "msgpack/v1/adaptor/detail/cpp03_define_map_decl.hpp"
+#else // MSGPACK_USE_CPP03
+#include "msgpack/v1/adaptor/detail/cpp11_define_array_decl.hpp"
+#include "msgpack/v1/adaptor/detail/cpp11_define_map_decl.hpp"
+#endif // MSGPACK_USE_CPP03
+
+#endif // MSGPACK_V1_DEFINE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/deque.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/deque.hpp
new file mode 100644
index 0000000000..41a0bef696
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/deque.hpp
@@ -0,0 +1,108 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2015 FURUHASHI Sadayuki
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_DEQUE_HPP
+#define MSGPACK_V1_TYPE_DEQUE_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+
+#include <deque>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+#if !defined(MSGPACK_USE_CPP03)
+
+template <typename T, typename Alloc>
+struct as<std::deque<T, Alloc>, typename std::enable_if<msgpack::has_as<T>::value>::type> {
+ std::deque<T, Alloc> operator()(const msgpack::object& o) const {
+ if (o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ std::deque<T, Alloc> v;
+ if (o.via.array.size > 0) {
+ msgpack::object* p = o.via.array.ptr;
+ msgpack::object* const pend = o.via.array.ptr + o.via.array.size;
+ do {
+ v.push_back(p->as<T>());
+ ++p;
+ } while (p < pend);
+ }
+ return v;
+ }
+};
+
+#endif // !defined(MSGPACK_USE_CPP03)
+
+template <typename T, typename Alloc>
+struct convert<std::deque<T, Alloc> > {
+ msgpack::object const& operator()(msgpack::object const& o, std::deque<T, Alloc>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ v.resize(o.via.array.size);
+ msgpack::object* p = o.via.array.ptr;
+ msgpack::object* const pend = o.via.array.ptr + o.via.array.size;
+ typename std::deque<T, Alloc>::iterator it = v.begin();
+ for(; p < pend; ++p, ++it) {
+ p->convert(*it);
+ }
+ return o;
+ }
+};
+
+template <typename T, typename Alloc>
+struct pack<std::deque<T, Alloc> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::deque<T, Alloc>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_array(size);
+ for(typename std::deque<T, Alloc>::const_iterator it(v.begin()), it_end(v.end());
+ it != it_end; ++it) {
+ o.pack(*it);
+ }
+ return o;
+ }
+};
+
+template <typename T, typename Alloc>
+struct object_with_zone<std::deque<T, Alloc> > {
+ void operator()(msgpack::object::with_zone& o, const std::deque<T, Alloc>& v) const {
+ o.type = msgpack::type::ARRAY;
+ if(v.empty()) {
+ o.via.array.ptr = MSGPACK_NULLPTR;
+ o.via.array.size = 0;
+ } else {
+ uint32_t size = checked_get_container_size(v.size());
+ msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ msgpack::object* const pend = p + size;
+ o.via.array.ptr = p;
+ o.via.array.size = size;
+ typename std::deque<T, Alloc>::const_iterator it(v.begin());
+ do {
+ *p = msgpack::object(*it, o.zone);
+ ++p;
+ ++it;
+ } while(p < pend);
+ }
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_DEQUE_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp03_define_array.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp03_define_array.hpp
new file mode 100644
index 0000000000..c815829260
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp03_define_array.hpp
@@ -0,0 +1,4481 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_CPP03_DEFINE_ARRAY_HPP
+#define MSGPACK_V1_CPP03_DEFINE_ARRAY_HPP
+
+#include "msgpack/v1/adaptor/detail/cpp03_define_array_decl.hpp"
+#include "msgpack/adaptor/msgpack_tuple.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/object_fwd.hpp"
+
+namespace msgpack {
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+namespace type {
+
+
+template <>
+struct define_array<> {
+ typedef define_array<> value_type;
+ typedef tuple<> tuple_type;
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(0);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone&) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = MSGPACK_NULLPTR;
+ o->via.array.size = 0;
+ }
+};
+
+/// @cond
+
+template <typename A0>
+struct define_array<A0> {
+ typedef define_array<A0> value_type;
+ typedef tuple<A0> tuple_type;
+ define_array(A0& _a0) :
+ a0(_a0) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(1);
+
+ pk.pack(a0);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*1, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 1;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ }
+
+ A0& a0;
+};
+
+template <typename A0, typename A1>
+struct define_array<A0, A1> {
+ typedef define_array<A0, A1> value_type;
+ typedef tuple<A0, A1> tuple_type;
+ define_array(A0& _a0, A1& _a1) :
+ a0(_a0), a1(_a1) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(2);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 2: ptr[1].convert(a1);
+ // fallthrough
+
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*2, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 2;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ o->via.array.ptr[1] = msgpack::object(a1, z);
+ }
+
+ A0& a0;
+ A1& a1;
+};
+
+template <typename A0, typename A1, typename A2>
+struct define_array<A0, A1, A2> {
+ typedef define_array<A0, A1, A2> value_type;
+ typedef tuple<A0, A1, A2> tuple_type;
+ define_array(A0& _a0, A1& _a1, A2& _a2) :
+ a0(_a0), a1(_a1), a2(_a2) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(3);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 3: ptr[2].convert(a2);
+ // fallthrough
+
+ case 2: ptr[1].convert(a1);
+ // fallthrough
+
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*3, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 3;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ o->via.array.ptr[1] = msgpack::object(a1, z);
+ o->via.array.ptr[2] = msgpack::object(a2, z);
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+};
+
+template <typename A0, typename A1, typename A2, typename A3>
+struct define_array<A0, A1, A2, A3> {
+ typedef define_array<A0, A1, A2, A3> value_type;
+ typedef tuple<A0, A1, A2, A3> tuple_type;
+ define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(4);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 4: ptr[3].convert(a3);
+ // fallthrough
+
+ case 3: ptr[2].convert(a2);
+ // fallthrough
+
+ case 2: ptr[1].convert(a1);
+ // fallthrough
+
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*4, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 4;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ o->via.array.ptr[1] = msgpack::object(a1, z);
+ o->via.array.ptr[2] = msgpack::object(a2, z);
+ o->via.array.ptr[3] = msgpack::object(a3, z);
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4>
+struct define_array<A0, A1, A2, A3, A4> {
+ typedef define_array<A0, A1, A2, A3, A4> value_type;
+ typedef tuple<A0, A1, A2, A3, A4> tuple_type;
+ define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(5);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 5: ptr[4].convert(a4);
+ // fallthrough
+
+ case 4: ptr[3].convert(a3);
+ // fallthrough
+
+ case 3: ptr[2].convert(a2);
+ // fallthrough
+
+ case 2: ptr[1].convert(a1);
+ // fallthrough
+
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*5, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 5;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ o->via.array.ptr[1] = msgpack::object(a1, z);
+ o->via.array.ptr[2] = msgpack::object(a2, z);
+ o->via.array.ptr[3] = msgpack::object(a3, z);
+ o->via.array.ptr[4] = msgpack::object(a4, z);
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
+struct define_array<A0, A1, A2, A3, A4, A5> {
+ typedef define_array<A0, A1, A2, A3, A4, A5> value_type;
+ typedef tuple<A0, A1, A2, A3, A4, A5> tuple_type;
+ define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(6);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 6: ptr[5].convert(a5);
+ // fallthrough
+
+ case 5: ptr[4].convert(a4);
+ // fallthrough
+
+ case 4: ptr[3].convert(a3);
+ // fallthrough
+
+ case 3: ptr[2].convert(a2);
+ // fallthrough
+
+ case 2: ptr[1].convert(a1);
+ // fallthrough
+
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*6, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 6;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ o->via.array.ptr[1] = msgpack::object(a1, z);
+ o->via.array.ptr[2] = msgpack::object(a2, z);
+ o->via.array.ptr[3] = msgpack::object(a3, z);
+ o->via.array.ptr[4] = msgpack::object(a4, z);
+ o->via.array.ptr[5] = msgpack::object(a5, z);
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+struct define_array<A0, A1, A2, A3, A4, A5, A6> {
+ typedef define_array<A0, A1, A2, A3, A4, A5, A6> value_type;
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6> tuple_type;
+ define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(7);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 7: ptr[6].convert(a6);
+ // fallthrough
+
+ case 6: ptr[5].convert(a5);
+ // fallthrough
+
+ case 5: ptr[4].convert(a4);
+ // fallthrough
+
+ case 4: ptr[3].convert(a3);
+ // fallthrough
+
+ case 3: ptr[2].convert(a2);
+ // fallthrough
+
+ case 2: ptr[1].convert(a1);
+ // fallthrough
+
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*7, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 7;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ o->via.array.ptr[1] = msgpack::object(a1, z);
+ o->via.array.ptr[2] = msgpack::object(a2, z);
+ o->via.array.ptr[3] = msgpack::object(a3, z);
+ o->via.array.ptr[4] = msgpack::object(a4, z);
+ o->via.array.ptr[5] = msgpack::object(a5, z);
+ o->via.array.ptr[6] = msgpack::object(a6, z);
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+struct define_array<A0, A1, A2, A3, A4, A5, A6, A7> {
+ typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7> value_type;
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7> tuple_type;
+ define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(8);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 8: ptr[7].convert(a7);
+ // fallthrough
+
+ case 7: ptr[6].convert(a6);
+ // fallthrough
+
+ case 6: ptr[5].convert(a5);
+ // fallthrough
+
+ case 5: ptr[4].convert(a4);
+ // fallthrough
+
+ case 4: ptr[3].convert(a3);
+ // fallthrough
+
+ case 3: ptr[2].convert(a2);
+ // fallthrough
+
+ case 2: ptr[1].convert(a1);
+ // fallthrough
+
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*8, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 8;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ o->via.array.ptr[1] = msgpack::object(a1, z);
+ o->via.array.ptr[2] = msgpack::object(a2, z);
+ o->via.array.ptr[3] = msgpack::object(a3, z);
+ o->via.array.ptr[4] = msgpack::object(a4, z);
+ o->via.array.ptr[5] = msgpack::object(a5, z);
+ o->via.array.ptr[6] = msgpack::object(a6, z);
+ o->via.array.ptr[7] = msgpack::object(a7, z);
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8> {
+ typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8> value_type;
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8> tuple_type;
+ define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(9);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 9: ptr[8].convert(a8);
+ // fallthrough
+
+ case 8: ptr[7].convert(a7);
+ // fallthrough
+
+ case 7: ptr[6].convert(a6);
+ // fallthrough
+
+ case 6: ptr[5].convert(a5);
+ // fallthrough
+
+ case 5: ptr[4].convert(a4);
+ // fallthrough
+
+ case 4: ptr[3].convert(a3);
+ // fallthrough
+
+ case 3: ptr[2].convert(a2);
+ // fallthrough
+
+ case 2: ptr[1].convert(a1);
+ // fallthrough
+
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*9, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 9;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ o->via.array.ptr[1] = msgpack::object(a1, z);
+ o->via.array.ptr[2] = msgpack::object(a2, z);
+ o->via.array.ptr[3] = msgpack::object(a3, z);
+ o->via.array.ptr[4] = msgpack::object(a4, z);
+ o->via.array.ptr[5] = msgpack::object(a5, z);
+ o->via.array.ptr[6] = msgpack::object(a6, z);
+ o->via.array.ptr[7] = msgpack::object(a7, z);
+ o->via.array.ptr[8] = msgpack::object(a8, z);
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> {
+ typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> value_type;
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> tuple_type;
+ define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(10);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 10: ptr[9].convert(a9);
+ // fallthrough
+
+ case 9: ptr[8].convert(a8);
+ // fallthrough
+
+ case 8: ptr[7].convert(a7);
+ // fallthrough
+
+ case 7: ptr[6].convert(a6);
+ // fallthrough
+
+ case 6: ptr[5].convert(a5);
+ // fallthrough
+
+ case 5: ptr[4].convert(a4);
+ // fallthrough
+
+ case 4: ptr[3].convert(a3);
+ // fallthrough
+
+ case 3: ptr[2].convert(a2);
+ // fallthrough
+
+ case 2: ptr[1].convert(a1);
+ // fallthrough
+
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*10, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 10;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ o->via.array.ptr[1] = msgpack::object(a1, z);
+ o->via.array.ptr[2] = msgpack::object(a2, z);
+ o->via.array.ptr[3] = msgpack::object(a3, z);
+ o->via.array.ptr[4] = msgpack::object(a4, z);
+ o->via.array.ptr[5] = msgpack::object(a5, z);
+ o->via.array.ptr[6] = msgpack::object(a6, z);
+ o->via.array.ptr[7] = msgpack::object(a7, z);
+ o->via.array.ptr[8] = msgpack::object(a8, z);
+ o->via.array.ptr[9] = msgpack::object(a9, z);
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> {
+ typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> value_type;
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> tuple_type;
+ define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(11);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 11: ptr[10].convert(a10);
+ // fallthrough
+
+ case 10: ptr[9].convert(a9);
+ // fallthrough
+
+ case 9: ptr[8].convert(a8);
+ // fallthrough
+
+ case 8: ptr[7].convert(a7);
+ // fallthrough
+
+ case 7: ptr[6].convert(a6);
+ // fallthrough
+
+ case 6: ptr[5].convert(a5);
+ // fallthrough
+
+ case 5: ptr[4].convert(a4);
+ // fallthrough
+
+ case 4: ptr[3].convert(a3);
+ // fallthrough
+
+ case 3: ptr[2].convert(a2);
+ // fallthrough
+
+ case 2: ptr[1].convert(a1);
+ // fallthrough
+
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*11, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 11;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ o->via.array.ptr[1] = msgpack::object(a1, z);
+ o->via.array.ptr[2] = msgpack::object(a2, z);
+ o->via.array.ptr[3] = msgpack::object(a3, z);
+ o->via.array.ptr[4] = msgpack::object(a4, z);
+ o->via.array.ptr[5] = msgpack::object(a5, z);
+ o->via.array.ptr[6] = msgpack::object(a6, z);
+ o->via.array.ptr[7] = msgpack::object(a7, z);
+ o->via.array.ptr[8] = msgpack::object(a8, z);
+ o->via.array.ptr[9] = msgpack::object(a9, z);
+ o->via.array.ptr[10] = msgpack::object(a10, z);
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> {
+ typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> value_type;
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> tuple_type;
+ define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(12);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 12: ptr[11].convert(a11);
+ // fallthrough
+
+ case 11: ptr[10].convert(a10);
+ // fallthrough
+
+ case 10: ptr[9].convert(a9);
+ // fallthrough
+
+ case 9: ptr[8].convert(a8);
+ // fallthrough
+
+ case 8: ptr[7].convert(a7);
+ // fallthrough
+
+ case 7: ptr[6].convert(a6);
+ // fallthrough
+
+ case 6: ptr[5].convert(a5);
+ // fallthrough
+
+ case 5: ptr[4].convert(a4);
+ // fallthrough
+
+ case 4: ptr[3].convert(a3);
+ // fallthrough
+
+ case 3: ptr[2].convert(a2);
+ // fallthrough
+
+ case 2: ptr[1].convert(a1);
+ // fallthrough
+
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*12, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 12;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ o->via.array.ptr[1] = msgpack::object(a1, z);
+ o->via.array.ptr[2] = msgpack::object(a2, z);
+ o->via.array.ptr[3] = msgpack::object(a3, z);
+ o->via.array.ptr[4] = msgpack::object(a4, z);
+ o->via.array.ptr[5] = msgpack::object(a5, z);
+ o->via.array.ptr[6] = msgpack::object(a6, z);
+ o->via.array.ptr[7] = msgpack::object(a7, z);
+ o->via.array.ptr[8] = msgpack::object(a8, z);
+ o->via.array.ptr[9] = msgpack::object(a9, z);
+ o->via.array.ptr[10] = msgpack::object(a10, z);
+ o->via.array.ptr[11] = msgpack::object(a11, z);
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> {
+ typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> value_type;
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> tuple_type;
+ define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(13);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ pk.pack(a12);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 13: ptr[12].convert(a12);
+ // fallthrough
+
+ case 12: ptr[11].convert(a11);
+ // fallthrough
+
+ case 11: ptr[10].convert(a10);
+ // fallthrough
+
+ case 10: ptr[9].convert(a9);
+ // fallthrough
+
+ case 9: ptr[8].convert(a8);
+ // fallthrough
+
+ case 8: ptr[7].convert(a7);
+ // fallthrough
+
+ case 7: ptr[6].convert(a6);
+ // fallthrough
+
+ case 6: ptr[5].convert(a5);
+ // fallthrough
+
+ case 5: ptr[4].convert(a4);
+ // fallthrough
+
+ case 4: ptr[3].convert(a3);
+ // fallthrough
+
+ case 3: ptr[2].convert(a2);
+ // fallthrough
+
+ case 2: ptr[1].convert(a1);
+ // fallthrough
+
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*13, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 13;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ o->via.array.ptr[1] = msgpack::object(a1, z);
+ o->via.array.ptr[2] = msgpack::object(a2, z);
+ o->via.array.ptr[3] = msgpack::object(a3, z);
+ o->via.array.ptr[4] = msgpack::object(a4, z);
+ o->via.array.ptr[5] = msgpack::object(a5, z);
+ o->via.array.ptr[6] = msgpack::object(a6, z);
+ o->via.array.ptr[7] = msgpack::object(a7, z);
+ o->via.array.ptr[8] = msgpack::object(a8, z);
+ o->via.array.ptr[9] = msgpack::object(a9, z);
+ o->via.array.ptr[10] = msgpack::object(a10, z);
+ o->via.array.ptr[11] = msgpack::object(a11, z);
+ o->via.array.ptr[12] = msgpack::object(a12, z);
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+ A12& a12;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> {
+ typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> value_type;
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> tuple_type;
+ define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(14);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ pk.pack(a12);
+ pk.pack(a13);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 14: ptr[13].convert(a13);
+ // fallthrough
+
+ case 13: ptr[12].convert(a12);
+ // fallthrough
+
+ case 12: ptr[11].convert(a11);
+ // fallthrough
+
+ case 11: ptr[10].convert(a10);
+ // fallthrough
+
+ case 10: ptr[9].convert(a9);
+ // fallthrough
+
+ case 9: ptr[8].convert(a8);
+ // fallthrough
+
+ case 8: ptr[7].convert(a7);
+ // fallthrough
+
+ case 7: ptr[6].convert(a6);
+ // fallthrough
+
+ case 6: ptr[5].convert(a5);
+ // fallthrough
+
+ case 5: ptr[4].convert(a4);
+ // fallthrough
+
+ case 4: ptr[3].convert(a3);
+ // fallthrough
+
+ case 3: ptr[2].convert(a2);
+ // fallthrough
+
+ case 2: ptr[1].convert(a1);
+ // fallthrough
+
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*14, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 14;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ o->via.array.ptr[1] = msgpack::object(a1, z);
+ o->via.array.ptr[2] = msgpack::object(a2, z);
+ o->via.array.ptr[3] = msgpack::object(a3, z);
+ o->via.array.ptr[4] = msgpack::object(a4, z);
+ o->via.array.ptr[5] = msgpack::object(a5, z);
+ o->via.array.ptr[6] = msgpack::object(a6, z);
+ o->via.array.ptr[7] = msgpack::object(a7, z);
+ o->via.array.ptr[8] = msgpack::object(a8, z);
+ o->via.array.ptr[9] = msgpack::object(a9, z);
+ o->via.array.ptr[10] = msgpack::object(a10, z);
+ o->via.array.ptr[11] = msgpack::object(a11, z);
+ o->via.array.ptr[12] = msgpack::object(a12, z);
+ o->via.array.ptr[13] = msgpack::object(a13, z);
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+ A12& a12;
+ A13& a13;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> {
+ typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> value_type;
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> tuple_type;
+ define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(15);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ pk.pack(a12);
+ pk.pack(a13);
+ pk.pack(a14);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 15: ptr[14].convert(a14);
+ // fallthrough
+
+ case 14: ptr[13].convert(a13);
+ // fallthrough
+
+ case 13: ptr[12].convert(a12);
+ // fallthrough
+
+ case 12: ptr[11].convert(a11);
+ // fallthrough
+
+ case 11: ptr[10].convert(a10);
+ // fallthrough
+
+ case 10: ptr[9].convert(a9);
+ // fallthrough
+
+ case 9: ptr[8].convert(a8);
+ // fallthrough
+
+ case 8: ptr[7].convert(a7);
+ // fallthrough
+
+ case 7: ptr[6].convert(a6);
+ // fallthrough
+
+ case 6: ptr[5].convert(a5);
+ // fallthrough
+
+ case 5: ptr[4].convert(a4);
+ // fallthrough
+
+ case 4: ptr[3].convert(a3);
+ // fallthrough
+
+ case 3: ptr[2].convert(a2);
+ // fallthrough
+
+ case 2: ptr[1].convert(a1);
+ // fallthrough
+
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*15, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 15;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ o->via.array.ptr[1] = msgpack::object(a1, z);
+ o->via.array.ptr[2] = msgpack::object(a2, z);
+ o->via.array.ptr[3] = msgpack::object(a3, z);
+ o->via.array.ptr[4] = msgpack::object(a4, z);
+ o->via.array.ptr[5] = msgpack::object(a5, z);
+ o->via.array.ptr[6] = msgpack::object(a6, z);
+ o->via.array.ptr[7] = msgpack::object(a7, z);
+ o->via.array.ptr[8] = msgpack::object(a8, z);
+ o->via.array.ptr[9] = msgpack::object(a9, z);
+ o->via.array.ptr[10] = msgpack::object(a10, z);
+ o->via.array.ptr[11] = msgpack::object(a11, z);
+ o->via.array.ptr[12] = msgpack::object(a12, z);
+ o->via.array.ptr[13] = msgpack::object(a13, z);
+ o->via.array.ptr[14] = msgpack::object(a14, z);
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+ A12& a12;
+ A13& a13;
+ A14& a14;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> {
+ typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> value_type;
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> tuple_type;
+ define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(16);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ pk.pack(a12);
+ pk.pack(a13);
+ pk.pack(a14);
+ pk.pack(a15);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 16: ptr[15].convert(a15);
+ // fallthrough
+
+ case 15: ptr[14].convert(a14);
+ // fallthrough
+
+ case 14: ptr[13].convert(a13);
+ // fallthrough
+
+ case 13: ptr[12].convert(a12);
+ // fallthrough
+
+ case 12: ptr[11].convert(a11);
+ // fallthrough
+
+ case 11: ptr[10].convert(a10);
+ // fallthrough
+
+ case 10: ptr[9].convert(a9);
+ // fallthrough
+
+ case 9: ptr[8].convert(a8);
+ // fallthrough
+
+ case 8: ptr[7].convert(a7);
+ // fallthrough
+
+ case 7: ptr[6].convert(a6);
+ // fallthrough
+
+ case 6: ptr[5].convert(a5);
+ // fallthrough
+
+ case 5: ptr[4].convert(a4);
+ // fallthrough
+
+ case 4: ptr[3].convert(a3);
+ // fallthrough
+
+ case 3: ptr[2].convert(a2);
+ // fallthrough
+
+ case 2: ptr[1].convert(a1);
+ // fallthrough
+
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*16, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 16;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ o->via.array.ptr[1] = msgpack::object(a1, z);
+ o->via.array.ptr[2] = msgpack::object(a2, z);
+ o->via.array.ptr[3] = msgpack::object(a3, z);
+ o->via.array.ptr[4] = msgpack::object(a4, z);
+ o->via.array.ptr[5] = msgpack::object(a5, z);
+ o->via.array.ptr[6] = msgpack::object(a6, z);
+ o->via.array.ptr[7] = msgpack::object(a7, z);
+ o->via.array.ptr[8] = msgpack::object(a8, z);
+ o->via.array.ptr[9] = msgpack::object(a9, z);
+ o->via.array.ptr[10] = msgpack::object(a10, z);
+ o->via.array.ptr[11] = msgpack::object(a11, z);
+ o->via.array.ptr[12] = msgpack::object(a12, z);
+ o->via.array.ptr[13] = msgpack::object(a13, z);
+ o->via.array.ptr[14] = msgpack::object(a14, z);
+ o->via.array.ptr[15] = msgpack::object(a15, z);
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+ A12& a12;
+ A13& a13;
+ A14& a14;
+ A15& a15;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> {
+ typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> value_type;
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> tuple_type;
+ define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(17);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ pk.pack(a12);
+ pk.pack(a13);
+ pk.pack(a14);
+ pk.pack(a15);
+ pk.pack(a16);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 17: ptr[16].convert(a16);
+ // fallthrough
+
+ case 16: ptr[15].convert(a15);
+ // fallthrough
+
+ case 15: ptr[14].convert(a14);
+ // fallthrough
+
+ case 14: ptr[13].convert(a13);
+ // fallthrough
+
+ case 13: ptr[12].convert(a12);
+ // fallthrough
+
+ case 12: ptr[11].convert(a11);
+ // fallthrough
+
+ case 11: ptr[10].convert(a10);
+ // fallthrough
+
+ case 10: ptr[9].convert(a9);
+ // fallthrough
+
+ case 9: ptr[8].convert(a8);
+ // fallthrough
+
+ case 8: ptr[7].convert(a7);
+ // fallthrough
+
+ case 7: ptr[6].convert(a6);
+ // fallthrough
+
+ case 6: ptr[5].convert(a5);
+ // fallthrough
+
+ case 5: ptr[4].convert(a4);
+ // fallthrough
+
+ case 4: ptr[3].convert(a3);
+ // fallthrough
+
+ case 3: ptr[2].convert(a2);
+ // fallthrough
+
+ case 2: ptr[1].convert(a1);
+ // fallthrough
+
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*17, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 17;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ o->via.array.ptr[1] = msgpack::object(a1, z);
+ o->via.array.ptr[2] = msgpack::object(a2, z);
+ o->via.array.ptr[3] = msgpack::object(a3, z);
+ o->via.array.ptr[4] = msgpack::object(a4, z);
+ o->via.array.ptr[5] = msgpack::object(a5, z);
+ o->via.array.ptr[6] = msgpack::object(a6, z);
+ o->via.array.ptr[7] = msgpack::object(a7, z);
+ o->via.array.ptr[8] = msgpack::object(a8, z);
+ o->via.array.ptr[9] = msgpack::object(a9, z);
+ o->via.array.ptr[10] = msgpack::object(a10, z);
+ o->via.array.ptr[11] = msgpack::object(a11, z);
+ o->via.array.ptr[12] = msgpack::object(a12, z);
+ o->via.array.ptr[13] = msgpack::object(a13, z);
+ o->via.array.ptr[14] = msgpack::object(a14, z);
+ o->via.array.ptr[15] = msgpack::object(a15, z);
+ o->via.array.ptr[16] = msgpack::object(a16, z);
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+ A12& a12;
+ A13& a13;
+ A14& a14;
+ A15& a15;
+ A16& a16;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> {
+ typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> value_type;
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> tuple_type;
+ define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(18);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ pk.pack(a12);
+ pk.pack(a13);
+ pk.pack(a14);
+ pk.pack(a15);
+ pk.pack(a16);
+ pk.pack(a17);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 18: ptr[17].convert(a17);
+ // fallthrough
+
+ case 17: ptr[16].convert(a16);
+ // fallthrough
+
+ case 16: ptr[15].convert(a15);
+ // fallthrough
+
+ case 15: ptr[14].convert(a14);
+ // fallthrough
+
+ case 14: ptr[13].convert(a13);
+ // fallthrough
+
+ case 13: ptr[12].convert(a12);
+ // fallthrough
+
+ case 12: ptr[11].convert(a11);
+ // fallthrough
+
+ case 11: ptr[10].convert(a10);
+ // fallthrough
+
+ case 10: ptr[9].convert(a9);
+ // fallthrough
+
+ case 9: ptr[8].convert(a8);
+ // fallthrough
+
+ case 8: ptr[7].convert(a7);
+ // fallthrough
+
+ case 7: ptr[6].convert(a6);
+ // fallthrough
+
+ case 6: ptr[5].convert(a5);
+ // fallthrough
+
+ case 5: ptr[4].convert(a4);
+ // fallthrough
+
+ case 4: ptr[3].convert(a3);
+ // fallthrough
+
+ case 3: ptr[2].convert(a2);
+ // fallthrough
+
+ case 2: ptr[1].convert(a1);
+ // fallthrough
+
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*18, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 18;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ o->via.array.ptr[1] = msgpack::object(a1, z);
+ o->via.array.ptr[2] = msgpack::object(a2, z);
+ o->via.array.ptr[3] = msgpack::object(a3, z);
+ o->via.array.ptr[4] = msgpack::object(a4, z);
+ o->via.array.ptr[5] = msgpack::object(a5, z);
+ o->via.array.ptr[6] = msgpack::object(a6, z);
+ o->via.array.ptr[7] = msgpack::object(a7, z);
+ o->via.array.ptr[8] = msgpack::object(a8, z);
+ o->via.array.ptr[9] = msgpack::object(a9, z);
+ o->via.array.ptr[10] = msgpack::object(a10, z);
+ o->via.array.ptr[11] = msgpack::object(a11, z);
+ o->via.array.ptr[12] = msgpack::object(a12, z);
+ o->via.array.ptr[13] = msgpack::object(a13, z);
+ o->via.array.ptr[14] = msgpack::object(a14, z);
+ o->via.array.ptr[15] = msgpack::object(a15, z);
+ o->via.array.ptr[16] = msgpack::object(a16, z);
+ o->via.array.ptr[17] = msgpack::object(a17, z);
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+ A12& a12;
+ A13& a13;
+ A14& a14;
+ A15& a15;
+ A16& a16;
+ A17& a17;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> {
+ typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> value_type;
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> tuple_type;
+ define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(19);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ pk.pack(a12);
+ pk.pack(a13);
+ pk.pack(a14);
+ pk.pack(a15);
+ pk.pack(a16);
+ pk.pack(a17);
+ pk.pack(a18);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 19: ptr[18].convert(a18);
+ // fallthrough
+
+ case 18: ptr[17].convert(a17);
+ // fallthrough
+
+ case 17: ptr[16].convert(a16);
+ // fallthrough
+
+ case 16: ptr[15].convert(a15);
+ // fallthrough
+
+ case 15: ptr[14].convert(a14);
+ // fallthrough
+
+ case 14: ptr[13].convert(a13);
+ // fallthrough
+
+ case 13: ptr[12].convert(a12);
+ // fallthrough
+
+ case 12: ptr[11].convert(a11);
+ // fallthrough
+
+ case 11: ptr[10].convert(a10);
+ // fallthrough
+
+ case 10: ptr[9].convert(a9);
+ // fallthrough
+
+ case 9: ptr[8].convert(a8);
+ // fallthrough
+
+ case 8: ptr[7].convert(a7);
+ // fallthrough
+
+ case 7: ptr[6].convert(a6);
+ // fallthrough
+
+ case 6: ptr[5].convert(a5);
+ // fallthrough
+
+ case 5: ptr[4].convert(a4);
+ // fallthrough
+
+ case 4: ptr[3].convert(a3);
+ // fallthrough
+
+ case 3: ptr[2].convert(a2);
+ // fallthrough
+
+ case 2: ptr[1].convert(a1);
+ // fallthrough
+
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*19, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 19;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ o->via.array.ptr[1] = msgpack::object(a1, z);
+ o->via.array.ptr[2] = msgpack::object(a2, z);
+ o->via.array.ptr[3] = msgpack::object(a3, z);
+ o->via.array.ptr[4] = msgpack::object(a4, z);
+ o->via.array.ptr[5] = msgpack::object(a5, z);
+ o->via.array.ptr[6] = msgpack::object(a6, z);
+ o->via.array.ptr[7] = msgpack::object(a7, z);
+ o->via.array.ptr[8] = msgpack::object(a8, z);
+ o->via.array.ptr[9] = msgpack::object(a9, z);
+ o->via.array.ptr[10] = msgpack::object(a10, z);
+ o->via.array.ptr[11] = msgpack::object(a11, z);
+ o->via.array.ptr[12] = msgpack::object(a12, z);
+ o->via.array.ptr[13] = msgpack::object(a13, z);
+ o->via.array.ptr[14] = msgpack::object(a14, z);
+ o->via.array.ptr[15] = msgpack::object(a15, z);
+ o->via.array.ptr[16] = msgpack::object(a16, z);
+ o->via.array.ptr[17] = msgpack::object(a17, z);
+ o->via.array.ptr[18] = msgpack::object(a18, z);
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+ A12& a12;
+ A13& a13;
+ A14& a14;
+ A15& a15;
+ A16& a16;
+ A17& a17;
+ A18& a18;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> {
+ typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> value_type;
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> tuple_type;
+ define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(20);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ pk.pack(a12);
+ pk.pack(a13);
+ pk.pack(a14);
+ pk.pack(a15);
+ pk.pack(a16);
+ pk.pack(a17);
+ pk.pack(a18);
+ pk.pack(a19);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 20: ptr[19].convert(a19);
+ // fallthrough
+
+ case 19: ptr[18].convert(a18);
+ // fallthrough
+
+ case 18: ptr[17].convert(a17);
+ // fallthrough
+
+ case 17: ptr[16].convert(a16);
+ // fallthrough
+
+ case 16: ptr[15].convert(a15);
+ // fallthrough
+
+ case 15: ptr[14].convert(a14);
+ // fallthrough
+
+ case 14: ptr[13].convert(a13);
+ // fallthrough
+
+ case 13: ptr[12].convert(a12);
+ // fallthrough
+
+ case 12: ptr[11].convert(a11);
+ // fallthrough
+
+ case 11: ptr[10].convert(a10);
+ // fallthrough
+
+ case 10: ptr[9].convert(a9);
+ // fallthrough
+
+ case 9: ptr[8].convert(a8);
+ // fallthrough
+
+ case 8: ptr[7].convert(a7);
+ // fallthrough
+
+ case 7: ptr[6].convert(a6);
+ // fallthrough
+
+ case 6: ptr[5].convert(a5);
+ // fallthrough
+
+ case 5: ptr[4].convert(a4);
+ // fallthrough
+
+ case 4: ptr[3].convert(a3);
+ // fallthrough
+
+ case 3: ptr[2].convert(a2);
+ // fallthrough
+
+ case 2: ptr[1].convert(a1);
+ // fallthrough
+
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*20, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 20;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ o->via.array.ptr[1] = msgpack::object(a1, z);
+ o->via.array.ptr[2] = msgpack::object(a2, z);
+ o->via.array.ptr[3] = msgpack::object(a3, z);
+ o->via.array.ptr[4] = msgpack::object(a4, z);
+ o->via.array.ptr[5] = msgpack::object(a5, z);
+ o->via.array.ptr[6] = msgpack::object(a6, z);
+ o->via.array.ptr[7] = msgpack::object(a7, z);
+ o->via.array.ptr[8] = msgpack::object(a8, z);
+ o->via.array.ptr[9] = msgpack::object(a9, z);
+ o->via.array.ptr[10] = msgpack::object(a10, z);
+ o->via.array.ptr[11] = msgpack::object(a11, z);
+ o->via.array.ptr[12] = msgpack::object(a12, z);
+ o->via.array.ptr[13] = msgpack::object(a13, z);
+ o->via.array.ptr[14] = msgpack::object(a14, z);
+ o->via.array.ptr[15] = msgpack::object(a15, z);
+ o->via.array.ptr[16] = msgpack::object(a16, z);
+ o->via.array.ptr[17] = msgpack::object(a17, z);
+ o->via.array.ptr[18] = msgpack::object(a18, z);
+ o->via.array.ptr[19] = msgpack::object(a19, z);
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+ A12& a12;
+ A13& a13;
+ A14& a14;
+ A15& a15;
+ A16& a16;
+ A17& a17;
+ A18& a18;
+ A19& a19;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20> {
+ typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20> value_type;
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20> tuple_type;
+ define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19, A20& _a20) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(21);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ pk.pack(a12);
+ pk.pack(a13);
+ pk.pack(a14);
+ pk.pack(a15);
+ pk.pack(a16);
+ pk.pack(a17);
+ pk.pack(a18);
+ pk.pack(a19);
+ pk.pack(a20);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 21: ptr[20].convert(a20);
+ // fallthrough
+
+ case 20: ptr[19].convert(a19);
+ // fallthrough
+
+ case 19: ptr[18].convert(a18);
+ // fallthrough
+
+ case 18: ptr[17].convert(a17);
+ // fallthrough
+
+ case 17: ptr[16].convert(a16);
+ // fallthrough
+
+ case 16: ptr[15].convert(a15);
+ // fallthrough
+
+ case 15: ptr[14].convert(a14);
+ // fallthrough
+
+ case 14: ptr[13].convert(a13);
+ // fallthrough
+
+ case 13: ptr[12].convert(a12);
+ // fallthrough
+
+ case 12: ptr[11].convert(a11);
+ // fallthrough
+
+ case 11: ptr[10].convert(a10);
+ // fallthrough
+
+ case 10: ptr[9].convert(a9);
+ // fallthrough
+
+ case 9: ptr[8].convert(a8);
+ // fallthrough
+
+ case 8: ptr[7].convert(a7);
+ // fallthrough
+
+ case 7: ptr[6].convert(a6);
+ // fallthrough
+
+ case 6: ptr[5].convert(a5);
+ // fallthrough
+
+ case 5: ptr[4].convert(a4);
+ // fallthrough
+
+ case 4: ptr[3].convert(a3);
+ // fallthrough
+
+ case 3: ptr[2].convert(a2);
+ // fallthrough
+
+ case 2: ptr[1].convert(a1);
+ // fallthrough
+
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*21, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 21;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ o->via.array.ptr[1] = msgpack::object(a1, z);
+ o->via.array.ptr[2] = msgpack::object(a2, z);
+ o->via.array.ptr[3] = msgpack::object(a3, z);
+ o->via.array.ptr[4] = msgpack::object(a4, z);
+ o->via.array.ptr[5] = msgpack::object(a5, z);
+ o->via.array.ptr[6] = msgpack::object(a6, z);
+ o->via.array.ptr[7] = msgpack::object(a7, z);
+ o->via.array.ptr[8] = msgpack::object(a8, z);
+ o->via.array.ptr[9] = msgpack::object(a9, z);
+ o->via.array.ptr[10] = msgpack::object(a10, z);
+ o->via.array.ptr[11] = msgpack::object(a11, z);
+ o->via.array.ptr[12] = msgpack::object(a12, z);
+ o->via.array.ptr[13] = msgpack::object(a13, z);
+ o->via.array.ptr[14] = msgpack::object(a14, z);
+ o->via.array.ptr[15] = msgpack::object(a15, z);
+ o->via.array.ptr[16] = msgpack::object(a16, z);
+ o->via.array.ptr[17] = msgpack::object(a17, z);
+ o->via.array.ptr[18] = msgpack::object(a18, z);
+ o->via.array.ptr[19] = msgpack::object(a19, z);
+ o->via.array.ptr[20] = msgpack::object(a20, z);
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+ A12& a12;
+ A13& a13;
+ A14& a14;
+ A15& a15;
+ A16& a16;
+ A17& a17;
+ A18& a18;
+ A19& a19;
+ A20& a20;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> {
+ typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> value_type;
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> tuple_type;
+ define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19, A20& _a20, A21& _a21) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(22);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ pk.pack(a12);
+ pk.pack(a13);
+ pk.pack(a14);
+ pk.pack(a15);
+ pk.pack(a16);
+ pk.pack(a17);
+ pk.pack(a18);
+ pk.pack(a19);
+ pk.pack(a20);
+ pk.pack(a21);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 22: ptr[21].convert(a21);
+ // fallthrough
+
+ case 21: ptr[20].convert(a20);
+ // fallthrough
+
+ case 20: ptr[19].convert(a19);
+ // fallthrough
+
+ case 19: ptr[18].convert(a18);
+ // fallthrough
+
+ case 18: ptr[17].convert(a17);
+ // fallthrough
+
+ case 17: ptr[16].convert(a16);
+ // fallthrough
+
+ case 16: ptr[15].convert(a15);
+ // fallthrough
+
+ case 15: ptr[14].convert(a14);
+ // fallthrough
+
+ case 14: ptr[13].convert(a13);
+ // fallthrough
+
+ case 13: ptr[12].convert(a12);
+ // fallthrough
+
+ case 12: ptr[11].convert(a11);
+ // fallthrough
+
+ case 11: ptr[10].convert(a10);
+ // fallthrough
+
+ case 10: ptr[9].convert(a9);
+ // fallthrough
+
+ case 9: ptr[8].convert(a8);
+ // fallthrough
+
+ case 8: ptr[7].convert(a7);
+ // fallthrough
+
+ case 7: ptr[6].convert(a6);
+ // fallthrough
+
+ case 6: ptr[5].convert(a5);
+ // fallthrough
+
+ case 5: ptr[4].convert(a4);
+ // fallthrough
+
+ case 4: ptr[3].convert(a3);
+ // fallthrough
+
+ case 3: ptr[2].convert(a2);
+ // fallthrough
+
+ case 2: ptr[1].convert(a1);
+ // fallthrough
+
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*22, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 22;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ o->via.array.ptr[1] = msgpack::object(a1, z);
+ o->via.array.ptr[2] = msgpack::object(a2, z);
+ o->via.array.ptr[3] = msgpack::object(a3, z);
+ o->via.array.ptr[4] = msgpack::object(a4, z);
+ o->via.array.ptr[5] = msgpack::object(a5, z);
+ o->via.array.ptr[6] = msgpack::object(a6, z);
+ o->via.array.ptr[7] = msgpack::object(a7, z);
+ o->via.array.ptr[8] = msgpack::object(a8, z);
+ o->via.array.ptr[9] = msgpack::object(a9, z);
+ o->via.array.ptr[10] = msgpack::object(a10, z);
+ o->via.array.ptr[11] = msgpack::object(a11, z);
+ o->via.array.ptr[12] = msgpack::object(a12, z);
+ o->via.array.ptr[13] = msgpack::object(a13, z);
+ o->via.array.ptr[14] = msgpack::object(a14, z);
+ o->via.array.ptr[15] = msgpack::object(a15, z);
+ o->via.array.ptr[16] = msgpack::object(a16, z);
+ o->via.array.ptr[17] = msgpack::object(a17, z);
+ o->via.array.ptr[18] = msgpack::object(a18, z);
+ o->via.array.ptr[19] = msgpack::object(a19, z);
+ o->via.array.ptr[20] = msgpack::object(a20, z);
+ o->via.array.ptr[21] = msgpack::object(a21, z);
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+ A12& a12;
+ A13& a13;
+ A14& a14;
+ A15& a15;
+ A16& a16;
+ A17& a17;
+ A18& a18;
+ A19& a19;
+ A20& a20;
+ A21& a21;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22> {
+ typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22> value_type;
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22> tuple_type;
+ define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19, A20& _a20, A21& _a21, A22& _a22) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(23);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ pk.pack(a12);
+ pk.pack(a13);
+ pk.pack(a14);
+ pk.pack(a15);
+ pk.pack(a16);
+ pk.pack(a17);
+ pk.pack(a18);
+ pk.pack(a19);
+ pk.pack(a20);
+ pk.pack(a21);
+ pk.pack(a22);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 23: ptr[22].convert(a22);
+ // fallthrough
+
+ case 22: ptr[21].convert(a21);
+ // fallthrough
+
+ case 21: ptr[20].convert(a20);
+ // fallthrough
+
+ case 20: ptr[19].convert(a19);
+ // fallthrough
+
+ case 19: ptr[18].convert(a18);
+ // fallthrough
+
+ case 18: ptr[17].convert(a17);
+ // fallthrough
+
+ case 17: ptr[16].convert(a16);
+ // fallthrough
+
+ case 16: ptr[15].convert(a15);
+ // fallthrough
+
+ case 15: ptr[14].convert(a14);
+ // fallthrough
+
+ case 14: ptr[13].convert(a13);
+ // fallthrough
+
+ case 13: ptr[12].convert(a12);
+ // fallthrough
+
+ case 12: ptr[11].convert(a11);
+ // fallthrough
+
+ case 11: ptr[10].convert(a10);
+ // fallthrough
+
+ case 10: ptr[9].convert(a9);
+ // fallthrough
+
+ case 9: ptr[8].convert(a8);
+ // fallthrough
+
+ case 8: ptr[7].convert(a7);
+ // fallthrough
+
+ case 7: ptr[6].convert(a6);
+ // fallthrough
+
+ case 6: ptr[5].convert(a5);
+ // fallthrough
+
+ case 5: ptr[4].convert(a4);
+ // fallthrough
+
+ case 4: ptr[3].convert(a3);
+ // fallthrough
+
+ case 3: ptr[2].convert(a2);
+ // fallthrough
+
+ case 2: ptr[1].convert(a1);
+ // fallthrough
+
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*23, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 23;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ o->via.array.ptr[1] = msgpack::object(a1, z);
+ o->via.array.ptr[2] = msgpack::object(a2, z);
+ o->via.array.ptr[3] = msgpack::object(a3, z);
+ o->via.array.ptr[4] = msgpack::object(a4, z);
+ o->via.array.ptr[5] = msgpack::object(a5, z);
+ o->via.array.ptr[6] = msgpack::object(a6, z);
+ o->via.array.ptr[7] = msgpack::object(a7, z);
+ o->via.array.ptr[8] = msgpack::object(a8, z);
+ o->via.array.ptr[9] = msgpack::object(a9, z);
+ o->via.array.ptr[10] = msgpack::object(a10, z);
+ o->via.array.ptr[11] = msgpack::object(a11, z);
+ o->via.array.ptr[12] = msgpack::object(a12, z);
+ o->via.array.ptr[13] = msgpack::object(a13, z);
+ o->via.array.ptr[14] = msgpack::object(a14, z);
+ o->via.array.ptr[15] = msgpack::object(a15, z);
+ o->via.array.ptr[16] = msgpack::object(a16, z);
+ o->via.array.ptr[17] = msgpack::object(a17, z);
+ o->via.array.ptr[18] = msgpack::object(a18, z);
+ o->via.array.ptr[19] = msgpack::object(a19, z);
+ o->via.array.ptr[20] = msgpack::object(a20, z);
+ o->via.array.ptr[21] = msgpack::object(a21, z);
+ o->via.array.ptr[22] = msgpack::object(a22, z);
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+ A12& a12;
+ A13& a13;
+ A14& a14;
+ A15& a15;
+ A16& a16;
+ A17& a17;
+ A18& a18;
+ A19& a19;
+ A20& a20;
+ A21& a21;
+ A22& a22;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23> {
+ typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23> value_type;
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23> tuple_type;
+ define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19, A20& _a20, A21& _a21, A22& _a22, A23& _a23) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(24);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ pk.pack(a12);
+ pk.pack(a13);
+ pk.pack(a14);
+ pk.pack(a15);
+ pk.pack(a16);
+ pk.pack(a17);
+ pk.pack(a18);
+ pk.pack(a19);
+ pk.pack(a20);
+ pk.pack(a21);
+ pk.pack(a22);
+ pk.pack(a23);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 24: ptr[23].convert(a23);
+ // fallthrough
+
+ case 23: ptr[22].convert(a22);
+ // fallthrough
+
+ case 22: ptr[21].convert(a21);
+ // fallthrough
+
+ case 21: ptr[20].convert(a20);
+ // fallthrough
+
+ case 20: ptr[19].convert(a19);
+ // fallthrough
+
+ case 19: ptr[18].convert(a18);
+ // fallthrough
+
+ case 18: ptr[17].convert(a17);
+ // fallthrough
+
+ case 17: ptr[16].convert(a16);
+ // fallthrough
+
+ case 16: ptr[15].convert(a15);
+ // fallthrough
+
+ case 15: ptr[14].convert(a14);
+ // fallthrough
+
+ case 14: ptr[13].convert(a13);
+ // fallthrough
+
+ case 13: ptr[12].convert(a12);
+ // fallthrough
+
+ case 12: ptr[11].convert(a11);
+ // fallthrough
+
+ case 11: ptr[10].convert(a10);
+ // fallthrough
+
+ case 10: ptr[9].convert(a9);
+ // fallthrough
+
+ case 9: ptr[8].convert(a8);
+ // fallthrough
+
+ case 8: ptr[7].convert(a7);
+ // fallthrough
+
+ case 7: ptr[6].convert(a6);
+ // fallthrough
+
+ case 6: ptr[5].convert(a5);
+ // fallthrough
+
+ case 5: ptr[4].convert(a4);
+ // fallthrough
+
+ case 4: ptr[3].convert(a3);
+ // fallthrough
+
+ case 3: ptr[2].convert(a2);
+ // fallthrough
+
+ case 2: ptr[1].convert(a1);
+ // fallthrough
+
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*24, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 24;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ o->via.array.ptr[1] = msgpack::object(a1, z);
+ o->via.array.ptr[2] = msgpack::object(a2, z);
+ o->via.array.ptr[3] = msgpack::object(a3, z);
+ o->via.array.ptr[4] = msgpack::object(a4, z);
+ o->via.array.ptr[5] = msgpack::object(a5, z);
+ o->via.array.ptr[6] = msgpack::object(a6, z);
+ o->via.array.ptr[7] = msgpack::object(a7, z);
+ o->via.array.ptr[8] = msgpack::object(a8, z);
+ o->via.array.ptr[9] = msgpack::object(a9, z);
+ o->via.array.ptr[10] = msgpack::object(a10, z);
+ o->via.array.ptr[11] = msgpack::object(a11, z);
+ o->via.array.ptr[12] = msgpack::object(a12, z);
+ o->via.array.ptr[13] = msgpack::object(a13, z);
+ o->via.array.ptr[14] = msgpack::object(a14, z);
+ o->via.array.ptr[15] = msgpack::object(a15, z);
+ o->via.array.ptr[16] = msgpack::object(a16, z);
+ o->via.array.ptr[17] = msgpack::object(a17, z);
+ o->via.array.ptr[18] = msgpack::object(a18, z);
+ o->via.array.ptr[19] = msgpack::object(a19, z);
+ o->via.array.ptr[20] = msgpack::object(a20, z);
+ o->via.array.ptr[21] = msgpack::object(a21, z);
+ o->via.array.ptr[22] = msgpack::object(a22, z);
+ o->via.array.ptr[23] = msgpack::object(a23, z);
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+ A12& a12;
+ A13& a13;
+ A14& a14;
+ A15& a15;
+ A16& a16;
+ A17& a17;
+ A18& a18;
+ A19& a19;
+ A20& a20;
+ A21& a21;
+ A22& a22;
+ A23& a23;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24> {
+ typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24> value_type;
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24> tuple_type;
+ define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19, A20& _a20, A21& _a21, A22& _a22, A23& _a23, A24& _a24) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(25);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ pk.pack(a12);
+ pk.pack(a13);
+ pk.pack(a14);
+ pk.pack(a15);
+ pk.pack(a16);
+ pk.pack(a17);
+ pk.pack(a18);
+ pk.pack(a19);
+ pk.pack(a20);
+ pk.pack(a21);
+ pk.pack(a22);
+ pk.pack(a23);
+ pk.pack(a24);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 25: ptr[24].convert(a24);
+ // fallthrough
+
+ case 24: ptr[23].convert(a23);
+ // fallthrough
+
+ case 23: ptr[22].convert(a22);
+ // fallthrough
+
+ case 22: ptr[21].convert(a21);
+ // fallthrough
+
+ case 21: ptr[20].convert(a20);
+ // fallthrough
+
+ case 20: ptr[19].convert(a19);
+ // fallthrough
+
+ case 19: ptr[18].convert(a18);
+ // fallthrough
+
+ case 18: ptr[17].convert(a17);
+ // fallthrough
+
+ case 17: ptr[16].convert(a16);
+ // fallthrough
+
+ case 16: ptr[15].convert(a15);
+ // fallthrough
+
+ case 15: ptr[14].convert(a14);
+ // fallthrough
+
+ case 14: ptr[13].convert(a13);
+ // fallthrough
+
+ case 13: ptr[12].convert(a12);
+ // fallthrough
+
+ case 12: ptr[11].convert(a11);
+ // fallthrough
+
+ case 11: ptr[10].convert(a10);
+ // fallthrough
+
+ case 10: ptr[9].convert(a9);
+ // fallthrough
+
+ case 9: ptr[8].convert(a8);
+ // fallthrough
+
+ case 8: ptr[7].convert(a7);
+ // fallthrough
+
+ case 7: ptr[6].convert(a6);
+ // fallthrough
+
+ case 6: ptr[5].convert(a5);
+ // fallthrough
+
+ case 5: ptr[4].convert(a4);
+ // fallthrough
+
+ case 4: ptr[3].convert(a3);
+ // fallthrough
+
+ case 3: ptr[2].convert(a2);
+ // fallthrough
+
+ case 2: ptr[1].convert(a1);
+ // fallthrough
+
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*25, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 25;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ o->via.array.ptr[1] = msgpack::object(a1, z);
+ o->via.array.ptr[2] = msgpack::object(a2, z);
+ o->via.array.ptr[3] = msgpack::object(a3, z);
+ o->via.array.ptr[4] = msgpack::object(a4, z);
+ o->via.array.ptr[5] = msgpack::object(a5, z);
+ o->via.array.ptr[6] = msgpack::object(a6, z);
+ o->via.array.ptr[7] = msgpack::object(a7, z);
+ o->via.array.ptr[8] = msgpack::object(a8, z);
+ o->via.array.ptr[9] = msgpack::object(a9, z);
+ o->via.array.ptr[10] = msgpack::object(a10, z);
+ o->via.array.ptr[11] = msgpack::object(a11, z);
+ o->via.array.ptr[12] = msgpack::object(a12, z);
+ o->via.array.ptr[13] = msgpack::object(a13, z);
+ o->via.array.ptr[14] = msgpack::object(a14, z);
+ o->via.array.ptr[15] = msgpack::object(a15, z);
+ o->via.array.ptr[16] = msgpack::object(a16, z);
+ o->via.array.ptr[17] = msgpack::object(a17, z);
+ o->via.array.ptr[18] = msgpack::object(a18, z);
+ o->via.array.ptr[19] = msgpack::object(a19, z);
+ o->via.array.ptr[20] = msgpack::object(a20, z);
+ o->via.array.ptr[21] = msgpack::object(a21, z);
+ o->via.array.ptr[22] = msgpack::object(a22, z);
+ o->via.array.ptr[23] = msgpack::object(a23, z);
+ o->via.array.ptr[24] = msgpack::object(a24, z);
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+ A12& a12;
+ A13& a13;
+ A14& a14;
+ A15& a15;
+ A16& a16;
+ A17& a17;
+ A18& a18;
+ A19& a19;
+ A20& a20;
+ A21& a21;
+ A22& a22;
+ A23& a23;
+ A24& a24;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25> {
+ typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25> value_type;
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25> tuple_type;
+ define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19, A20& _a20, A21& _a21, A22& _a22, A23& _a23, A24& _a24, A25& _a25) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(26);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ pk.pack(a12);
+ pk.pack(a13);
+ pk.pack(a14);
+ pk.pack(a15);
+ pk.pack(a16);
+ pk.pack(a17);
+ pk.pack(a18);
+ pk.pack(a19);
+ pk.pack(a20);
+ pk.pack(a21);
+ pk.pack(a22);
+ pk.pack(a23);
+ pk.pack(a24);
+ pk.pack(a25);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 26: ptr[25].convert(a25);
+ // fallthrough
+
+ case 25: ptr[24].convert(a24);
+ // fallthrough
+
+ case 24: ptr[23].convert(a23);
+ // fallthrough
+
+ case 23: ptr[22].convert(a22);
+ // fallthrough
+
+ case 22: ptr[21].convert(a21);
+ // fallthrough
+
+ case 21: ptr[20].convert(a20);
+ // fallthrough
+
+ case 20: ptr[19].convert(a19);
+ // fallthrough
+
+ case 19: ptr[18].convert(a18);
+ // fallthrough
+
+ case 18: ptr[17].convert(a17);
+ // fallthrough
+
+ case 17: ptr[16].convert(a16);
+ // fallthrough
+
+ case 16: ptr[15].convert(a15);
+ // fallthrough
+
+ case 15: ptr[14].convert(a14);
+ // fallthrough
+
+ case 14: ptr[13].convert(a13);
+ // fallthrough
+
+ case 13: ptr[12].convert(a12);
+ // fallthrough
+
+ case 12: ptr[11].convert(a11);
+ // fallthrough
+
+ case 11: ptr[10].convert(a10);
+ // fallthrough
+
+ case 10: ptr[9].convert(a9);
+ // fallthrough
+
+ case 9: ptr[8].convert(a8);
+ // fallthrough
+
+ case 8: ptr[7].convert(a7);
+ // fallthrough
+
+ case 7: ptr[6].convert(a6);
+ // fallthrough
+
+ case 6: ptr[5].convert(a5);
+ // fallthrough
+
+ case 5: ptr[4].convert(a4);
+ // fallthrough
+
+ case 4: ptr[3].convert(a3);
+ // fallthrough
+
+ case 3: ptr[2].convert(a2);
+ // fallthrough
+
+ case 2: ptr[1].convert(a1);
+ // fallthrough
+
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*26, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 26;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ o->via.array.ptr[1] = msgpack::object(a1, z);
+ o->via.array.ptr[2] = msgpack::object(a2, z);
+ o->via.array.ptr[3] = msgpack::object(a3, z);
+ o->via.array.ptr[4] = msgpack::object(a4, z);
+ o->via.array.ptr[5] = msgpack::object(a5, z);
+ o->via.array.ptr[6] = msgpack::object(a6, z);
+ o->via.array.ptr[7] = msgpack::object(a7, z);
+ o->via.array.ptr[8] = msgpack::object(a8, z);
+ o->via.array.ptr[9] = msgpack::object(a9, z);
+ o->via.array.ptr[10] = msgpack::object(a10, z);
+ o->via.array.ptr[11] = msgpack::object(a11, z);
+ o->via.array.ptr[12] = msgpack::object(a12, z);
+ o->via.array.ptr[13] = msgpack::object(a13, z);
+ o->via.array.ptr[14] = msgpack::object(a14, z);
+ o->via.array.ptr[15] = msgpack::object(a15, z);
+ o->via.array.ptr[16] = msgpack::object(a16, z);
+ o->via.array.ptr[17] = msgpack::object(a17, z);
+ o->via.array.ptr[18] = msgpack::object(a18, z);
+ o->via.array.ptr[19] = msgpack::object(a19, z);
+ o->via.array.ptr[20] = msgpack::object(a20, z);
+ o->via.array.ptr[21] = msgpack::object(a21, z);
+ o->via.array.ptr[22] = msgpack::object(a22, z);
+ o->via.array.ptr[23] = msgpack::object(a23, z);
+ o->via.array.ptr[24] = msgpack::object(a24, z);
+ o->via.array.ptr[25] = msgpack::object(a25, z);
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+ A12& a12;
+ A13& a13;
+ A14& a14;
+ A15& a15;
+ A16& a16;
+ A17& a17;
+ A18& a18;
+ A19& a19;
+ A20& a20;
+ A21& a21;
+ A22& a22;
+ A23& a23;
+ A24& a24;
+ A25& a25;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26> {
+ typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26> value_type;
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26> tuple_type;
+ define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19, A20& _a20, A21& _a21, A22& _a22, A23& _a23, A24& _a24, A25& _a25, A26& _a26) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(27);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ pk.pack(a12);
+ pk.pack(a13);
+ pk.pack(a14);
+ pk.pack(a15);
+ pk.pack(a16);
+ pk.pack(a17);
+ pk.pack(a18);
+ pk.pack(a19);
+ pk.pack(a20);
+ pk.pack(a21);
+ pk.pack(a22);
+ pk.pack(a23);
+ pk.pack(a24);
+ pk.pack(a25);
+ pk.pack(a26);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 27: ptr[26].convert(a26);
+ // fallthrough
+
+ case 26: ptr[25].convert(a25);
+ // fallthrough
+
+ case 25: ptr[24].convert(a24);
+ // fallthrough
+
+ case 24: ptr[23].convert(a23);
+ // fallthrough
+
+ case 23: ptr[22].convert(a22);
+ // fallthrough
+
+ case 22: ptr[21].convert(a21);
+ // fallthrough
+
+ case 21: ptr[20].convert(a20);
+ // fallthrough
+
+ case 20: ptr[19].convert(a19);
+ // fallthrough
+
+ case 19: ptr[18].convert(a18);
+ // fallthrough
+
+ case 18: ptr[17].convert(a17);
+ // fallthrough
+
+ case 17: ptr[16].convert(a16);
+ // fallthrough
+
+ case 16: ptr[15].convert(a15);
+ // fallthrough
+
+ case 15: ptr[14].convert(a14);
+ // fallthrough
+
+ case 14: ptr[13].convert(a13);
+ // fallthrough
+
+ case 13: ptr[12].convert(a12);
+ // fallthrough
+
+ case 12: ptr[11].convert(a11);
+ // fallthrough
+
+ case 11: ptr[10].convert(a10);
+ // fallthrough
+
+ case 10: ptr[9].convert(a9);
+ // fallthrough
+
+ case 9: ptr[8].convert(a8);
+ // fallthrough
+
+ case 8: ptr[7].convert(a7);
+ // fallthrough
+
+ case 7: ptr[6].convert(a6);
+ // fallthrough
+
+ case 6: ptr[5].convert(a5);
+ // fallthrough
+
+ case 5: ptr[4].convert(a4);
+ // fallthrough
+
+ case 4: ptr[3].convert(a3);
+ // fallthrough
+
+ case 3: ptr[2].convert(a2);
+ // fallthrough
+
+ case 2: ptr[1].convert(a1);
+ // fallthrough
+
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*27, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 27;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ o->via.array.ptr[1] = msgpack::object(a1, z);
+ o->via.array.ptr[2] = msgpack::object(a2, z);
+ o->via.array.ptr[3] = msgpack::object(a3, z);
+ o->via.array.ptr[4] = msgpack::object(a4, z);
+ o->via.array.ptr[5] = msgpack::object(a5, z);
+ o->via.array.ptr[6] = msgpack::object(a6, z);
+ o->via.array.ptr[7] = msgpack::object(a7, z);
+ o->via.array.ptr[8] = msgpack::object(a8, z);
+ o->via.array.ptr[9] = msgpack::object(a9, z);
+ o->via.array.ptr[10] = msgpack::object(a10, z);
+ o->via.array.ptr[11] = msgpack::object(a11, z);
+ o->via.array.ptr[12] = msgpack::object(a12, z);
+ o->via.array.ptr[13] = msgpack::object(a13, z);
+ o->via.array.ptr[14] = msgpack::object(a14, z);
+ o->via.array.ptr[15] = msgpack::object(a15, z);
+ o->via.array.ptr[16] = msgpack::object(a16, z);
+ o->via.array.ptr[17] = msgpack::object(a17, z);
+ o->via.array.ptr[18] = msgpack::object(a18, z);
+ o->via.array.ptr[19] = msgpack::object(a19, z);
+ o->via.array.ptr[20] = msgpack::object(a20, z);
+ o->via.array.ptr[21] = msgpack::object(a21, z);
+ o->via.array.ptr[22] = msgpack::object(a22, z);
+ o->via.array.ptr[23] = msgpack::object(a23, z);
+ o->via.array.ptr[24] = msgpack::object(a24, z);
+ o->via.array.ptr[25] = msgpack::object(a25, z);
+ o->via.array.ptr[26] = msgpack::object(a26, z);
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+ A12& a12;
+ A13& a13;
+ A14& a14;
+ A15& a15;
+ A16& a16;
+ A17& a17;
+ A18& a18;
+ A19& a19;
+ A20& a20;
+ A21& a21;
+ A22& a22;
+ A23& a23;
+ A24& a24;
+ A25& a25;
+ A26& a26;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27> {
+ typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27> value_type;
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27> tuple_type;
+ define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19, A20& _a20, A21& _a21, A22& _a22, A23& _a23, A24& _a24, A25& _a25, A26& _a26, A27& _a27) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26), a27(_a27) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(28);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ pk.pack(a12);
+ pk.pack(a13);
+ pk.pack(a14);
+ pk.pack(a15);
+ pk.pack(a16);
+ pk.pack(a17);
+ pk.pack(a18);
+ pk.pack(a19);
+ pk.pack(a20);
+ pk.pack(a21);
+ pk.pack(a22);
+ pk.pack(a23);
+ pk.pack(a24);
+ pk.pack(a25);
+ pk.pack(a26);
+ pk.pack(a27);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 28: ptr[27].convert(a27);
+ // fallthrough
+
+ case 27: ptr[26].convert(a26);
+ // fallthrough
+
+ case 26: ptr[25].convert(a25);
+ // fallthrough
+
+ case 25: ptr[24].convert(a24);
+ // fallthrough
+
+ case 24: ptr[23].convert(a23);
+ // fallthrough
+
+ case 23: ptr[22].convert(a22);
+ // fallthrough
+
+ case 22: ptr[21].convert(a21);
+ // fallthrough
+
+ case 21: ptr[20].convert(a20);
+ // fallthrough
+
+ case 20: ptr[19].convert(a19);
+ // fallthrough
+
+ case 19: ptr[18].convert(a18);
+ // fallthrough
+
+ case 18: ptr[17].convert(a17);
+ // fallthrough
+
+ case 17: ptr[16].convert(a16);
+ // fallthrough
+
+ case 16: ptr[15].convert(a15);
+ // fallthrough
+
+ case 15: ptr[14].convert(a14);
+ // fallthrough
+
+ case 14: ptr[13].convert(a13);
+ // fallthrough
+
+ case 13: ptr[12].convert(a12);
+ // fallthrough
+
+ case 12: ptr[11].convert(a11);
+ // fallthrough
+
+ case 11: ptr[10].convert(a10);
+ // fallthrough
+
+ case 10: ptr[9].convert(a9);
+ // fallthrough
+
+ case 9: ptr[8].convert(a8);
+ // fallthrough
+
+ case 8: ptr[7].convert(a7);
+ // fallthrough
+
+ case 7: ptr[6].convert(a6);
+ // fallthrough
+
+ case 6: ptr[5].convert(a5);
+ // fallthrough
+
+ case 5: ptr[4].convert(a4);
+ // fallthrough
+
+ case 4: ptr[3].convert(a3);
+ // fallthrough
+
+ case 3: ptr[2].convert(a2);
+ // fallthrough
+
+ case 2: ptr[1].convert(a1);
+ // fallthrough
+
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*28, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 28;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ o->via.array.ptr[1] = msgpack::object(a1, z);
+ o->via.array.ptr[2] = msgpack::object(a2, z);
+ o->via.array.ptr[3] = msgpack::object(a3, z);
+ o->via.array.ptr[4] = msgpack::object(a4, z);
+ o->via.array.ptr[5] = msgpack::object(a5, z);
+ o->via.array.ptr[6] = msgpack::object(a6, z);
+ o->via.array.ptr[7] = msgpack::object(a7, z);
+ o->via.array.ptr[8] = msgpack::object(a8, z);
+ o->via.array.ptr[9] = msgpack::object(a9, z);
+ o->via.array.ptr[10] = msgpack::object(a10, z);
+ o->via.array.ptr[11] = msgpack::object(a11, z);
+ o->via.array.ptr[12] = msgpack::object(a12, z);
+ o->via.array.ptr[13] = msgpack::object(a13, z);
+ o->via.array.ptr[14] = msgpack::object(a14, z);
+ o->via.array.ptr[15] = msgpack::object(a15, z);
+ o->via.array.ptr[16] = msgpack::object(a16, z);
+ o->via.array.ptr[17] = msgpack::object(a17, z);
+ o->via.array.ptr[18] = msgpack::object(a18, z);
+ o->via.array.ptr[19] = msgpack::object(a19, z);
+ o->via.array.ptr[20] = msgpack::object(a20, z);
+ o->via.array.ptr[21] = msgpack::object(a21, z);
+ o->via.array.ptr[22] = msgpack::object(a22, z);
+ o->via.array.ptr[23] = msgpack::object(a23, z);
+ o->via.array.ptr[24] = msgpack::object(a24, z);
+ o->via.array.ptr[25] = msgpack::object(a25, z);
+ o->via.array.ptr[26] = msgpack::object(a26, z);
+ o->via.array.ptr[27] = msgpack::object(a27, z);
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+ A12& a12;
+ A13& a13;
+ A14& a14;
+ A15& a15;
+ A16& a16;
+ A17& a17;
+ A18& a18;
+ A19& a19;
+ A20& a20;
+ A21& a21;
+ A22& a22;
+ A23& a23;
+ A24& a24;
+ A25& a25;
+ A26& a26;
+ A27& a27;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28> {
+ typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28> value_type;
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28> tuple_type;
+ define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19, A20& _a20, A21& _a21, A22& _a22, A23& _a23, A24& _a24, A25& _a25, A26& _a26, A27& _a27, A28& _a28) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26), a27(_a27), a28(_a28) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(29);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ pk.pack(a12);
+ pk.pack(a13);
+ pk.pack(a14);
+ pk.pack(a15);
+ pk.pack(a16);
+ pk.pack(a17);
+ pk.pack(a18);
+ pk.pack(a19);
+ pk.pack(a20);
+ pk.pack(a21);
+ pk.pack(a22);
+ pk.pack(a23);
+ pk.pack(a24);
+ pk.pack(a25);
+ pk.pack(a26);
+ pk.pack(a27);
+ pk.pack(a28);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 29: ptr[28].convert(a28);
+ // fallthrough
+
+ case 28: ptr[27].convert(a27);
+ // fallthrough
+
+ case 27: ptr[26].convert(a26);
+ // fallthrough
+
+ case 26: ptr[25].convert(a25);
+ // fallthrough
+
+ case 25: ptr[24].convert(a24);
+ // fallthrough
+
+ case 24: ptr[23].convert(a23);
+ // fallthrough
+
+ case 23: ptr[22].convert(a22);
+ // fallthrough
+
+ case 22: ptr[21].convert(a21);
+ // fallthrough
+
+ case 21: ptr[20].convert(a20);
+ // fallthrough
+
+ case 20: ptr[19].convert(a19);
+ // fallthrough
+
+ case 19: ptr[18].convert(a18);
+ // fallthrough
+
+ case 18: ptr[17].convert(a17);
+ // fallthrough
+
+ case 17: ptr[16].convert(a16);
+ // fallthrough
+
+ case 16: ptr[15].convert(a15);
+ // fallthrough
+
+ case 15: ptr[14].convert(a14);
+ // fallthrough
+
+ case 14: ptr[13].convert(a13);
+ // fallthrough
+
+ case 13: ptr[12].convert(a12);
+ // fallthrough
+
+ case 12: ptr[11].convert(a11);
+ // fallthrough
+
+ case 11: ptr[10].convert(a10);
+ // fallthrough
+
+ case 10: ptr[9].convert(a9);
+ // fallthrough
+
+ case 9: ptr[8].convert(a8);
+ // fallthrough
+
+ case 8: ptr[7].convert(a7);
+ // fallthrough
+
+ case 7: ptr[6].convert(a6);
+ // fallthrough
+
+ case 6: ptr[5].convert(a5);
+ // fallthrough
+
+ case 5: ptr[4].convert(a4);
+ // fallthrough
+
+ case 4: ptr[3].convert(a3);
+ // fallthrough
+
+ case 3: ptr[2].convert(a2);
+ // fallthrough
+
+ case 2: ptr[1].convert(a1);
+ // fallthrough
+
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*29, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 29;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ o->via.array.ptr[1] = msgpack::object(a1, z);
+ o->via.array.ptr[2] = msgpack::object(a2, z);
+ o->via.array.ptr[3] = msgpack::object(a3, z);
+ o->via.array.ptr[4] = msgpack::object(a4, z);
+ o->via.array.ptr[5] = msgpack::object(a5, z);
+ o->via.array.ptr[6] = msgpack::object(a6, z);
+ o->via.array.ptr[7] = msgpack::object(a7, z);
+ o->via.array.ptr[8] = msgpack::object(a8, z);
+ o->via.array.ptr[9] = msgpack::object(a9, z);
+ o->via.array.ptr[10] = msgpack::object(a10, z);
+ o->via.array.ptr[11] = msgpack::object(a11, z);
+ o->via.array.ptr[12] = msgpack::object(a12, z);
+ o->via.array.ptr[13] = msgpack::object(a13, z);
+ o->via.array.ptr[14] = msgpack::object(a14, z);
+ o->via.array.ptr[15] = msgpack::object(a15, z);
+ o->via.array.ptr[16] = msgpack::object(a16, z);
+ o->via.array.ptr[17] = msgpack::object(a17, z);
+ o->via.array.ptr[18] = msgpack::object(a18, z);
+ o->via.array.ptr[19] = msgpack::object(a19, z);
+ o->via.array.ptr[20] = msgpack::object(a20, z);
+ o->via.array.ptr[21] = msgpack::object(a21, z);
+ o->via.array.ptr[22] = msgpack::object(a22, z);
+ o->via.array.ptr[23] = msgpack::object(a23, z);
+ o->via.array.ptr[24] = msgpack::object(a24, z);
+ o->via.array.ptr[25] = msgpack::object(a25, z);
+ o->via.array.ptr[26] = msgpack::object(a26, z);
+ o->via.array.ptr[27] = msgpack::object(a27, z);
+ o->via.array.ptr[28] = msgpack::object(a28, z);
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+ A12& a12;
+ A13& a13;
+ A14& a14;
+ A15& a15;
+ A16& a16;
+ A17& a17;
+ A18& a18;
+ A19& a19;
+ A20& a20;
+ A21& a21;
+ A22& a22;
+ A23& a23;
+ A24& a24;
+ A25& a25;
+ A26& a26;
+ A27& a27;
+ A28& a28;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29> {
+ typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29> value_type;
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29> tuple_type;
+ define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19, A20& _a20, A21& _a21, A22& _a22, A23& _a23, A24& _a24, A25& _a25, A26& _a26, A27& _a27, A28& _a28, A29& _a29) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26), a27(_a27), a28(_a28), a29(_a29) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(30);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ pk.pack(a12);
+ pk.pack(a13);
+ pk.pack(a14);
+ pk.pack(a15);
+ pk.pack(a16);
+ pk.pack(a17);
+ pk.pack(a18);
+ pk.pack(a19);
+ pk.pack(a20);
+ pk.pack(a21);
+ pk.pack(a22);
+ pk.pack(a23);
+ pk.pack(a24);
+ pk.pack(a25);
+ pk.pack(a26);
+ pk.pack(a27);
+ pk.pack(a28);
+ pk.pack(a29);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 30: ptr[29].convert(a29);
+ // fallthrough
+
+ case 29: ptr[28].convert(a28);
+ // fallthrough
+
+ case 28: ptr[27].convert(a27);
+ // fallthrough
+
+ case 27: ptr[26].convert(a26);
+ // fallthrough
+
+ case 26: ptr[25].convert(a25);
+ // fallthrough
+
+ case 25: ptr[24].convert(a24);
+ // fallthrough
+
+ case 24: ptr[23].convert(a23);
+ // fallthrough
+
+ case 23: ptr[22].convert(a22);
+ // fallthrough
+
+ case 22: ptr[21].convert(a21);
+ // fallthrough
+
+ case 21: ptr[20].convert(a20);
+ // fallthrough
+
+ case 20: ptr[19].convert(a19);
+ // fallthrough
+
+ case 19: ptr[18].convert(a18);
+ // fallthrough
+
+ case 18: ptr[17].convert(a17);
+ // fallthrough
+
+ case 17: ptr[16].convert(a16);
+ // fallthrough
+
+ case 16: ptr[15].convert(a15);
+ // fallthrough
+
+ case 15: ptr[14].convert(a14);
+ // fallthrough
+
+ case 14: ptr[13].convert(a13);
+ // fallthrough
+
+ case 13: ptr[12].convert(a12);
+ // fallthrough
+
+ case 12: ptr[11].convert(a11);
+ // fallthrough
+
+ case 11: ptr[10].convert(a10);
+ // fallthrough
+
+ case 10: ptr[9].convert(a9);
+ // fallthrough
+
+ case 9: ptr[8].convert(a8);
+ // fallthrough
+
+ case 8: ptr[7].convert(a7);
+ // fallthrough
+
+ case 7: ptr[6].convert(a6);
+ // fallthrough
+
+ case 6: ptr[5].convert(a5);
+ // fallthrough
+
+ case 5: ptr[4].convert(a4);
+ // fallthrough
+
+ case 4: ptr[3].convert(a3);
+ // fallthrough
+
+ case 3: ptr[2].convert(a2);
+ // fallthrough
+
+ case 2: ptr[1].convert(a1);
+ // fallthrough
+
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*30, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 30;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ o->via.array.ptr[1] = msgpack::object(a1, z);
+ o->via.array.ptr[2] = msgpack::object(a2, z);
+ o->via.array.ptr[3] = msgpack::object(a3, z);
+ o->via.array.ptr[4] = msgpack::object(a4, z);
+ o->via.array.ptr[5] = msgpack::object(a5, z);
+ o->via.array.ptr[6] = msgpack::object(a6, z);
+ o->via.array.ptr[7] = msgpack::object(a7, z);
+ o->via.array.ptr[8] = msgpack::object(a8, z);
+ o->via.array.ptr[9] = msgpack::object(a9, z);
+ o->via.array.ptr[10] = msgpack::object(a10, z);
+ o->via.array.ptr[11] = msgpack::object(a11, z);
+ o->via.array.ptr[12] = msgpack::object(a12, z);
+ o->via.array.ptr[13] = msgpack::object(a13, z);
+ o->via.array.ptr[14] = msgpack::object(a14, z);
+ o->via.array.ptr[15] = msgpack::object(a15, z);
+ o->via.array.ptr[16] = msgpack::object(a16, z);
+ o->via.array.ptr[17] = msgpack::object(a17, z);
+ o->via.array.ptr[18] = msgpack::object(a18, z);
+ o->via.array.ptr[19] = msgpack::object(a19, z);
+ o->via.array.ptr[20] = msgpack::object(a20, z);
+ o->via.array.ptr[21] = msgpack::object(a21, z);
+ o->via.array.ptr[22] = msgpack::object(a22, z);
+ o->via.array.ptr[23] = msgpack::object(a23, z);
+ o->via.array.ptr[24] = msgpack::object(a24, z);
+ o->via.array.ptr[25] = msgpack::object(a25, z);
+ o->via.array.ptr[26] = msgpack::object(a26, z);
+ o->via.array.ptr[27] = msgpack::object(a27, z);
+ o->via.array.ptr[28] = msgpack::object(a28, z);
+ o->via.array.ptr[29] = msgpack::object(a29, z);
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+ A12& a12;
+ A13& a13;
+ A14& a14;
+ A15& a15;
+ A16& a16;
+ A17& a17;
+ A18& a18;
+ A19& a19;
+ A20& a20;
+ A21& a21;
+ A22& a22;
+ A23& a23;
+ A24& a24;
+ A25& a25;
+ A26& a26;
+ A27& a27;
+ A28& a28;
+ A29& a29;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30> {
+ typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30> value_type;
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30> tuple_type;
+ define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19, A20& _a20, A21& _a21, A22& _a22, A23& _a23, A24& _a24, A25& _a25, A26& _a26, A27& _a27, A28& _a28, A29& _a29, A30& _a30) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26), a27(_a27), a28(_a28), a29(_a29), a30(_a30) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(31);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ pk.pack(a12);
+ pk.pack(a13);
+ pk.pack(a14);
+ pk.pack(a15);
+ pk.pack(a16);
+ pk.pack(a17);
+ pk.pack(a18);
+ pk.pack(a19);
+ pk.pack(a20);
+ pk.pack(a21);
+ pk.pack(a22);
+ pk.pack(a23);
+ pk.pack(a24);
+ pk.pack(a25);
+ pk.pack(a26);
+ pk.pack(a27);
+ pk.pack(a28);
+ pk.pack(a29);
+ pk.pack(a30);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 31: ptr[30].convert(a30);
+ // fallthrough
+
+ case 30: ptr[29].convert(a29);
+ // fallthrough
+
+ case 29: ptr[28].convert(a28);
+ // fallthrough
+
+ case 28: ptr[27].convert(a27);
+ // fallthrough
+
+ case 27: ptr[26].convert(a26);
+ // fallthrough
+
+ case 26: ptr[25].convert(a25);
+ // fallthrough
+
+ case 25: ptr[24].convert(a24);
+ // fallthrough
+
+ case 24: ptr[23].convert(a23);
+ // fallthrough
+
+ case 23: ptr[22].convert(a22);
+ // fallthrough
+
+ case 22: ptr[21].convert(a21);
+ // fallthrough
+
+ case 21: ptr[20].convert(a20);
+ // fallthrough
+
+ case 20: ptr[19].convert(a19);
+ // fallthrough
+
+ case 19: ptr[18].convert(a18);
+ // fallthrough
+
+ case 18: ptr[17].convert(a17);
+ // fallthrough
+
+ case 17: ptr[16].convert(a16);
+ // fallthrough
+
+ case 16: ptr[15].convert(a15);
+ // fallthrough
+
+ case 15: ptr[14].convert(a14);
+ // fallthrough
+
+ case 14: ptr[13].convert(a13);
+ // fallthrough
+
+ case 13: ptr[12].convert(a12);
+ // fallthrough
+
+ case 12: ptr[11].convert(a11);
+ // fallthrough
+
+ case 11: ptr[10].convert(a10);
+ // fallthrough
+
+ case 10: ptr[9].convert(a9);
+ // fallthrough
+
+ case 9: ptr[8].convert(a8);
+ // fallthrough
+
+ case 8: ptr[7].convert(a7);
+ // fallthrough
+
+ case 7: ptr[6].convert(a6);
+ // fallthrough
+
+ case 6: ptr[5].convert(a5);
+ // fallthrough
+
+ case 5: ptr[4].convert(a4);
+ // fallthrough
+
+ case 4: ptr[3].convert(a3);
+ // fallthrough
+
+ case 3: ptr[2].convert(a2);
+ // fallthrough
+
+ case 2: ptr[1].convert(a1);
+ // fallthrough
+
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*31, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 31;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ o->via.array.ptr[1] = msgpack::object(a1, z);
+ o->via.array.ptr[2] = msgpack::object(a2, z);
+ o->via.array.ptr[3] = msgpack::object(a3, z);
+ o->via.array.ptr[4] = msgpack::object(a4, z);
+ o->via.array.ptr[5] = msgpack::object(a5, z);
+ o->via.array.ptr[6] = msgpack::object(a6, z);
+ o->via.array.ptr[7] = msgpack::object(a7, z);
+ o->via.array.ptr[8] = msgpack::object(a8, z);
+ o->via.array.ptr[9] = msgpack::object(a9, z);
+ o->via.array.ptr[10] = msgpack::object(a10, z);
+ o->via.array.ptr[11] = msgpack::object(a11, z);
+ o->via.array.ptr[12] = msgpack::object(a12, z);
+ o->via.array.ptr[13] = msgpack::object(a13, z);
+ o->via.array.ptr[14] = msgpack::object(a14, z);
+ o->via.array.ptr[15] = msgpack::object(a15, z);
+ o->via.array.ptr[16] = msgpack::object(a16, z);
+ o->via.array.ptr[17] = msgpack::object(a17, z);
+ o->via.array.ptr[18] = msgpack::object(a18, z);
+ o->via.array.ptr[19] = msgpack::object(a19, z);
+ o->via.array.ptr[20] = msgpack::object(a20, z);
+ o->via.array.ptr[21] = msgpack::object(a21, z);
+ o->via.array.ptr[22] = msgpack::object(a22, z);
+ o->via.array.ptr[23] = msgpack::object(a23, z);
+ o->via.array.ptr[24] = msgpack::object(a24, z);
+ o->via.array.ptr[25] = msgpack::object(a25, z);
+ o->via.array.ptr[26] = msgpack::object(a26, z);
+ o->via.array.ptr[27] = msgpack::object(a27, z);
+ o->via.array.ptr[28] = msgpack::object(a28, z);
+ o->via.array.ptr[29] = msgpack::object(a29, z);
+ o->via.array.ptr[30] = msgpack::object(a30, z);
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+ A12& a12;
+ A13& a13;
+ A14& a14;
+ A15& a15;
+ A16& a16;
+ A17& a17;
+ A18& a18;
+ A19& a19;
+ A20& a20;
+ A21& a21;
+ A22& a22;
+ A23& a23;
+ A24& a24;
+ A25& a25;
+ A26& a26;
+ A27& a27;
+ A28& a28;
+ A29& a29;
+ A30& a30;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31> {
+ typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31> value_type;
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31> tuple_type;
+ define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19, A20& _a20, A21& _a21, A22& _a22, A23& _a23, A24& _a24, A25& _a25, A26& _a26, A27& _a27, A28& _a28, A29& _a29, A30& _a30, A31& _a31) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26), a27(_a27), a28(_a28), a29(_a29), a30(_a30), a31(_a31) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(32);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ pk.pack(a12);
+ pk.pack(a13);
+ pk.pack(a14);
+ pk.pack(a15);
+ pk.pack(a16);
+ pk.pack(a17);
+ pk.pack(a18);
+ pk.pack(a19);
+ pk.pack(a20);
+ pk.pack(a21);
+ pk.pack(a22);
+ pk.pack(a23);
+ pk.pack(a24);
+ pk.pack(a25);
+ pk.pack(a26);
+ pk.pack(a27);
+ pk.pack(a28);
+ pk.pack(a29);
+ pk.pack(a30);
+ pk.pack(a31);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ const size_t size = o.via.array.size;
+ if(size > 0) {
+ msgpack::object *ptr = o.via.array.ptr;
+ switch(size) {
+ default:
+ case 32: ptr[31].convert(a31);
+ // fallthrough
+
+ case 31: ptr[30].convert(a30);
+ // fallthrough
+
+ case 30: ptr[29].convert(a29);
+ // fallthrough
+
+ case 29: ptr[28].convert(a28);
+ // fallthrough
+
+ case 28: ptr[27].convert(a27);
+ // fallthrough
+
+ case 27: ptr[26].convert(a26);
+ // fallthrough
+
+ case 26: ptr[25].convert(a25);
+ // fallthrough
+
+ case 25: ptr[24].convert(a24);
+ // fallthrough
+
+ case 24: ptr[23].convert(a23);
+ // fallthrough
+
+ case 23: ptr[22].convert(a22);
+ // fallthrough
+
+ case 22: ptr[21].convert(a21);
+ // fallthrough
+
+ case 21: ptr[20].convert(a20);
+ // fallthrough
+
+ case 20: ptr[19].convert(a19);
+ // fallthrough
+
+ case 19: ptr[18].convert(a18);
+ // fallthrough
+
+ case 18: ptr[17].convert(a17);
+ // fallthrough
+
+ case 17: ptr[16].convert(a16);
+ // fallthrough
+
+ case 16: ptr[15].convert(a15);
+ // fallthrough
+
+ case 15: ptr[14].convert(a14);
+ // fallthrough
+
+ case 14: ptr[13].convert(a13);
+ // fallthrough
+
+ case 13: ptr[12].convert(a12);
+ // fallthrough
+
+ case 12: ptr[11].convert(a11);
+ // fallthrough
+
+ case 11: ptr[10].convert(a10);
+ // fallthrough
+
+ case 10: ptr[9].convert(a9);
+ // fallthrough
+
+ case 9: ptr[8].convert(a8);
+ // fallthrough
+
+ case 8: ptr[7].convert(a7);
+ // fallthrough
+
+ case 7: ptr[6].convert(a6);
+ // fallthrough
+
+ case 6: ptr[5].convert(a5);
+ // fallthrough
+
+ case 5: ptr[4].convert(a4);
+ // fallthrough
+
+ case 4: ptr[3].convert(a3);
+ // fallthrough
+
+ case 3: ptr[2].convert(a2);
+ // fallthrough
+
+ case 2: ptr[1].convert(a1);
+ // fallthrough
+
+ case 1: ptr[0].convert(a0);
+ // fallthrough
+
+ }
+ }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*32, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = 32;
+
+ o->via.array.ptr[0] = msgpack::object(a0, z);
+ o->via.array.ptr[1] = msgpack::object(a1, z);
+ o->via.array.ptr[2] = msgpack::object(a2, z);
+ o->via.array.ptr[3] = msgpack::object(a3, z);
+ o->via.array.ptr[4] = msgpack::object(a4, z);
+ o->via.array.ptr[5] = msgpack::object(a5, z);
+ o->via.array.ptr[6] = msgpack::object(a6, z);
+ o->via.array.ptr[7] = msgpack::object(a7, z);
+ o->via.array.ptr[8] = msgpack::object(a8, z);
+ o->via.array.ptr[9] = msgpack::object(a9, z);
+ o->via.array.ptr[10] = msgpack::object(a10, z);
+ o->via.array.ptr[11] = msgpack::object(a11, z);
+ o->via.array.ptr[12] = msgpack::object(a12, z);
+ o->via.array.ptr[13] = msgpack::object(a13, z);
+ o->via.array.ptr[14] = msgpack::object(a14, z);
+ o->via.array.ptr[15] = msgpack::object(a15, z);
+ o->via.array.ptr[16] = msgpack::object(a16, z);
+ o->via.array.ptr[17] = msgpack::object(a17, z);
+ o->via.array.ptr[18] = msgpack::object(a18, z);
+ o->via.array.ptr[19] = msgpack::object(a19, z);
+ o->via.array.ptr[20] = msgpack::object(a20, z);
+ o->via.array.ptr[21] = msgpack::object(a21, z);
+ o->via.array.ptr[22] = msgpack::object(a22, z);
+ o->via.array.ptr[23] = msgpack::object(a23, z);
+ o->via.array.ptr[24] = msgpack::object(a24, z);
+ o->via.array.ptr[25] = msgpack::object(a25, z);
+ o->via.array.ptr[26] = msgpack::object(a26, z);
+ o->via.array.ptr[27] = msgpack::object(a27, z);
+ o->via.array.ptr[28] = msgpack::object(a28, z);
+ o->via.array.ptr[29] = msgpack::object(a29, z);
+ o->via.array.ptr[30] = msgpack::object(a30, z);
+ o->via.array.ptr[31] = msgpack::object(a31, z);
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+ A12& a12;
+ A13& a13;
+ A14& a14;
+ A15& a15;
+ A16& a16;
+ A17& a17;
+ A18& a18;
+ A19& a19;
+ A20& a20;
+ A21& a21;
+ A22& a22;
+ A23& a23;
+ A24& a24;
+ A25& a25;
+ A26& a26;
+ A27& a27;
+ A28& a28;
+ A29& a29;
+ A30& a30;
+ A31& a31;
+};
+
+/// @endcond
+
+inline define_array<> make_define_array()
+{
+ return define_array<>();
+}
+
+/// @cond
+
+template <typename A0>
+inline define_array<A0> make_define_array(A0& a0)
+{
+ return define_array<A0>(a0);
+}
+
+template <typename A0, typename A1>
+inline define_array<A0, A1> make_define_array(A0& a0, A1& a1)
+{
+ return define_array<A0, A1>(a0, a1);
+}
+
+template <typename A0, typename A1, typename A2>
+inline define_array<A0, A1, A2> make_define_array(A0& a0, A1& a1, A2& a2)
+{
+ return define_array<A0, A1, A2>(a0, a1, a2);
+}
+
+template <typename A0, typename A1, typename A2, typename A3>
+inline define_array<A0, A1, A2, A3> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3)
+{
+ return define_array<A0, A1, A2, A3>(a0, a1, a2, a3);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4>
+inline define_array<A0, A1, A2, A3, A4> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4)
+{
+ return define_array<A0, A1, A2, A3, A4>(a0, a1, a2, a3, a4);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
+inline define_array<A0, A1, A2, A3, A4, A5> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5)
+{
+ return define_array<A0, A1, A2, A3, A4, A5>(a0, a1, a2, a3, a4, a5);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+inline define_array<A0, A1, A2, A3, A4, A5, A6> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6)
+{
+ return define_array<A0, A1, A2, A3, A4, A5, A6>(a0, a1, a2, a3, a4, a5, a6);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7)
+{
+ return define_array<A0, A1, A2, A3, A4, A5, A6, A7>(a0, a1, a2, a3, a4, a5, a6, a7);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8)
+{
+ return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8>(a0, a1, a2, a3, a4, a5, a6, a7, a8);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9)
+{
+ return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10)
+{
+ return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11)
+{
+ return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12)
+{
+ return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13)
+{
+ return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14)
+{
+ return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15)
+{
+ return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16)
+{
+ return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17)
+{
+ return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18)
+{
+ return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19)
+{
+ return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20)
+{
+ return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21)
+{
+ return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22)
+{
+ return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23)
+{
+ return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24)
+{
+ return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25)
+{
+ return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25, A26& a26)
+{
+ return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25, A26& a26, A27& a27)
+{
+ return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25, A26& a26, A27& a27, A28& a28)
+{
+ return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25, A26& a26, A27& a27, A28& a28, A29& a29)
+{
+ return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25, A26& a26, A27& a27, A28& a28, A29& a29, A30& a30)
+{
+ return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25, A26& a26, A27& a27, A28& a28, A29& a29, A30& a30, A31& a31)
+{
+ return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31);
+}
+
+/// @endcond
+
+} // namespace type
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+} // namespace msgpack
+
+#endif // MSGPACK_V1_CPP03_DEFINE_ARRAY_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp03_define_array_decl.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp03_define_array_decl.hpp
new file mode 100644
index 0000000000..987de96689
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp03_define_array_decl.hpp
@@ -0,0 +1,135 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_CPP03_DEFINE_ARRAY_DECL_HPP
+#define MSGPACK_V1_CPP03_DEFINE_ARRAY_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+
+namespace msgpack {
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+namespace type {
+
+/// @cond
+
+template <typename A0 = void, typename A1 = void, typename A2 = void, typename A3 = void, typename A4 = void, typename A5 = void, typename A6 = void, typename A7 = void, typename A8 = void, typename A9 = void, typename A10 = void, typename A11 = void, typename A12 = void, typename A13 = void, typename A14 = void, typename A15 = void, typename A16 = void, typename A17 = void, typename A18 = void, typename A19 = void, typename A20 = void, typename A21 = void, typename A22 = void, typename A23 = void, typename A24 = void, typename A25 = void, typename A26 = void, typename A27 = void, typename A28 = void, typename A29 = void, typename A30 = void, typename A31 = void, typename A32 = void>
+struct define_array;
+/// @endcond
+
+define_array<> make_define_array();
+
+/// @cond
+
+template <typename A0>
+inline define_array<A0> make_define_array(A0& a0);
+
+template <typename A0, typename A1>
+inline define_array<A0, A1> make_define_array(A0& a0, A1& a1);
+
+template <typename A0, typename A1, typename A2>
+inline define_array<A0, A1, A2> make_define_array(A0& a0, A1& a1, A2& a2);
+
+template <typename A0, typename A1, typename A2, typename A3>
+inline define_array<A0, A1, A2, A3> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4>
+inline define_array<A0, A1, A2, A3, A4> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
+inline define_array<A0, A1, A2, A3, A4, A5> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+inline define_array<A0, A1, A2, A3, A4, A5, A6> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25, A26& a26);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25, A26& a26, A27& a27);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25, A26& a26, A27& a27, A28& a28);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25, A26& a26, A27& a27, A28& a28, A29& a29);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25, A26& a26, A27& a27, A28& a28, A29& a29, A30& a30);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25, A26& a26, A27& a27, A28& a28, A29& a29, A30& a30, A31& a31);
+
+/// @endcond
+
+} // namespace type
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+} // namespace msgpack
+
+#endif // MSGPACK_V1_CPP03_DEFINE_ARRAY_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp03_define_map.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp03_define_map.hpp
new file mode 100644
index 0000000000..7869b98e77
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp03_define_map.hpp
@@ -0,0 +1,2753 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015-2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_CPP03_DEFINE_MAP_HPP
+#define MSGPACK_V1_CPP03_DEFINE_MAP_HPP
+
+#include "msgpack/v1/adaptor/detail/cpp03_define_map_decl.hpp"
+#include "msgpack/adaptor/msgpack_tuple.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/object_fwd.hpp"
+
+#include <map>
+
+namespace msgpack {
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+namespace type {
+
+
+template <>
+struct define_map<> {
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_map(0);
+ }
+ void msgpack_unpack(msgpack::object const& o) const
+ {
+ if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone&) const
+ {
+ o->type = msgpack::type::MAP;
+ o->via.map.ptr = MSGPACK_NULLPTR;
+ o->via.map.size = 0;
+ }
+};
+
+/// @cond
+
+template <typename A0, typename A1>
+struct define_map<A0, A1> {
+ define_map(A0& _a0, A1& _a1) :
+ a0(_a0), a1(_a1) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_map(1);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ }
+ void msgpack_unpack(msgpack::object const& o) const
+ {
+ if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ std::map<std::string, msgpack::object const*> kvmap;
+ for (uint32_t i = 0; i < o.via.map.size; ++i) {
+ if (o.via.map.ptr[i].key.type != msgpack::type::STR) { throw msgpack::type_error(); }
+ kvmap.insert(
+ std::map<std::string, msgpack::object const*>::value_type(
+ std::string(
+ o.via.map.ptr[i].key.via.str.ptr,
+ o.via.map.ptr[i].key.via.str.size),
+ &o.via.map.ptr[i].val
+ )
+ );
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
+ if (it != kvmap.end()) {
+ it->second->convert(a1);
+ }
+ }
+
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::MAP;
+ o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*1, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
+ o->via.map.size = 1;
+
+ o->via.map.ptr[0].key = msgpack::object(a0, z);
+ o->via.map.ptr[0].val = msgpack::object(a1, z);
+
+ }
+
+ A0& a0;
+ A1& a1;
+};
+
+template <typename A0, typename A1, typename A2, typename A3>
+struct define_map<A0, A1, A2, A3> {
+ define_map(A0& _a0, A1& _a1, A2& _a2, A3& _a3) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_map(2);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ }
+ void msgpack_unpack(msgpack::object const& o) const
+ {
+ if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ std::map<std::string, msgpack::object const*> kvmap;
+ for (uint32_t i = 0; i < o.via.map.size; ++i) {
+ if (o.via.map.ptr[i].key.type != msgpack::type::STR) { throw msgpack::type_error(); }
+ kvmap.insert(
+ std::map<std::string, msgpack::object const*>::value_type(
+ std::string(
+ o.via.map.ptr[i].key.via.str.ptr,
+ o.via.map.ptr[i].key.via.str.size),
+ &o.via.map.ptr[i].val
+ )
+ );
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
+ if (it != kvmap.end()) {
+ it->second->convert(a1);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a2);
+ if (it != kvmap.end()) {
+ it->second->convert(a3);
+ }
+ }
+
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::MAP;
+ o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*2, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
+ o->via.map.size = 2;
+
+ o->via.map.ptr[0].key = msgpack::object(a0, z);
+ o->via.map.ptr[0].val = msgpack::object(a1, z);
+
+ o->via.map.ptr[1].key = msgpack::object(a2, z);
+ o->via.map.ptr[1].val = msgpack::object(a3, z);
+
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
+struct define_map<A0, A1, A2, A3, A4, A5> {
+ define_map(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_map(3);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ }
+ void msgpack_unpack(msgpack::object const& o) const
+ {
+ if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ std::map<std::string, msgpack::object const*> kvmap;
+ for (uint32_t i = 0; i < o.via.map.size; ++i) {
+ if (o.via.map.ptr[i].key.type != msgpack::type::STR) { throw msgpack::type_error(); }
+ kvmap.insert(
+ std::map<std::string, msgpack::object const*>::value_type(
+ std::string(
+ o.via.map.ptr[i].key.via.str.ptr,
+ o.via.map.ptr[i].key.via.str.size),
+ &o.via.map.ptr[i].val
+ )
+ );
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
+ if (it != kvmap.end()) {
+ it->second->convert(a1);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a2);
+ if (it != kvmap.end()) {
+ it->second->convert(a3);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a4);
+ if (it != kvmap.end()) {
+ it->second->convert(a5);
+ }
+ }
+
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::MAP;
+ o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*3, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
+ o->via.map.size = 3;
+
+ o->via.map.ptr[0].key = msgpack::object(a0, z);
+ o->via.map.ptr[0].val = msgpack::object(a1, z);
+
+ o->via.map.ptr[1].key = msgpack::object(a2, z);
+ o->via.map.ptr[1].val = msgpack::object(a3, z);
+
+ o->via.map.ptr[2].key = msgpack::object(a4, z);
+ o->via.map.ptr[2].val = msgpack::object(a5, z);
+
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+struct define_map<A0, A1, A2, A3, A4, A5, A6, A7> {
+ define_map(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_map(4);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ }
+ void msgpack_unpack(msgpack::object const& o) const
+ {
+ if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ std::map<std::string, msgpack::object const*> kvmap;
+ for (uint32_t i = 0; i < o.via.map.size; ++i) {
+ if (o.via.map.ptr[i].key.type != msgpack::type::STR) { throw msgpack::type_error(); }
+ kvmap.insert(
+ std::map<std::string, msgpack::object const*>::value_type(
+ std::string(
+ o.via.map.ptr[i].key.via.str.ptr,
+ o.via.map.ptr[i].key.via.str.size),
+ &o.via.map.ptr[i].val
+ )
+ );
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
+ if (it != kvmap.end()) {
+ it->second->convert(a1);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a2);
+ if (it != kvmap.end()) {
+ it->second->convert(a3);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a4);
+ if (it != kvmap.end()) {
+ it->second->convert(a5);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a6);
+ if (it != kvmap.end()) {
+ it->second->convert(a7);
+ }
+ }
+
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::MAP;
+ o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*4, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
+ o->via.map.size = 4;
+
+ o->via.map.ptr[0].key = msgpack::object(a0, z);
+ o->via.map.ptr[0].val = msgpack::object(a1, z);
+
+ o->via.map.ptr[1].key = msgpack::object(a2, z);
+ o->via.map.ptr[1].val = msgpack::object(a3, z);
+
+ o->via.map.ptr[2].key = msgpack::object(a4, z);
+ o->via.map.ptr[2].val = msgpack::object(a5, z);
+
+ o->via.map.ptr[3].key = msgpack::object(a6, z);
+ o->via.map.ptr[3].val = msgpack::object(a7, z);
+
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> {
+ define_map(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_map(5);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ }
+ void msgpack_unpack(msgpack::object const& o) const
+ {
+ if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ std::map<std::string, msgpack::object const*> kvmap;
+ for (uint32_t i = 0; i < o.via.map.size; ++i) {
+ if (o.via.map.ptr[i].key.type != msgpack::type::STR) { throw msgpack::type_error(); }
+ kvmap.insert(
+ std::map<std::string, msgpack::object const*>::value_type(
+ std::string(
+ o.via.map.ptr[i].key.via.str.ptr,
+ o.via.map.ptr[i].key.via.str.size),
+ &o.via.map.ptr[i].val
+ )
+ );
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
+ if (it != kvmap.end()) {
+ it->second->convert(a1);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a2);
+ if (it != kvmap.end()) {
+ it->second->convert(a3);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a4);
+ if (it != kvmap.end()) {
+ it->second->convert(a5);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a6);
+ if (it != kvmap.end()) {
+ it->second->convert(a7);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a8);
+ if (it != kvmap.end()) {
+ it->second->convert(a9);
+ }
+ }
+
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::MAP;
+ o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*5, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
+ o->via.map.size = 5;
+
+ o->via.map.ptr[0].key = msgpack::object(a0, z);
+ o->via.map.ptr[0].val = msgpack::object(a1, z);
+
+ o->via.map.ptr[1].key = msgpack::object(a2, z);
+ o->via.map.ptr[1].val = msgpack::object(a3, z);
+
+ o->via.map.ptr[2].key = msgpack::object(a4, z);
+ o->via.map.ptr[2].val = msgpack::object(a5, z);
+
+ o->via.map.ptr[3].key = msgpack::object(a6, z);
+ o->via.map.ptr[3].val = msgpack::object(a7, z);
+
+ o->via.map.ptr[4].key = msgpack::object(a8, z);
+ o->via.map.ptr[4].val = msgpack::object(a9, z);
+
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> {
+ define_map(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_map(6);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ }
+ void msgpack_unpack(msgpack::object const& o) const
+ {
+ if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ std::map<std::string, msgpack::object const*> kvmap;
+ for (uint32_t i = 0; i < o.via.map.size; ++i) {
+ if (o.via.map.ptr[i].key.type != msgpack::type::STR) { throw msgpack::type_error(); }
+ kvmap.insert(
+ std::map<std::string, msgpack::object const*>::value_type(
+ std::string(
+ o.via.map.ptr[i].key.via.str.ptr,
+ o.via.map.ptr[i].key.via.str.size),
+ &o.via.map.ptr[i].val
+ )
+ );
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
+ if (it != kvmap.end()) {
+ it->second->convert(a1);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a2);
+ if (it != kvmap.end()) {
+ it->second->convert(a3);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a4);
+ if (it != kvmap.end()) {
+ it->second->convert(a5);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a6);
+ if (it != kvmap.end()) {
+ it->second->convert(a7);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a8);
+ if (it != kvmap.end()) {
+ it->second->convert(a9);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a10);
+ if (it != kvmap.end()) {
+ it->second->convert(a11);
+ }
+ }
+
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::MAP;
+ o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*6, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
+ o->via.map.size = 6;
+
+ o->via.map.ptr[0].key = msgpack::object(a0, z);
+ o->via.map.ptr[0].val = msgpack::object(a1, z);
+
+ o->via.map.ptr[1].key = msgpack::object(a2, z);
+ o->via.map.ptr[1].val = msgpack::object(a3, z);
+
+ o->via.map.ptr[2].key = msgpack::object(a4, z);
+ o->via.map.ptr[2].val = msgpack::object(a5, z);
+
+ o->via.map.ptr[3].key = msgpack::object(a6, z);
+ o->via.map.ptr[3].val = msgpack::object(a7, z);
+
+ o->via.map.ptr[4].key = msgpack::object(a8, z);
+ o->via.map.ptr[4].val = msgpack::object(a9, z);
+
+ o->via.map.ptr[5].key = msgpack::object(a10, z);
+ o->via.map.ptr[5].val = msgpack::object(a11, z);
+
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> {
+ define_map(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_map(7);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ pk.pack(a12);
+ pk.pack(a13);
+ }
+ void msgpack_unpack(msgpack::object const& o) const
+ {
+ if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ std::map<std::string, msgpack::object const*> kvmap;
+ for (uint32_t i = 0; i < o.via.map.size; ++i) {
+ if (o.via.map.ptr[i].key.type != msgpack::type::STR) { throw msgpack::type_error(); }
+ kvmap.insert(
+ std::map<std::string, msgpack::object const*>::value_type(
+ std::string(
+ o.via.map.ptr[i].key.via.str.ptr,
+ o.via.map.ptr[i].key.via.str.size),
+ &o.via.map.ptr[i].val
+ )
+ );
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
+ if (it != kvmap.end()) {
+ it->second->convert(a1);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a2);
+ if (it != kvmap.end()) {
+ it->second->convert(a3);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a4);
+ if (it != kvmap.end()) {
+ it->second->convert(a5);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a6);
+ if (it != kvmap.end()) {
+ it->second->convert(a7);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a8);
+ if (it != kvmap.end()) {
+ it->second->convert(a9);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a10);
+ if (it != kvmap.end()) {
+ it->second->convert(a11);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a12);
+ if (it != kvmap.end()) {
+ it->second->convert(a13);
+ }
+ }
+
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::MAP;
+ o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*7, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
+ o->via.map.size = 7;
+
+ o->via.map.ptr[0].key = msgpack::object(a0, z);
+ o->via.map.ptr[0].val = msgpack::object(a1, z);
+
+ o->via.map.ptr[1].key = msgpack::object(a2, z);
+ o->via.map.ptr[1].val = msgpack::object(a3, z);
+
+ o->via.map.ptr[2].key = msgpack::object(a4, z);
+ o->via.map.ptr[2].val = msgpack::object(a5, z);
+
+ o->via.map.ptr[3].key = msgpack::object(a6, z);
+ o->via.map.ptr[3].val = msgpack::object(a7, z);
+
+ o->via.map.ptr[4].key = msgpack::object(a8, z);
+ o->via.map.ptr[4].val = msgpack::object(a9, z);
+
+ o->via.map.ptr[5].key = msgpack::object(a10, z);
+ o->via.map.ptr[5].val = msgpack::object(a11, z);
+
+ o->via.map.ptr[6].key = msgpack::object(a12, z);
+ o->via.map.ptr[6].val = msgpack::object(a13, z);
+
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+ A12& a12;
+ A13& a13;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> {
+ define_map(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_map(8);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ pk.pack(a12);
+ pk.pack(a13);
+ pk.pack(a14);
+ pk.pack(a15);
+ }
+ void msgpack_unpack(msgpack::object const& o) const
+ {
+ if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ std::map<std::string, msgpack::object const*> kvmap;
+ for (uint32_t i = 0; i < o.via.map.size; ++i) {
+ if (o.via.map.ptr[i].key.type != msgpack::type::STR) { throw msgpack::type_error(); }
+ kvmap.insert(
+ std::map<std::string, msgpack::object const*>::value_type(
+ std::string(
+ o.via.map.ptr[i].key.via.str.ptr,
+ o.via.map.ptr[i].key.via.str.size),
+ &o.via.map.ptr[i].val
+ )
+ );
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
+ if (it != kvmap.end()) {
+ it->second->convert(a1);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a2);
+ if (it != kvmap.end()) {
+ it->second->convert(a3);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a4);
+ if (it != kvmap.end()) {
+ it->second->convert(a5);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a6);
+ if (it != kvmap.end()) {
+ it->second->convert(a7);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a8);
+ if (it != kvmap.end()) {
+ it->second->convert(a9);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a10);
+ if (it != kvmap.end()) {
+ it->second->convert(a11);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a12);
+ if (it != kvmap.end()) {
+ it->second->convert(a13);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a14);
+ if (it != kvmap.end()) {
+ it->second->convert(a15);
+ }
+ }
+
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::MAP;
+ o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*8, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
+ o->via.map.size = 8;
+
+ o->via.map.ptr[0].key = msgpack::object(a0, z);
+ o->via.map.ptr[0].val = msgpack::object(a1, z);
+
+ o->via.map.ptr[1].key = msgpack::object(a2, z);
+ o->via.map.ptr[1].val = msgpack::object(a3, z);
+
+ o->via.map.ptr[2].key = msgpack::object(a4, z);
+ o->via.map.ptr[2].val = msgpack::object(a5, z);
+
+ o->via.map.ptr[3].key = msgpack::object(a6, z);
+ o->via.map.ptr[3].val = msgpack::object(a7, z);
+
+ o->via.map.ptr[4].key = msgpack::object(a8, z);
+ o->via.map.ptr[4].val = msgpack::object(a9, z);
+
+ o->via.map.ptr[5].key = msgpack::object(a10, z);
+ o->via.map.ptr[5].val = msgpack::object(a11, z);
+
+ o->via.map.ptr[6].key = msgpack::object(a12, z);
+ o->via.map.ptr[6].val = msgpack::object(a13, z);
+
+ o->via.map.ptr[7].key = msgpack::object(a14, z);
+ o->via.map.ptr[7].val = msgpack::object(a15, z);
+
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+ A12& a12;
+ A13& a13;
+ A14& a14;
+ A15& a15;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> {
+ define_map(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_map(9);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ pk.pack(a12);
+ pk.pack(a13);
+ pk.pack(a14);
+ pk.pack(a15);
+ pk.pack(a16);
+ pk.pack(a17);
+ }
+ void msgpack_unpack(msgpack::object const& o) const
+ {
+ if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ std::map<std::string, msgpack::object const*> kvmap;
+ for (uint32_t i = 0; i < o.via.map.size; ++i) {
+ if (o.via.map.ptr[i].key.type != msgpack::type::STR) { throw msgpack::type_error(); }
+ kvmap.insert(
+ std::map<std::string, msgpack::object const*>::value_type(
+ std::string(
+ o.via.map.ptr[i].key.via.str.ptr,
+ o.via.map.ptr[i].key.via.str.size),
+ &o.via.map.ptr[i].val
+ )
+ );
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
+ if (it != kvmap.end()) {
+ it->second->convert(a1);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a2);
+ if (it != kvmap.end()) {
+ it->second->convert(a3);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a4);
+ if (it != kvmap.end()) {
+ it->second->convert(a5);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a6);
+ if (it != kvmap.end()) {
+ it->second->convert(a7);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a8);
+ if (it != kvmap.end()) {
+ it->second->convert(a9);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a10);
+ if (it != kvmap.end()) {
+ it->second->convert(a11);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a12);
+ if (it != kvmap.end()) {
+ it->second->convert(a13);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a14);
+ if (it != kvmap.end()) {
+ it->second->convert(a15);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a16);
+ if (it != kvmap.end()) {
+ it->second->convert(a17);
+ }
+ }
+
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::MAP;
+ o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*9, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
+ o->via.map.size = 9;
+
+ o->via.map.ptr[0].key = msgpack::object(a0, z);
+ o->via.map.ptr[0].val = msgpack::object(a1, z);
+
+ o->via.map.ptr[1].key = msgpack::object(a2, z);
+ o->via.map.ptr[1].val = msgpack::object(a3, z);
+
+ o->via.map.ptr[2].key = msgpack::object(a4, z);
+ o->via.map.ptr[2].val = msgpack::object(a5, z);
+
+ o->via.map.ptr[3].key = msgpack::object(a6, z);
+ o->via.map.ptr[3].val = msgpack::object(a7, z);
+
+ o->via.map.ptr[4].key = msgpack::object(a8, z);
+ o->via.map.ptr[4].val = msgpack::object(a9, z);
+
+ o->via.map.ptr[5].key = msgpack::object(a10, z);
+ o->via.map.ptr[5].val = msgpack::object(a11, z);
+
+ o->via.map.ptr[6].key = msgpack::object(a12, z);
+ o->via.map.ptr[6].val = msgpack::object(a13, z);
+
+ o->via.map.ptr[7].key = msgpack::object(a14, z);
+ o->via.map.ptr[7].val = msgpack::object(a15, z);
+
+ o->via.map.ptr[8].key = msgpack::object(a16, z);
+ o->via.map.ptr[8].val = msgpack::object(a17, z);
+
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+ A12& a12;
+ A13& a13;
+ A14& a14;
+ A15& a15;
+ A16& a16;
+ A17& a17;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> {
+ define_map(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_map(10);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ pk.pack(a12);
+ pk.pack(a13);
+ pk.pack(a14);
+ pk.pack(a15);
+ pk.pack(a16);
+ pk.pack(a17);
+ pk.pack(a18);
+ pk.pack(a19);
+ }
+ void msgpack_unpack(msgpack::object const& o) const
+ {
+ if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ std::map<std::string, msgpack::object const*> kvmap;
+ for (uint32_t i = 0; i < o.via.map.size; ++i) {
+ if (o.via.map.ptr[i].key.type != msgpack::type::STR) { throw msgpack::type_error(); }
+ kvmap.insert(
+ std::map<std::string, msgpack::object const*>::value_type(
+ std::string(
+ o.via.map.ptr[i].key.via.str.ptr,
+ o.via.map.ptr[i].key.via.str.size),
+ &o.via.map.ptr[i].val
+ )
+ );
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
+ if (it != kvmap.end()) {
+ it->second->convert(a1);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a2);
+ if (it != kvmap.end()) {
+ it->second->convert(a3);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a4);
+ if (it != kvmap.end()) {
+ it->second->convert(a5);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a6);
+ if (it != kvmap.end()) {
+ it->second->convert(a7);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a8);
+ if (it != kvmap.end()) {
+ it->second->convert(a9);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a10);
+ if (it != kvmap.end()) {
+ it->second->convert(a11);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a12);
+ if (it != kvmap.end()) {
+ it->second->convert(a13);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a14);
+ if (it != kvmap.end()) {
+ it->second->convert(a15);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a16);
+ if (it != kvmap.end()) {
+ it->second->convert(a17);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a18);
+ if (it != kvmap.end()) {
+ it->second->convert(a19);
+ }
+ }
+
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::MAP;
+ o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*10, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
+ o->via.map.size = 10;
+
+ o->via.map.ptr[0].key = msgpack::object(a0, z);
+ o->via.map.ptr[0].val = msgpack::object(a1, z);
+
+ o->via.map.ptr[1].key = msgpack::object(a2, z);
+ o->via.map.ptr[1].val = msgpack::object(a3, z);
+
+ o->via.map.ptr[2].key = msgpack::object(a4, z);
+ o->via.map.ptr[2].val = msgpack::object(a5, z);
+
+ o->via.map.ptr[3].key = msgpack::object(a6, z);
+ o->via.map.ptr[3].val = msgpack::object(a7, z);
+
+ o->via.map.ptr[4].key = msgpack::object(a8, z);
+ o->via.map.ptr[4].val = msgpack::object(a9, z);
+
+ o->via.map.ptr[5].key = msgpack::object(a10, z);
+ o->via.map.ptr[5].val = msgpack::object(a11, z);
+
+ o->via.map.ptr[6].key = msgpack::object(a12, z);
+ o->via.map.ptr[6].val = msgpack::object(a13, z);
+
+ o->via.map.ptr[7].key = msgpack::object(a14, z);
+ o->via.map.ptr[7].val = msgpack::object(a15, z);
+
+ o->via.map.ptr[8].key = msgpack::object(a16, z);
+ o->via.map.ptr[8].val = msgpack::object(a17, z);
+
+ o->via.map.ptr[9].key = msgpack::object(a18, z);
+ o->via.map.ptr[9].val = msgpack::object(a19, z);
+
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+ A12& a12;
+ A13& a13;
+ A14& a14;
+ A15& a15;
+ A16& a16;
+ A17& a17;
+ A18& a18;
+ A19& a19;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> {
+ define_map(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19, A20& _a20, A21& _a21) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_map(11);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ pk.pack(a12);
+ pk.pack(a13);
+ pk.pack(a14);
+ pk.pack(a15);
+ pk.pack(a16);
+ pk.pack(a17);
+ pk.pack(a18);
+ pk.pack(a19);
+ pk.pack(a20);
+ pk.pack(a21);
+ }
+ void msgpack_unpack(msgpack::object const& o) const
+ {
+ if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ std::map<std::string, msgpack::object const*> kvmap;
+ for (uint32_t i = 0; i < o.via.map.size; ++i) {
+ if (o.via.map.ptr[i].key.type != msgpack::type::STR) { throw msgpack::type_error(); }
+ kvmap.insert(
+ std::map<std::string, msgpack::object const*>::value_type(
+ std::string(
+ o.via.map.ptr[i].key.via.str.ptr,
+ o.via.map.ptr[i].key.via.str.size),
+ &o.via.map.ptr[i].val
+ )
+ );
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
+ if (it != kvmap.end()) {
+ it->second->convert(a1);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a2);
+ if (it != kvmap.end()) {
+ it->second->convert(a3);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a4);
+ if (it != kvmap.end()) {
+ it->second->convert(a5);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a6);
+ if (it != kvmap.end()) {
+ it->second->convert(a7);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a8);
+ if (it != kvmap.end()) {
+ it->second->convert(a9);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a10);
+ if (it != kvmap.end()) {
+ it->second->convert(a11);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a12);
+ if (it != kvmap.end()) {
+ it->second->convert(a13);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a14);
+ if (it != kvmap.end()) {
+ it->second->convert(a15);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a16);
+ if (it != kvmap.end()) {
+ it->second->convert(a17);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a18);
+ if (it != kvmap.end()) {
+ it->second->convert(a19);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a20);
+ if (it != kvmap.end()) {
+ it->second->convert(a21);
+ }
+ }
+
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::MAP;
+ o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*11, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
+ o->via.map.size = 11;
+
+ o->via.map.ptr[0].key = msgpack::object(a0, z);
+ o->via.map.ptr[0].val = msgpack::object(a1, z);
+
+ o->via.map.ptr[1].key = msgpack::object(a2, z);
+ o->via.map.ptr[1].val = msgpack::object(a3, z);
+
+ o->via.map.ptr[2].key = msgpack::object(a4, z);
+ o->via.map.ptr[2].val = msgpack::object(a5, z);
+
+ o->via.map.ptr[3].key = msgpack::object(a6, z);
+ o->via.map.ptr[3].val = msgpack::object(a7, z);
+
+ o->via.map.ptr[4].key = msgpack::object(a8, z);
+ o->via.map.ptr[4].val = msgpack::object(a9, z);
+
+ o->via.map.ptr[5].key = msgpack::object(a10, z);
+ o->via.map.ptr[5].val = msgpack::object(a11, z);
+
+ o->via.map.ptr[6].key = msgpack::object(a12, z);
+ o->via.map.ptr[6].val = msgpack::object(a13, z);
+
+ o->via.map.ptr[7].key = msgpack::object(a14, z);
+ o->via.map.ptr[7].val = msgpack::object(a15, z);
+
+ o->via.map.ptr[8].key = msgpack::object(a16, z);
+ o->via.map.ptr[8].val = msgpack::object(a17, z);
+
+ o->via.map.ptr[9].key = msgpack::object(a18, z);
+ o->via.map.ptr[9].val = msgpack::object(a19, z);
+
+ o->via.map.ptr[10].key = msgpack::object(a20, z);
+ o->via.map.ptr[10].val = msgpack::object(a21, z);
+
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+ A12& a12;
+ A13& a13;
+ A14& a14;
+ A15& a15;
+ A16& a16;
+ A17& a17;
+ A18& a18;
+ A19& a19;
+ A20& a20;
+ A21& a21;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23> {
+ define_map(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19, A20& _a20, A21& _a21, A22& _a22, A23& _a23) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_map(12);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ pk.pack(a12);
+ pk.pack(a13);
+ pk.pack(a14);
+ pk.pack(a15);
+ pk.pack(a16);
+ pk.pack(a17);
+ pk.pack(a18);
+ pk.pack(a19);
+ pk.pack(a20);
+ pk.pack(a21);
+ pk.pack(a22);
+ pk.pack(a23);
+ }
+ void msgpack_unpack(msgpack::object const& o) const
+ {
+ if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ std::map<std::string, msgpack::object const*> kvmap;
+ for (uint32_t i = 0; i < o.via.map.size; ++i) {
+ if (o.via.map.ptr[i].key.type != msgpack::type::STR) { throw msgpack::type_error(); }
+ kvmap.insert(
+ std::map<std::string, msgpack::object const*>::value_type(
+ std::string(
+ o.via.map.ptr[i].key.via.str.ptr,
+ o.via.map.ptr[i].key.via.str.size),
+ &o.via.map.ptr[i].val
+ )
+ );
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
+ if (it != kvmap.end()) {
+ it->second->convert(a1);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a2);
+ if (it != kvmap.end()) {
+ it->second->convert(a3);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a4);
+ if (it != kvmap.end()) {
+ it->second->convert(a5);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a6);
+ if (it != kvmap.end()) {
+ it->second->convert(a7);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a8);
+ if (it != kvmap.end()) {
+ it->second->convert(a9);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a10);
+ if (it != kvmap.end()) {
+ it->second->convert(a11);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a12);
+ if (it != kvmap.end()) {
+ it->second->convert(a13);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a14);
+ if (it != kvmap.end()) {
+ it->second->convert(a15);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a16);
+ if (it != kvmap.end()) {
+ it->second->convert(a17);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a18);
+ if (it != kvmap.end()) {
+ it->second->convert(a19);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a20);
+ if (it != kvmap.end()) {
+ it->second->convert(a21);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a22);
+ if (it != kvmap.end()) {
+ it->second->convert(a23);
+ }
+ }
+
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::MAP;
+ o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*12, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
+ o->via.map.size = 12;
+
+ o->via.map.ptr[0].key = msgpack::object(a0, z);
+ o->via.map.ptr[0].val = msgpack::object(a1, z);
+
+ o->via.map.ptr[1].key = msgpack::object(a2, z);
+ o->via.map.ptr[1].val = msgpack::object(a3, z);
+
+ o->via.map.ptr[2].key = msgpack::object(a4, z);
+ o->via.map.ptr[2].val = msgpack::object(a5, z);
+
+ o->via.map.ptr[3].key = msgpack::object(a6, z);
+ o->via.map.ptr[3].val = msgpack::object(a7, z);
+
+ o->via.map.ptr[4].key = msgpack::object(a8, z);
+ o->via.map.ptr[4].val = msgpack::object(a9, z);
+
+ o->via.map.ptr[5].key = msgpack::object(a10, z);
+ o->via.map.ptr[5].val = msgpack::object(a11, z);
+
+ o->via.map.ptr[6].key = msgpack::object(a12, z);
+ o->via.map.ptr[6].val = msgpack::object(a13, z);
+
+ o->via.map.ptr[7].key = msgpack::object(a14, z);
+ o->via.map.ptr[7].val = msgpack::object(a15, z);
+
+ o->via.map.ptr[8].key = msgpack::object(a16, z);
+ o->via.map.ptr[8].val = msgpack::object(a17, z);
+
+ o->via.map.ptr[9].key = msgpack::object(a18, z);
+ o->via.map.ptr[9].val = msgpack::object(a19, z);
+
+ o->via.map.ptr[10].key = msgpack::object(a20, z);
+ o->via.map.ptr[10].val = msgpack::object(a21, z);
+
+ o->via.map.ptr[11].key = msgpack::object(a22, z);
+ o->via.map.ptr[11].val = msgpack::object(a23, z);
+
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+ A12& a12;
+ A13& a13;
+ A14& a14;
+ A15& a15;
+ A16& a16;
+ A17& a17;
+ A18& a18;
+ A19& a19;
+ A20& a20;
+ A21& a21;
+ A22& a22;
+ A23& a23;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25> {
+ define_map(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19, A20& _a20, A21& _a21, A22& _a22, A23& _a23, A24& _a24, A25& _a25) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_map(13);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ pk.pack(a12);
+ pk.pack(a13);
+ pk.pack(a14);
+ pk.pack(a15);
+ pk.pack(a16);
+ pk.pack(a17);
+ pk.pack(a18);
+ pk.pack(a19);
+ pk.pack(a20);
+ pk.pack(a21);
+ pk.pack(a22);
+ pk.pack(a23);
+ pk.pack(a24);
+ pk.pack(a25);
+ }
+ void msgpack_unpack(msgpack::object const& o) const
+ {
+ if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ std::map<std::string, msgpack::object const*> kvmap;
+ for (uint32_t i = 0; i < o.via.map.size; ++i) {
+ if (o.via.map.ptr[i].key.type != msgpack::type::STR) { throw msgpack::type_error(); }
+ kvmap.insert(
+ std::map<std::string, msgpack::object const*>::value_type(
+ std::string(
+ o.via.map.ptr[i].key.via.str.ptr,
+ o.via.map.ptr[i].key.via.str.size),
+ &o.via.map.ptr[i].val
+ )
+ );
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
+ if (it != kvmap.end()) {
+ it->second->convert(a1);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a2);
+ if (it != kvmap.end()) {
+ it->second->convert(a3);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a4);
+ if (it != kvmap.end()) {
+ it->second->convert(a5);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a6);
+ if (it != kvmap.end()) {
+ it->second->convert(a7);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a8);
+ if (it != kvmap.end()) {
+ it->second->convert(a9);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a10);
+ if (it != kvmap.end()) {
+ it->second->convert(a11);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a12);
+ if (it != kvmap.end()) {
+ it->second->convert(a13);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a14);
+ if (it != kvmap.end()) {
+ it->second->convert(a15);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a16);
+ if (it != kvmap.end()) {
+ it->second->convert(a17);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a18);
+ if (it != kvmap.end()) {
+ it->second->convert(a19);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a20);
+ if (it != kvmap.end()) {
+ it->second->convert(a21);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a22);
+ if (it != kvmap.end()) {
+ it->second->convert(a23);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a24);
+ if (it != kvmap.end()) {
+ it->second->convert(a25);
+ }
+ }
+
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::MAP;
+ o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*13, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
+ o->via.map.size = 13;
+
+ o->via.map.ptr[0].key = msgpack::object(a0, z);
+ o->via.map.ptr[0].val = msgpack::object(a1, z);
+
+ o->via.map.ptr[1].key = msgpack::object(a2, z);
+ o->via.map.ptr[1].val = msgpack::object(a3, z);
+
+ o->via.map.ptr[2].key = msgpack::object(a4, z);
+ o->via.map.ptr[2].val = msgpack::object(a5, z);
+
+ o->via.map.ptr[3].key = msgpack::object(a6, z);
+ o->via.map.ptr[3].val = msgpack::object(a7, z);
+
+ o->via.map.ptr[4].key = msgpack::object(a8, z);
+ o->via.map.ptr[4].val = msgpack::object(a9, z);
+
+ o->via.map.ptr[5].key = msgpack::object(a10, z);
+ o->via.map.ptr[5].val = msgpack::object(a11, z);
+
+ o->via.map.ptr[6].key = msgpack::object(a12, z);
+ o->via.map.ptr[6].val = msgpack::object(a13, z);
+
+ o->via.map.ptr[7].key = msgpack::object(a14, z);
+ o->via.map.ptr[7].val = msgpack::object(a15, z);
+
+ o->via.map.ptr[8].key = msgpack::object(a16, z);
+ o->via.map.ptr[8].val = msgpack::object(a17, z);
+
+ o->via.map.ptr[9].key = msgpack::object(a18, z);
+ o->via.map.ptr[9].val = msgpack::object(a19, z);
+
+ o->via.map.ptr[10].key = msgpack::object(a20, z);
+ o->via.map.ptr[10].val = msgpack::object(a21, z);
+
+ o->via.map.ptr[11].key = msgpack::object(a22, z);
+ o->via.map.ptr[11].val = msgpack::object(a23, z);
+
+ o->via.map.ptr[12].key = msgpack::object(a24, z);
+ o->via.map.ptr[12].val = msgpack::object(a25, z);
+
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+ A12& a12;
+ A13& a13;
+ A14& a14;
+ A15& a15;
+ A16& a16;
+ A17& a17;
+ A18& a18;
+ A19& a19;
+ A20& a20;
+ A21& a21;
+ A22& a22;
+ A23& a23;
+ A24& a24;
+ A25& a25;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27> {
+ define_map(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19, A20& _a20, A21& _a21, A22& _a22, A23& _a23, A24& _a24, A25& _a25, A26& _a26, A27& _a27) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26), a27(_a27) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_map(14);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ pk.pack(a12);
+ pk.pack(a13);
+ pk.pack(a14);
+ pk.pack(a15);
+ pk.pack(a16);
+ pk.pack(a17);
+ pk.pack(a18);
+ pk.pack(a19);
+ pk.pack(a20);
+ pk.pack(a21);
+ pk.pack(a22);
+ pk.pack(a23);
+ pk.pack(a24);
+ pk.pack(a25);
+ pk.pack(a26);
+ pk.pack(a27);
+ }
+ void msgpack_unpack(msgpack::object const& o) const
+ {
+ if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ std::map<std::string, msgpack::object const*> kvmap;
+ for (uint32_t i = 0; i < o.via.map.size; ++i) {
+ if (o.via.map.ptr[i].key.type != msgpack::type::STR) { throw msgpack::type_error(); }
+ kvmap.insert(
+ std::map<std::string, msgpack::object const*>::value_type(
+ std::string(
+ o.via.map.ptr[i].key.via.str.ptr,
+ o.via.map.ptr[i].key.via.str.size),
+ &o.via.map.ptr[i].val
+ )
+ );
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
+ if (it != kvmap.end()) {
+ it->second->convert(a1);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a2);
+ if (it != kvmap.end()) {
+ it->second->convert(a3);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a4);
+ if (it != kvmap.end()) {
+ it->second->convert(a5);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a6);
+ if (it != kvmap.end()) {
+ it->second->convert(a7);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a8);
+ if (it != kvmap.end()) {
+ it->second->convert(a9);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a10);
+ if (it != kvmap.end()) {
+ it->second->convert(a11);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a12);
+ if (it != kvmap.end()) {
+ it->second->convert(a13);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a14);
+ if (it != kvmap.end()) {
+ it->second->convert(a15);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a16);
+ if (it != kvmap.end()) {
+ it->second->convert(a17);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a18);
+ if (it != kvmap.end()) {
+ it->second->convert(a19);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a20);
+ if (it != kvmap.end()) {
+ it->second->convert(a21);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a22);
+ if (it != kvmap.end()) {
+ it->second->convert(a23);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a24);
+ if (it != kvmap.end()) {
+ it->second->convert(a25);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a26);
+ if (it != kvmap.end()) {
+ it->second->convert(a27);
+ }
+ }
+
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::MAP;
+ o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*14, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
+ o->via.map.size = 14;
+
+ o->via.map.ptr[0].key = msgpack::object(a0, z);
+ o->via.map.ptr[0].val = msgpack::object(a1, z);
+
+ o->via.map.ptr[1].key = msgpack::object(a2, z);
+ o->via.map.ptr[1].val = msgpack::object(a3, z);
+
+ o->via.map.ptr[2].key = msgpack::object(a4, z);
+ o->via.map.ptr[2].val = msgpack::object(a5, z);
+
+ o->via.map.ptr[3].key = msgpack::object(a6, z);
+ o->via.map.ptr[3].val = msgpack::object(a7, z);
+
+ o->via.map.ptr[4].key = msgpack::object(a8, z);
+ o->via.map.ptr[4].val = msgpack::object(a9, z);
+
+ o->via.map.ptr[5].key = msgpack::object(a10, z);
+ o->via.map.ptr[5].val = msgpack::object(a11, z);
+
+ o->via.map.ptr[6].key = msgpack::object(a12, z);
+ o->via.map.ptr[6].val = msgpack::object(a13, z);
+
+ o->via.map.ptr[7].key = msgpack::object(a14, z);
+ o->via.map.ptr[7].val = msgpack::object(a15, z);
+
+ o->via.map.ptr[8].key = msgpack::object(a16, z);
+ o->via.map.ptr[8].val = msgpack::object(a17, z);
+
+ o->via.map.ptr[9].key = msgpack::object(a18, z);
+ o->via.map.ptr[9].val = msgpack::object(a19, z);
+
+ o->via.map.ptr[10].key = msgpack::object(a20, z);
+ o->via.map.ptr[10].val = msgpack::object(a21, z);
+
+ o->via.map.ptr[11].key = msgpack::object(a22, z);
+ o->via.map.ptr[11].val = msgpack::object(a23, z);
+
+ o->via.map.ptr[12].key = msgpack::object(a24, z);
+ o->via.map.ptr[12].val = msgpack::object(a25, z);
+
+ o->via.map.ptr[13].key = msgpack::object(a26, z);
+ o->via.map.ptr[13].val = msgpack::object(a27, z);
+
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+ A12& a12;
+ A13& a13;
+ A14& a14;
+ A15& a15;
+ A16& a16;
+ A17& a17;
+ A18& a18;
+ A19& a19;
+ A20& a20;
+ A21& a21;
+ A22& a22;
+ A23& a23;
+ A24& a24;
+ A25& a25;
+ A26& a26;
+ A27& a27;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29> {
+ define_map(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19, A20& _a20, A21& _a21, A22& _a22, A23& _a23, A24& _a24, A25& _a25, A26& _a26, A27& _a27, A28& _a28, A29& _a29) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26), a27(_a27), a28(_a28), a29(_a29) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_map(15);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ pk.pack(a12);
+ pk.pack(a13);
+ pk.pack(a14);
+ pk.pack(a15);
+ pk.pack(a16);
+ pk.pack(a17);
+ pk.pack(a18);
+ pk.pack(a19);
+ pk.pack(a20);
+ pk.pack(a21);
+ pk.pack(a22);
+ pk.pack(a23);
+ pk.pack(a24);
+ pk.pack(a25);
+ pk.pack(a26);
+ pk.pack(a27);
+ pk.pack(a28);
+ pk.pack(a29);
+ }
+ void msgpack_unpack(msgpack::object const& o) const
+ {
+ if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ std::map<std::string, msgpack::object const*> kvmap;
+ for (uint32_t i = 0; i < o.via.map.size; ++i) {
+ if (o.via.map.ptr[i].key.type != msgpack::type::STR) { throw msgpack::type_error(); }
+ kvmap.insert(
+ std::map<std::string, msgpack::object const*>::value_type(
+ std::string(
+ o.via.map.ptr[i].key.via.str.ptr,
+ o.via.map.ptr[i].key.via.str.size),
+ &o.via.map.ptr[i].val
+ )
+ );
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
+ if (it != kvmap.end()) {
+ it->second->convert(a1);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a2);
+ if (it != kvmap.end()) {
+ it->second->convert(a3);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a4);
+ if (it != kvmap.end()) {
+ it->second->convert(a5);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a6);
+ if (it != kvmap.end()) {
+ it->second->convert(a7);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a8);
+ if (it != kvmap.end()) {
+ it->second->convert(a9);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a10);
+ if (it != kvmap.end()) {
+ it->second->convert(a11);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a12);
+ if (it != kvmap.end()) {
+ it->second->convert(a13);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a14);
+ if (it != kvmap.end()) {
+ it->second->convert(a15);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a16);
+ if (it != kvmap.end()) {
+ it->second->convert(a17);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a18);
+ if (it != kvmap.end()) {
+ it->second->convert(a19);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a20);
+ if (it != kvmap.end()) {
+ it->second->convert(a21);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a22);
+ if (it != kvmap.end()) {
+ it->second->convert(a23);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a24);
+ if (it != kvmap.end()) {
+ it->second->convert(a25);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a26);
+ if (it != kvmap.end()) {
+ it->second->convert(a27);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a28);
+ if (it != kvmap.end()) {
+ it->second->convert(a29);
+ }
+ }
+
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::MAP;
+ o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*15, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
+ o->via.map.size = 15;
+
+ o->via.map.ptr[0].key = msgpack::object(a0, z);
+ o->via.map.ptr[0].val = msgpack::object(a1, z);
+
+ o->via.map.ptr[1].key = msgpack::object(a2, z);
+ o->via.map.ptr[1].val = msgpack::object(a3, z);
+
+ o->via.map.ptr[2].key = msgpack::object(a4, z);
+ o->via.map.ptr[2].val = msgpack::object(a5, z);
+
+ o->via.map.ptr[3].key = msgpack::object(a6, z);
+ o->via.map.ptr[3].val = msgpack::object(a7, z);
+
+ o->via.map.ptr[4].key = msgpack::object(a8, z);
+ o->via.map.ptr[4].val = msgpack::object(a9, z);
+
+ o->via.map.ptr[5].key = msgpack::object(a10, z);
+ o->via.map.ptr[5].val = msgpack::object(a11, z);
+
+ o->via.map.ptr[6].key = msgpack::object(a12, z);
+ o->via.map.ptr[6].val = msgpack::object(a13, z);
+
+ o->via.map.ptr[7].key = msgpack::object(a14, z);
+ o->via.map.ptr[7].val = msgpack::object(a15, z);
+
+ o->via.map.ptr[8].key = msgpack::object(a16, z);
+ o->via.map.ptr[8].val = msgpack::object(a17, z);
+
+ o->via.map.ptr[9].key = msgpack::object(a18, z);
+ o->via.map.ptr[9].val = msgpack::object(a19, z);
+
+ o->via.map.ptr[10].key = msgpack::object(a20, z);
+ o->via.map.ptr[10].val = msgpack::object(a21, z);
+
+ o->via.map.ptr[11].key = msgpack::object(a22, z);
+ o->via.map.ptr[11].val = msgpack::object(a23, z);
+
+ o->via.map.ptr[12].key = msgpack::object(a24, z);
+ o->via.map.ptr[12].val = msgpack::object(a25, z);
+
+ o->via.map.ptr[13].key = msgpack::object(a26, z);
+ o->via.map.ptr[13].val = msgpack::object(a27, z);
+
+ o->via.map.ptr[14].key = msgpack::object(a28, z);
+ o->via.map.ptr[14].val = msgpack::object(a29, z);
+
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+ A12& a12;
+ A13& a13;
+ A14& a14;
+ A15& a15;
+ A16& a16;
+ A17& a17;
+ A18& a18;
+ A19& a19;
+ A20& a20;
+ A21& a21;
+ A22& a22;
+ A23& a23;
+ A24& a24;
+ A25& a25;
+ A26& a26;
+ A27& a27;
+ A28& a28;
+ A29& a29;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31> {
+ define_map(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19, A20& _a20, A21& _a21, A22& _a22, A23& _a23, A24& _a24, A25& _a25, A26& _a26, A27& _a27, A28& _a28, A29& _a29, A30& _a30, A31& _a31) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26), a27(_a27), a28(_a28), a29(_a29), a30(_a30), a31(_a31) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_map(16);
+
+ pk.pack(a0);
+ pk.pack(a1);
+ pk.pack(a2);
+ pk.pack(a3);
+ pk.pack(a4);
+ pk.pack(a5);
+ pk.pack(a6);
+ pk.pack(a7);
+ pk.pack(a8);
+ pk.pack(a9);
+ pk.pack(a10);
+ pk.pack(a11);
+ pk.pack(a12);
+ pk.pack(a13);
+ pk.pack(a14);
+ pk.pack(a15);
+ pk.pack(a16);
+ pk.pack(a17);
+ pk.pack(a18);
+ pk.pack(a19);
+ pk.pack(a20);
+ pk.pack(a21);
+ pk.pack(a22);
+ pk.pack(a23);
+ pk.pack(a24);
+ pk.pack(a25);
+ pk.pack(a26);
+ pk.pack(a27);
+ pk.pack(a28);
+ pk.pack(a29);
+ pk.pack(a30);
+ pk.pack(a31);
+ }
+ void msgpack_unpack(msgpack::object const& o) const
+ {
+ if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ std::map<std::string, msgpack::object const*> kvmap;
+ for (uint32_t i = 0; i < o.via.map.size; ++i) {
+ if (o.via.map.ptr[i].key.type != msgpack::type::STR) { throw msgpack::type_error(); }
+ kvmap.insert(
+ std::map<std::string, msgpack::object const*>::value_type(
+ std::string(
+ o.via.map.ptr[i].key.via.str.ptr,
+ o.via.map.ptr[i].key.via.str.size),
+ &o.via.map.ptr[i].val
+ )
+ );
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
+ if (it != kvmap.end()) {
+ it->second->convert(a1);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a2);
+ if (it != kvmap.end()) {
+ it->second->convert(a3);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a4);
+ if (it != kvmap.end()) {
+ it->second->convert(a5);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a6);
+ if (it != kvmap.end()) {
+ it->second->convert(a7);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a8);
+ if (it != kvmap.end()) {
+ it->second->convert(a9);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a10);
+ if (it != kvmap.end()) {
+ it->second->convert(a11);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a12);
+ if (it != kvmap.end()) {
+ it->second->convert(a13);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a14);
+ if (it != kvmap.end()) {
+ it->second->convert(a15);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a16);
+ if (it != kvmap.end()) {
+ it->second->convert(a17);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a18);
+ if (it != kvmap.end()) {
+ it->second->convert(a19);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a20);
+ if (it != kvmap.end()) {
+ it->second->convert(a21);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a22);
+ if (it != kvmap.end()) {
+ it->second->convert(a23);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a24);
+ if (it != kvmap.end()) {
+ it->second->convert(a25);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a26);
+ if (it != kvmap.end()) {
+ it->second->convert(a27);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a28);
+ if (it != kvmap.end()) {
+ it->second->convert(a29);
+ }
+ }
+
+ {
+ std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a30);
+ if (it != kvmap.end()) {
+ it->second->convert(a31);
+ }
+ }
+
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::MAP;
+ o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*16, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
+ o->via.map.size = 16;
+
+ o->via.map.ptr[0].key = msgpack::object(a0, z);
+ o->via.map.ptr[0].val = msgpack::object(a1, z);
+
+ o->via.map.ptr[1].key = msgpack::object(a2, z);
+ o->via.map.ptr[1].val = msgpack::object(a3, z);
+
+ o->via.map.ptr[2].key = msgpack::object(a4, z);
+ o->via.map.ptr[2].val = msgpack::object(a5, z);
+
+ o->via.map.ptr[3].key = msgpack::object(a6, z);
+ o->via.map.ptr[3].val = msgpack::object(a7, z);
+
+ o->via.map.ptr[4].key = msgpack::object(a8, z);
+ o->via.map.ptr[4].val = msgpack::object(a9, z);
+
+ o->via.map.ptr[5].key = msgpack::object(a10, z);
+ o->via.map.ptr[5].val = msgpack::object(a11, z);
+
+ o->via.map.ptr[6].key = msgpack::object(a12, z);
+ o->via.map.ptr[6].val = msgpack::object(a13, z);
+
+ o->via.map.ptr[7].key = msgpack::object(a14, z);
+ o->via.map.ptr[7].val = msgpack::object(a15, z);
+
+ o->via.map.ptr[8].key = msgpack::object(a16, z);
+ o->via.map.ptr[8].val = msgpack::object(a17, z);
+
+ o->via.map.ptr[9].key = msgpack::object(a18, z);
+ o->via.map.ptr[9].val = msgpack::object(a19, z);
+
+ o->via.map.ptr[10].key = msgpack::object(a20, z);
+ o->via.map.ptr[10].val = msgpack::object(a21, z);
+
+ o->via.map.ptr[11].key = msgpack::object(a22, z);
+ o->via.map.ptr[11].val = msgpack::object(a23, z);
+
+ o->via.map.ptr[12].key = msgpack::object(a24, z);
+ o->via.map.ptr[12].val = msgpack::object(a25, z);
+
+ o->via.map.ptr[13].key = msgpack::object(a26, z);
+ o->via.map.ptr[13].val = msgpack::object(a27, z);
+
+ o->via.map.ptr[14].key = msgpack::object(a28, z);
+ o->via.map.ptr[14].val = msgpack::object(a29, z);
+
+ o->via.map.ptr[15].key = msgpack::object(a30, z);
+ o->via.map.ptr[15].val = msgpack::object(a31, z);
+
+ }
+
+ A0& a0;
+ A1& a1;
+ A2& a2;
+ A3& a3;
+ A4& a4;
+ A5& a5;
+ A6& a6;
+ A7& a7;
+ A8& a8;
+ A9& a9;
+ A10& a10;
+ A11& a11;
+ A12& a12;
+ A13& a13;
+ A14& a14;
+ A15& a15;
+ A16& a16;
+ A17& a17;
+ A18& a18;
+ A19& a19;
+ A20& a20;
+ A21& a21;
+ A22& a22;
+ A23& a23;
+ A24& a24;
+ A25& a25;
+ A26& a26;
+ A27& a27;
+ A28& a28;
+ A29& a29;
+ A30& a30;
+ A31& a31;
+};
+
+/// @endcond
+
+inline define_map<> make_define_map()
+{
+ return define_map<>();
+}
+
+/// @cond
+
+template <typename A0>
+inline define_map<A0> make_define_map(A0& a0)
+{
+ return define_map<A0>(a0);
+}
+
+template <typename A0, typename A1>
+inline define_map<A0, A1> make_define_map(A0& a0, A1& a1)
+{
+ return define_map<A0, A1>(a0, a1);
+}
+
+template <typename A0, typename A1, typename A2>
+inline define_map<A0, A1, A2> make_define_map(A0& a0, A1& a1, A2& a2)
+{
+ return define_map<A0, A1, A2>(a0, a1, a2);
+}
+
+template <typename A0, typename A1, typename A2, typename A3>
+inline define_map<A0, A1, A2, A3> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3)
+{
+ return define_map<A0, A1, A2, A3>(a0, a1, a2, a3);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4>
+inline define_map<A0, A1, A2, A3, A4> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4)
+{
+ return define_map<A0, A1, A2, A3, A4>(a0, a1, a2, a3, a4);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
+inline define_map<A0, A1, A2, A3, A4, A5> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5)
+{
+ return define_map<A0, A1, A2, A3, A4, A5>(a0, a1, a2, a3, a4, a5);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+inline define_map<A0, A1, A2, A3, A4, A5, A6> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6)
+{
+ return define_map<A0, A1, A2, A3, A4, A5, A6>(a0, a1, a2, a3, a4, a5, a6);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+inline define_map<A0, A1, A2, A3, A4, A5, A6, A7> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7)
+{
+ return define_map<A0, A1, A2, A3, A4, A5, A6, A7>(a0, a1, a2, a3, a4, a5, a6, a7);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8)
+{
+ return define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8>(a0, a1, a2, a3, a4, a5, a6, a7, a8);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9)
+{
+ return define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10)
+{
+ return define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11)
+{
+ return define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12)
+{
+ return define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13)
+{
+ return define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14)
+{
+ return define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15)
+{
+ return define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16)
+{
+ return define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17)
+{
+ return define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18)
+{
+ return define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19)
+{
+ return define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20)
+{
+ return define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21)
+{
+ return define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22)
+{
+ return define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23)
+{
+ return define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24)
+{
+ return define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25)
+{
+ return define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25, A26& a26)
+{
+ return define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25, A26& a26, A27& a27)
+{
+ return define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25, A26& a26, A27& a27, A28& a28)
+{
+ return define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25, A26& a26, A27& a27, A28& a28, A29& a29)
+{
+ return define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25, A26& a26, A27& a27, A28& a28, A29& a29, A30& a30)
+{
+ return define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25, A26& a26, A27& a27, A28& a28, A29& a29, A30& a30, A31& a31)
+{
+ return define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31);
+}
+
+/// @endcond
+
+} // namespace type
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+} // namespace msgpack
+
+#endif // MSGPACK_V1_CPP03_DEFINE_MAP_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp03_define_map_decl.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp03_define_map_decl.hpp
new file mode 100644
index 0000000000..67644565de
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp03_define_map_decl.hpp
@@ -0,0 +1,135 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015-2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_CPP03_DEFINE_MAP_DECL_HPP
+#define MSGPACK_V1_CPP03_DEFINE_MAP_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+
+namespace msgpack {
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+namespace type {
+
+/// @cond
+
+template <typename A0 = void, typename A1 = void, typename A2 = void, typename A3 = void, typename A4 = void, typename A5 = void, typename A6 = void, typename A7 = void, typename A8 = void, typename A9 = void, typename A10 = void, typename A11 = void, typename A12 = void, typename A13 = void, typename A14 = void, typename A15 = void, typename A16 = void, typename A17 = void, typename A18 = void, typename A19 = void, typename A20 = void, typename A21 = void, typename A22 = void, typename A23 = void, typename A24 = void, typename A25 = void, typename A26 = void, typename A27 = void, typename A28 = void, typename A29 = void, typename A30 = void, typename A31 = void, typename A32 = void>
+struct define_map;
+/// @endcond
+
+define_map<> make_define_map();
+
+/// @cond
+
+template <typename A0>
+define_map<A0> make_define_map(A0& a0);
+
+template <typename A0, typename A1>
+define_map<A0, A1> make_define_map(A0& a0, A1& a1);
+
+template <typename A0, typename A1, typename A2>
+define_map<A0, A1, A2> make_define_map(A0& a0, A1& a1, A2& a2);
+
+template <typename A0, typename A1, typename A2, typename A3>
+define_map<A0, A1, A2, A3> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4>
+define_map<A0, A1, A2, A3, A4> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
+define_map<A0, A1, A2, A3, A4, A5> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+define_map<A0, A1, A2, A3, A4, A5, A6> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+define_map<A0, A1, A2, A3, A4, A5, A6, A7> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25, A26& a26);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25, A26& a26, A27& a27);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25, A26& a26, A27& a27, A28& a28);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25, A26& a26, A27& a27, A28& a28, A29& a29);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25, A26& a26, A27& a27, A28& a28, A29& a29, A30& a30);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25, A26& a26, A27& a27, A28& a28, A29& a29, A30& a30, A31& a31);
+
+/// @endcond
+
+} // namespace type
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+} // namespace msgpack
+
+#endif // MSGPACK_V1_CPP03_DEFINE_MAP_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp03_msgpack_tuple.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp03_msgpack_tuple.hpp
new file mode 100644
index 0000000000..88a0b3b55d
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp03_msgpack_tuple.hpp
@@ -0,0 +1,14425 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_CPP03_MSGPACK_TUPLE_HPP
+#define MSGPACK_V1_CPP03_MSGPACK_TUPLE_HPP
+
+#include "msgpack/v1/adaptor/msgpack_tuple_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace type {
+
+// FIXME operator==
+// FIXME operator!=
+
+
+template <typename T>
+struct tuple_type {
+ typedef T type;
+ typedef T value_type;
+ typedef T& reference;
+ typedef const T& const_reference;
+ typedef const T& transparent_reference;
+};
+
+template <typename T>
+struct tuple_type<T&> {
+ typedef T type;
+ typedef T& value_type;
+ typedef T& reference;
+ typedef const T& const_reference;
+ typedef T& transparent_reference;
+};
+
+template <typename T>
+struct tuple_type<const T&> {
+ typedef T type;
+ typedef T& value_type;
+ typedef T& reference;
+ typedef const T& const_reference;
+ typedef const T& transparent_reference;
+};
+
+/// @cond
+
+
+template <typename A0>
+struct tuple_element<tuple<A0>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+
+
+template <typename A0, typename A1>
+struct tuple_element<tuple<A0, A1>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0, A1 >& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+template <typename A0, typename A1>
+struct tuple_element<tuple<A0, A1>, 1> : tuple_type<A1> {
+ tuple_element(tuple<A0, A1 >& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::reference get() { return m_x; }
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2>
+struct tuple_element<tuple<A0, A1, A2>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0, A1 , A2 >& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2>
+struct tuple_element<tuple<A0, A1, A2>, 1> : tuple_type<A1> {
+ tuple_element(tuple<A0, A1 , A2 >& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::reference get() { return m_x; }
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2>
+struct tuple_element<tuple<A0, A1, A2>, 2> : tuple_type<A2> {
+ tuple_element(tuple<A0, A1 , A2 >& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::reference get() { return m_x; }
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3>
+struct tuple_element<tuple<A0, A1, A2, A3>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0, A1 , A2 , A3 >& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3>
+struct tuple_element<tuple<A0, A1, A2, A3>, 1> : tuple_type<A1> {
+ tuple_element(tuple<A0, A1 , A2 , A3 >& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::reference get() { return m_x; }
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3>
+struct tuple_element<tuple<A0, A1, A2, A3>, 2> : tuple_type<A2> {
+ tuple_element(tuple<A0, A1 , A2 , A3 >& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::reference get() { return m_x; }
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3>
+struct tuple_element<tuple<A0, A1, A2, A3>, 3> : tuple_type<A3> {
+ tuple_element(tuple<A0, A1 , A2 , A3 >& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::reference get() { return m_x; }
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4>
+struct tuple_element<tuple<A0, A1, A2, A3, A4>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 >& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4>
+struct tuple_element<tuple<A0, A1, A2, A3, A4>, 1> : tuple_type<A1> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 >& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::reference get() { return m_x; }
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4>
+struct tuple_element<tuple<A0, A1, A2, A3, A4>, 2> : tuple_type<A2> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 >& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::reference get() { return m_x; }
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4>
+struct tuple_element<tuple<A0, A1, A2, A3, A4>, 3> : tuple_type<A3> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 >& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::reference get() { return m_x; }
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4>
+struct tuple_element<tuple<A0, A1, A2, A3, A4>, 4> : tuple_type<A4> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 >& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::reference get() { return m_x; }
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 >& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 1> : tuple_type<A1> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 >& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::reference get() { return m_x; }
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 2> : tuple_type<A2> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 >& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::reference get() { return m_x; }
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 3> : tuple_type<A3> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 >& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::reference get() { return m_x; }
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 4> : tuple_type<A4> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 >& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::reference get() { return m_x; }
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 5> : tuple_type<A5> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 >& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::reference get() { return m_x; }
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 >& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 1> : tuple_type<A1> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 >& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::reference get() { return m_x; }
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 2> : tuple_type<A2> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 >& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::reference get() { return m_x; }
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 3> : tuple_type<A3> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 >& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::reference get() { return m_x; }
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 4> : tuple_type<A4> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 >& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::reference get() { return m_x; }
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 5> : tuple_type<A5> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 >& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::reference get() { return m_x; }
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 6> : tuple_type<A6> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 >& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::reference get() { return m_x; }
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 >& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 1> : tuple_type<A1> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 >& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::reference get() { return m_x; }
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 2> : tuple_type<A2> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 >& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::reference get() { return m_x; }
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 3> : tuple_type<A3> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 >& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::reference get() { return m_x; }
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 4> : tuple_type<A4> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 >& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::reference get() { return m_x; }
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 5> : tuple_type<A5> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 >& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::reference get() { return m_x; }
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 6> : tuple_type<A6> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 >& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::reference get() { return m_x; }
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 7> : tuple_type<A7> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 >& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::reference get() { return m_x; }
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 >& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 1> : tuple_type<A1> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 >& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::reference get() { return m_x; }
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 2> : tuple_type<A2> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 >& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::reference get() { return m_x; }
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 3> : tuple_type<A3> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 >& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::reference get() { return m_x; }
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 4> : tuple_type<A4> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 >& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::reference get() { return m_x; }
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 5> : tuple_type<A5> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 >& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::reference get() { return m_x; }
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 6> : tuple_type<A6> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 >& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::reference get() { return m_x; }
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 7> : tuple_type<A7> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 >& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::reference get() { return m_x; }
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 8> : tuple_type<A8> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 >& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::reference get() { return m_x; }
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 >& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 1> : tuple_type<A1> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 >& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::reference get() { return m_x; }
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 2> : tuple_type<A2> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 >& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::reference get() { return m_x; }
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 3> : tuple_type<A3> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 >& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::reference get() { return m_x; }
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 4> : tuple_type<A4> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 >& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::reference get() { return m_x; }
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 5> : tuple_type<A5> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 >& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::reference get() { return m_x; }
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 6> : tuple_type<A6> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 >& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::reference get() { return m_x; }
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 7> : tuple_type<A7> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 >& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::reference get() { return m_x; }
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 8> : tuple_type<A8> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 >& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::reference get() { return m_x; }
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 9> : tuple_type<A9> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 >& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::reference get() { return m_x; }
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 >& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 1> : tuple_type<A1> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 >& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::reference get() { return m_x; }
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 2> : tuple_type<A2> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 >& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::reference get() { return m_x; }
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 3> : tuple_type<A3> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 >& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::reference get() { return m_x; }
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 4> : tuple_type<A4> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 >& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::reference get() { return m_x; }
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 5> : tuple_type<A5> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 >& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::reference get() { return m_x; }
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 6> : tuple_type<A6> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 >& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::reference get() { return m_x; }
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 7> : tuple_type<A7> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 >& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::reference get() { return m_x; }
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 8> : tuple_type<A8> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 >& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::reference get() { return m_x; }
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 9> : tuple_type<A9> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 >& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::reference get() { return m_x; }
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 10> : tuple_type<A10> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 >& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::reference get() { return m_x; }
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 >& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 1> : tuple_type<A1> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 >& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::reference get() { return m_x; }
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 2> : tuple_type<A2> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 >& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::reference get() { return m_x; }
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 3> : tuple_type<A3> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 >& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::reference get() { return m_x; }
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 4> : tuple_type<A4> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 >& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::reference get() { return m_x; }
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 5> : tuple_type<A5> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 >& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::reference get() { return m_x; }
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 6> : tuple_type<A6> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 >& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::reference get() { return m_x; }
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 7> : tuple_type<A7> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 >& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::reference get() { return m_x; }
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 8> : tuple_type<A8> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 >& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::reference get() { return m_x; }
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 9> : tuple_type<A9> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 >& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::reference get() { return m_x; }
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 10> : tuple_type<A10> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 >& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::reference get() { return m_x; }
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 11> : tuple_type<A11> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 >& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::reference get() { return m_x; }
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 >& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 1> : tuple_type<A1> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 >& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::reference get() { return m_x; }
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 2> : tuple_type<A2> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 >& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::reference get() { return m_x; }
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 3> : tuple_type<A3> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 >& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::reference get() { return m_x; }
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 4> : tuple_type<A4> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 >& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::reference get() { return m_x; }
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 5> : tuple_type<A5> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 >& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::reference get() { return m_x; }
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 6> : tuple_type<A6> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 >& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::reference get() { return m_x; }
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 7> : tuple_type<A7> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 >& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::reference get() { return m_x; }
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 8> : tuple_type<A8> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 >& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::reference get() { return m_x; }
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 9> : tuple_type<A9> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 >& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::reference get() { return m_x; }
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 10> : tuple_type<A10> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 >& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::reference get() { return m_x; }
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 11> : tuple_type<A11> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 >& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::reference get() { return m_x; }
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 12> : tuple_type<A12> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 >& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::reference get() { return m_x; }
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 >& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 1> : tuple_type<A1> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 >& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::reference get() { return m_x; }
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 2> : tuple_type<A2> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 >& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::reference get() { return m_x; }
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 3> : tuple_type<A3> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 >& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::reference get() { return m_x; }
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 4> : tuple_type<A4> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 >& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::reference get() { return m_x; }
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 5> : tuple_type<A5> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 >& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::reference get() { return m_x; }
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 6> : tuple_type<A6> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 >& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::reference get() { return m_x; }
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 7> : tuple_type<A7> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 >& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::reference get() { return m_x; }
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 8> : tuple_type<A8> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 >& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::reference get() { return m_x; }
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 9> : tuple_type<A9> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 >& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::reference get() { return m_x; }
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 10> : tuple_type<A10> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 >& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::reference get() { return m_x; }
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 11> : tuple_type<A11> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 >& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::reference get() { return m_x; }
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 12> : tuple_type<A12> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 >& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::reference get() { return m_x; }
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 13> : tuple_type<A13> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 >& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::reference get() { return m_x; }
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 >& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 1> : tuple_type<A1> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 >& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::reference get() { return m_x; }
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 2> : tuple_type<A2> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 >& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::reference get() { return m_x; }
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 3> : tuple_type<A3> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 >& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::reference get() { return m_x; }
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 4> : tuple_type<A4> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 >& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::reference get() { return m_x; }
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 5> : tuple_type<A5> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 >& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::reference get() { return m_x; }
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 6> : tuple_type<A6> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 >& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::reference get() { return m_x; }
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 7> : tuple_type<A7> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 >& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::reference get() { return m_x; }
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 8> : tuple_type<A8> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 >& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::reference get() { return m_x; }
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 9> : tuple_type<A9> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 >& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::reference get() { return m_x; }
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 10> : tuple_type<A10> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 >& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::reference get() { return m_x; }
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 11> : tuple_type<A11> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 >& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::reference get() { return m_x; }
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 12> : tuple_type<A12> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 >& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::reference get() { return m_x; }
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 13> : tuple_type<A13> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 >& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::reference get() { return m_x; }
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 14> : tuple_type<A14> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 >& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::reference get() { return m_x; }
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 1> : tuple_type<A1> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::reference get() { return m_x; }
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 2> : tuple_type<A2> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::reference get() { return m_x; }
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 3> : tuple_type<A3> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::reference get() { return m_x; }
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 4> : tuple_type<A4> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::reference get() { return m_x; }
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 5> : tuple_type<A5> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::reference get() { return m_x; }
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 6> : tuple_type<A6> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::reference get() { return m_x; }
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 7> : tuple_type<A7> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::reference get() { return m_x; }
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 8> : tuple_type<A8> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::reference get() { return m_x; }
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 9> : tuple_type<A9> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::reference get() { return m_x; }
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 10> : tuple_type<A10> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::reference get() { return m_x; }
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 11> : tuple_type<A11> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::reference get() { return m_x; }
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 12> : tuple_type<A12> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::reference get() { return m_x; }
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 13> : tuple_type<A13> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::reference get() { return m_x; }
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 14> : tuple_type<A14> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::reference get() { return m_x; }
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 15> : tuple_type<A15> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::reference get() { return m_x; }
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 1> : tuple_type<A1> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::reference get() { return m_x; }
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 2> : tuple_type<A2> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::reference get() { return m_x; }
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 3> : tuple_type<A3> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::reference get() { return m_x; }
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 4> : tuple_type<A4> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::reference get() { return m_x; }
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 5> : tuple_type<A5> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::reference get() { return m_x; }
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 6> : tuple_type<A6> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::reference get() { return m_x; }
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 7> : tuple_type<A7> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::reference get() { return m_x; }
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 8> : tuple_type<A8> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::reference get() { return m_x; }
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 9> : tuple_type<A9> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::reference get() { return m_x; }
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 10> : tuple_type<A10> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::reference get() { return m_x; }
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 11> : tuple_type<A11> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::reference get() { return m_x; }
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 12> : tuple_type<A12> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::reference get() { return m_x; }
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 13> : tuple_type<A13> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::reference get() { return m_x; }
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 14> : tuple_type<A14> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::reference get() { return m_x; }
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 15> : tuple_type<A15> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::reference get() { return m_x; }
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 16> : tuple_type<A16> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::reference get() { return m_x; }
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 1> : tuple_type<A1> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::reference get() { return m_x; }
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 2> : tuple_type<A2> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::reference get() { return m_x; }
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 3> : tuple_type<A3> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::reference get() { return m_x; }
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 4> : tuple_type<A4> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::reference get() { return m_x; }
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 5> : tuple_type<A5> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::reference get() { return m_x; }
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 6> : tuple_type<A6> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::reference get() { return m_x; }
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 7> : tuple_type<A7> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::reference get() { return m_x; }
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 8> : tuple_type<A8> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::reference get() { return m_x; }
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 9> : tuple_type<A9> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::reference get() { return m_x; }
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 10> : tuple_type<A10> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::reference get() { return m_x; }
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 11> : tuple_type<A11> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::reference get() { return m_x; }
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 12> : tuple_type<A12> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::reference get() { return m_x; }
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 13> : tuple_type<A13> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::reference get() { return m_x; }
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 14> : tuple_type<A14> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::reference get() { return m_x; }
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 15> : tuple_type<A15> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::reference get() { return m_x; }
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 16> : tuple_type<A16> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::reference get() { return m_x; }
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 17> : tuple_type<A17> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a17) {}
+ typename tuple_type<A17>::reference get() { return m_x; }
+ typename tuple_type<A17>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A17>::reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 1> : tuple_type<A1> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::reference get() { return m_x; }
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 2> : tuple_type<A2> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::reference get() { return m_x; }
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 3> : tuple_type<A3> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::reference get() { return m_x; }
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 4> : tuple_type<A4> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::reference get() { return m_x; }
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 5> : tuple_type<A5> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::reference get() { return m_x; }
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 6> : tuple_type<A6> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::reference get() { return m_x; }
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 7> : tuple_type<A7> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::reference get() { return m_x; }
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 8> : tuple_type<A8> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::reference get() { return m_x; }
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 9> : tuple_type<A9> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::reference get() { return m_x; }
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 10> : tuple_type<A10> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::reference get() { return m_x; }
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 11> : tuple_type<A11> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::reference get() { return m_x; }
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 12> : tuple_type<A12> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::reference get() { return m_x; }
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 13> : tuple_type<A13> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::reference get() { return m_x; }
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 14> : tuple_type<A14> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::reference get() { return m_x; }
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 15> : tuple_type<A15> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::reference get() { return m_x; }
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 16> : tuple_type<A16> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::reference get() { return m_x; }
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 17> : tuple_type<A17> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a17) {}
+ typename tuple_type<A17>::reference get() { return m_x; }
+ typename tuple_type<A17>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A17>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 18> : tuple_type<A18> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a18) {}
+ typename tuple_type<A18>::reference get() { return m_x; }
+ typename tuple_type<A18>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A18>::reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 1> : tuple_type<A1> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::reference get() { return m_x; }
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 2> : tuple_type<A2> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::reference get() { return m_x; }
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 3> : tuple_type<A3> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::reference get() { return m_x; }
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 4> : tuple_type<A4> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::reference get() { return m_x; }
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 5> : tuple_type<A5> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::reference get() { return m_x; }
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 6> : tuple_type<A6> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::reference get() { return m_x; }
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 7> : tuple_type<A7> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::reference get() { return m_x; }
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 8> : tuple_type<A8> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::reference get() { return m_x; }
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 9> : tuple_type<A9> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::reference get() { return m_x; }
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 10> : tuple_type<A10> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::reference get() { return m_x; }
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 11> : tuple_type<A11> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::reference get() { return m_x; }
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 12> : tuple_type<A12> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::reference get() { return m_x; }
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 13> : tuple_type<A13> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::reference get() { return m_x; }
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 14> : tuple_type<A14> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::reference get() { return m_x; }
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 15> : tuple_type<A15> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::reference get() { return m_x; }
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 16> : tuple_type<A16> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::reference get() { return m_x; }
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 17> : tuple_type<A17> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a17) {}
+ typename tuple_type<A17>::reference get() { return m_x; }
+ typename tuple_type<A17>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A17>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 18> : tuple_type<A18> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a18) {}
+ typename tuple_type<A18>::reference get() { return m_x; }
+ typename tuple_type<A18>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A18>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 19> : tuple_type<A19> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a19) {}
+ typename tuple_type<A19>::reference get() { return m_x; }
+ typename tuple_type<A19>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A19>::reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 1> : tuple_type<A1> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::reference get() { return m_x; }
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 2> : tuple_type<A2> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::reference get() { return m_x; }
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 3> : tuple_type<A3> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::reference get() { return m_x; }
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 4> : tuple_type<A4> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::reference get() { return m_x; }
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 5> : tuple_type<A5> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::reference get() { return m_x; }
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 6> : tuple_type<A6> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::reference get() { return m_x; }
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 7> : tuple_type<A7> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::reference get() { return m_x; }
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 8> : tuple_type<A8> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::reference get() { return m_x; }
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 9> : tuple_type<A9> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::reference get() { return m_x; }
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 10> : tuple_type<A10> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::reference get() { return m_x; }
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 11> : tuple_type<A11> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::reference get() { return m_x; }
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 12> : tuple_type<A12> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::reference get() { return m_x; }
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 13> : tuple_type<A13> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::reference get() { return m_x; }
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 14> : tuple_type<A14> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::reference get() { return m_x; }
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 15> : tuple_type<A15> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::reference get() { return m_x; }
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 16> : tuple_type<A16> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::reference get() { return m_x; }
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 17> : tuple_type<A17> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a17) {}
+ typename tuple_type<A17>::reference get() { return m_x; }
+ typename tuple_type<A17>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A17>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 18> : tuple_type<A18> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a18) {}
+ typename tuple_type<A18>::reference get() { return m_x; }
+ typename tuple_type<A18>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A18>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 19> : tuple_type<A19> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a19) {}
+ typename tuple_type<A19>::reference get() { return m_x; }
+ typename tuple_type<A19>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A19>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 20> : tuple_type<A20> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a20) {}
+ typename tuple_type<A20>::reference get() { return m_x; }
+ typename tuple_type<A20>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A20>::reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 1> : tuple_type<A1> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::reference get() { return m_x; }
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 2> : tuple_type<A2> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::reference get() { return m_x; }
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 3> : tuple_type<A3> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::reference get() { return m_x; }
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 4> : tuple_type<A4> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::reference get() { return m_x; }
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 5> : tuple_type<A5> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::reference get() { return m_x; }
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 6> : tuple_type<A6> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::reference get() { return m_x; }
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 7> : tuple_type<A7> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::reference get() { return m_x; }
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 8> : tuple_type<A8> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::reference get() { return m_x; }
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 9> : tuple_type<A9> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::reference get() { return m_x; }
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 10> : tuple_type<A10> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::reference get() { return m_x; }
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 11> : tuple_type<A11> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::reference get() { return m_x; }
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 12> : tuple_type<A12> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::reference get() { return m_x; }
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 13> : tuple_type<A13> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::reference get() { return m_x; }
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 14> : tuple_type<A14> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::reference get() { return m_x; }
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 15> : tuple_type<A15> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::reference get() { return m_x; }
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 16> : tuple_type<A16> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::reference get() { return m_x; }
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 17> : tuple_type<A17> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a17) {}
+ typename tuple_type<A17>::reference get() { return m_x; }
+ typename tuple_type<A17>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A17>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 18> : tuple_type<A18> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a18) {}
+ typename tuple_type<A18>::reference get() { return m_x; }
+ typename tuple_type<A18>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A18>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 19> : tuple_type<A19> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a19) {}
+ typename tuple_type<A19>::reference get() { return m_x; }
+ typename tuple_type<A19>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A19>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 20> : tuple_type<A20> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a20) {}
+ typename tuple_type<A20>::reference get() { return m_x; }
+ typename tuple_type<A20>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A20>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 21> : tuple_type<A21> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a21) {}
+ typename tuple_type<A21>::reference get() { return m_x; }
+ typename tuple_type<A21>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A21>::reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 1> : tuple_type<A1> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::reference get() { return m_x; }
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 2> : tuple_type<A2> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::reference get() { return m_x; }
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 3> : tuple_type<A3> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::reference get() { return m_x; }
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 4> : tuple_type<A4> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::reference get() { return m_x; }
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 5> : tuple_type<A5> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::reference get() { return m_x; }
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 6> : tuple_type<A6> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::reference get() { return m_x; }
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 7> : tuple_type<A7> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::reference get() { return m_x; }
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 8> : tuple_type<A8> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::reference get() { return m_x; }
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 9> : tuple_type<A9> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::reference get() { return m_x; }
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 10> : tuple_type<A10> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::reference get() { return m_x; }
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 11> : tuple_type<A11> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::reference get() { return m_x; }
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 12> : tuple_type<A12> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::reference get() { return m_x; }
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 13> : tuple_type<A13> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::reference get() { return m_x; }
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 14> : tuple_type<A14> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::reference get() { return m_x; }
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 15> : tuple_type<A15> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::reference get() { return m_x; }
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 16> : tuple_type<A16> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::reference get() { return m_x; }
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 17> : tuple_type<A17> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a17) {}
+ typename tuple_type<A17>::reference get() { return m_x; }
+ typename tuple_type<A17>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A17>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 18> : tuple_type<A18> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a18) {}
+ typename tuple_type<A18>::reference get() { return m_x; }
+ typename tuple_type<A18>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A18>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 19> : tuple_type<A19> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a19) {}
+ typename tuple_type<A19>::reference get() { return m_x; }
+ typename tuple_type<A19>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A19>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 20> : tuple_type<A20> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a20) {}
+ typename tuple_type<A20>::reference get() { return m_x; }
+ typename tuple_type<A20>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A20>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 21> : tuple_type<A21> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a21) {}
+ typename tuple_type<A21>::reference get() { return m_x; }
+ typename tuple_type<A21>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A21>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 22> : tuple_type<A22> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a22) {}
+ typename tuple_type<A22>::reference get() { return m_x; }
+ typename tuple_type<A22>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A22>::reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 1> : tuple_type<A1> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::reference get() { return m_x; }
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 2> : tuple_type<A2> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::reference get() { return m_x; }
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 3> : tuple_type<A3> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::reference get() { return m_x; }
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 4> : tuple_type<A4> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::reference get() { return m_x; }
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 5> : tuple_type<A5> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::reference get() { return m_x; }
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 6> : tuple_type<A6> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::reference get() { return m_x; }
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 7> : tuple_type<A7> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::reference get() { return m_x; }
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 8> : tuple_type<A8> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::reference get() { return m_x; }
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 9> : tuple_type<A9> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::reference get() { return m_x; }
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 10> : tuple_type<A10> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::reference get() { return m_x; }
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 11> : tuple_type<A11> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::reference get() { return m_x; }
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 12> : tuple_type<A12> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::reference get() { return m_x; }
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 13> : tuple_type<A13> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::reference get() { return m_x; }
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 14> : tuple_type<A14> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::reference get() { return m_x; }
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 15> : tuple_type<A15> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::reference get() { return m_x; }
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 16> : tuple_type<A16> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::reference get() { return m_x; }
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 17> : tuple_type<A17> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a17) {}
+ typename tuple_type<A17>::reference get() { return m_x; }
+ typename tuple_type<A17>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A17>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 18> : tuple_type<A18> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a18) {}
+ typename tuple_type<A18>::reference get() { return m_x; }
+ typename tuple_type<A18>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A18>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 19> : tuple_type<A19> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a19) {}
+ typename tuple_type<A19>::reference get() { return m_x; }
+ typename tuple_type<A19>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A19>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 20> : tuple_type<A20> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a20) {}
+ typename tuple_type<A20>::reference get() { return m_x; }
+ typename tuple_type<A20>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A20>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 21> : tuple_type<A21> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a21) {}
+ typename tuple_type<A21>::reference get() { return m_x; }
+ typename tuple_type<A21>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A21>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 22> : tuple_type<A22> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a22) {}
+ typename tuple_type<A22>::reference get() { return m_x; }
+ typename tuple_type<A22>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A22>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 23> : tuple_type<A23> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a23) {}
+ typename tuple_type<A23>::reference get() { return m_x; }
+ typename tuple_type<A23>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A23>::reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 1> : tuple_type<A1> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::reference get() { return m_x; }
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 2> : tuple_type<A2> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::reference get() { return m_x; }
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 3> : tuple_type<A3> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::reference get() { return m_x; }
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 4> : tuple_type<A4> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::reference get() { return m_x; }
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 5> : tuple_type<A5> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::reference get() { return m_x; }
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 6> : tuple_type<A6> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::reference get() { return m_x; }
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 7> : tuple_type<A7> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::reference get() { return m_x; }
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 8> : tuple_type<A8> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::reference get() { return m_x; }
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 9> : tuple_type<A9> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::reference get() { return m_x; }
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 10> : tuple_type<A10> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::reference get() { return m_x; }
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 11> : tuple_type<A11> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::reference get() { return m_x; }
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 12> : tuple_type<A12> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::reference get() { return m_x; }
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 13> : tuple_type<A13> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::reference get() { return m_x; }
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 14> : tuple_type<A14> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::reference get() { return m_x; }
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 15> : tuple_type<A15> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::reference get() { return m_x; }
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 16> : tuple_type<A16> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::reference get() { return m_x; }
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 17> : tuple_type<A17> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a17) {}
+ typename tuple_type<A17>::reference get() { return m_x; }
+ typename tuple_type<A17>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A17>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 18> : tuple_type<A18> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a18) {}
+ typename tuple_type<A18>::reference get() { return m_x; }
+ typename tuple_type<A18>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A18>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 19> : tuple_type<A19> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a19) {}
+ typename tuple_type<A19>::reference get() { return m_x; }
+ typename tuple_type<A19>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A19>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 20> : tuple_type<A20> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a20) {}
+ typename tuple_type<A20>::reference get() { return m_x; }
+ typename tuple_type<A20>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A20>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 21> : tuple_type<A21> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a21) {}
+ typename tuple_type<A21>::reference get() { return m_x; }
+ typename tuple_type<A21>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A21>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 22> : tuple_type<A22> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a22) {}
+ typename tuple_type<A22>::reference get() { return m_x; }
+ typename tuple_type<A22>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A22>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 23> : tuple_type<A23> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a23) {}
+ typename tuple_type<A23>::reference get() { return m_x; }
+ typename tuple_type<A23>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A23>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 24> : tuple_type<A24> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a24) {}
+ typename tuple_type<A24>::reference get() { return m_x; }
+ typename tuple_type<A24>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A24>::reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 1> : tuple_type<A1> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::reference get() { return m_x; }
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 2> : tuple_type<A2> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::reference get() { return m_x; }
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 3> : tuple_type<A3> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::reference get() { return m_x; }
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 4> : tuple_type<A4> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::reference get() { return m_x; }
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 5> : tuple_type<A5> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::reference get() { return m_x; }
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 6> : tuple_type<A6> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::reference get() { return m_x; }
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 7> : tuple_type<A7> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::reference get() { return m_x; }
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 8> : tuple_type<A8> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::reference get() { return m_x; }
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 9> : tuple_type<A9> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::reference get() { return m_x; }
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 10> : tuple_type<A10> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::reference get() { return m_x; }
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 11> : tuple_type<A11> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::reference get() { return m_x; }
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 12> : tuple_type<A12> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::reference get() { return m_x; }
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 13> : tuple_type<A13> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::reference get() { return m_x; }
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 14> : tuple_type<A14> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::reference get() { return m_x; }
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 15> : tuple_type<A15> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::reference get() { return m_x; }
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 16> : tuple_type<A16> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::reference get() { return m_x; }
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 17> : tuple_type<A17> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a17) {}
+ typename tuple_type<A17>::reference get() { return m_x; }
+ typename tuple_type<A17>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A17>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 18> : tuple_type<A18> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a18) {}
+ typename tuple_type<A18>::reference get() { return m_x; }
+ typename tuple_type<A18>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A18>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 19> : tuple_type<A19> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a19) {}
+ typename tuple_type<A19>::reference get() { return m_x; }
+ typename tuple_type<A19>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A19>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 20> : tuple_type<A20> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a20) {}
+ typename tuple_type<A20>::reference get() { return m_x; }
+ typename tuple_type<A20>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A20>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 21> : tuple_type<A21> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a21) {}
+ typename tuple_type<A21>::reference get() { return m_x; }
+ typename tuple_type<A21>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A21>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 22> : tuple_type<A22> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a22) {}
+ typename tuple_type<A22>::reference get() { return m_x; }
+ typename tuple_type<A22>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A22>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 23> : tuple_type<A23> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a23) {}
+ typename tuple_type<A23>::reference get() { return m_x; }
+ typename tuple_type<A23>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A23>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 24> : tuple_type<A24> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a24) {}
+ typename tuple_type<A24>::reference get() { return m_x; }
+ typename tuple_type<A24>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A24>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 25> : tuple_type<A25> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a25) {}
+ typename tuple_type<A25>::reference get() { return m_x; }
+ typename tuple_type<A25>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A25>::reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 1> : tuple_type<A1> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::reference get() { return m_x; }
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 2> : tuple_type<A2> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::reference get() { return m_x; }
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 3> : tuple_type<A3> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::reference get() { return m_x; }
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 4> : tuple_type<A4> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::reference get() { return m_x; }
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 5> : tuple_type<A5> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::reference get() { return m_x; }
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 6> : tuple_type<A6> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::reference get() { return m_x; }
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 7> : tuple_type<A7> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::reference get() { return m_x; }
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 8> : tuple_type<A8> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::reference get() { return m_x; }
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 9> : tuple_type<A9> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::reference get() { return m_x; }
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 10> : tuple_type<A10> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::reference get() { return m_x; }
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 11> : tuple_type<A11> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::reference get() { return m_x; }
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 12> : tuple_type<A12> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::reference get() { return m_x; }
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 13> : tuple_type<A13> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::reference get() { return m_x; }
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 14> : tuple_type<A14> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::reference get() { return m_x; }
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 15> : tuple_type<A15> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::reference get() { return m_x; }
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 16> : tuple_type<A16> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::reference get() { return m_x; }
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 17> : tuple_type<A17> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a17) {}
+ typename tuple_type<A17>::reference get() { return m_x; }
+ typename tuple_type<A17>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A17>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 18> : tuple_type<A18> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a18) {}
+ typename tuple_type<A18>::reference get() { return m_x; }
+ typename tuple_type<A18>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A18>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 19> : tuple_type<A19> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a19) {}
+ typename tuple_type<A19>::reference get() { return m_x; }
+ typename tuple_type<A19>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A19>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 20> : tuple_type<A20> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a20) {}
+ typename tuple_type<A20>::reference get() { return m_x; }
+ typename tuple_type<A20>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A20>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 21> : tuple_type<A21> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a21) {}
+ typename tuple_type<A21>::reference get() { return m_x; }
+ typename tuple_type<A21>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A21>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 22> : tuple_type<A22> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a22) {}
+ typename tuple_type<A22>::reference get() { return m_x; }
+ typename tuple_type<A22>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A22>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 23> : tuple_type<A23> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a23) {}
+ typename tuple_type<A23>::reference get() { return m_x; }
+ typename tuple_type<A23>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A23>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 24> : tuple_type<A24> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a24) {}
+ typename tuple_type<A24>::reference get() { return m_x; }
+ typename tuple_type<A24>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A24>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 25> : tuple_type<A25> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a25) {}
+ typename tuple_type<A25>::reference get() { return m_x; }
+ typename tuple_type<A25>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A25>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 26> : tuple_type<A26> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a26) {}
+ typename tuple_type<A26>::reference get() { return m_x; }
+ typename tuple_type<A26>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A26>::reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 1> : tuple_type<A1> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::reference get() { return m_x; }
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 2> : tuple_type<A2> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::reference get() { return m_x; }
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 3> : tuple_type<A3> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::reference get() { return m_x; }
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 4> : tuple_type<A4> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::reference get() { return m_x; }
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 5> : tuple_type<A5> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::reference get() { return m_x; }
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 6> : tuple_type<A6> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::reference get() { return m_x; }
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 7> : tuple_type<A7> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::reference get() { return m_x; }
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 8> : tuple_type<A8> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::reference get() { return m_x; }
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 9> : tuple_type<A9> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::reference get() { return m_x; }
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 10> : tuple_type<A10> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::reference get() { return m_x; }
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 11> : tuple_type<A11> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::reference get() { return m_x; }
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 12> : tuple_type<A12> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::reference get() { return m_x; }
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 13> : tuple_type<A13> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::reference get() { return m_x; }
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 14> : tuple_type<A14> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::reference get() { return m_x; }
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 15> : tuple_type<A15> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::reference get() { return m_x; }
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 16> : tuple_type<A16> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::reference get() { return m_x; }
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 17> : tuple_type<A17> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a17) {}
+ typename tuple_type<A17>::reference get() { return m_x; }
+ typename tuple_type<A17>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A17>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 18> : tuple_type<A18> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a18) {}
+ typename tuple_type<A18>::reference get() { return m_x; }
+ typename tuple_type<A18>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A18>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 19> : tuple_type<A19> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a19) {}
+ typename tuple_type<A19>::reference get() { return m_x; }
+ typename tuple_type<A19>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A19>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 20> : tuple_type<A20> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a20) {}
+ typename tuple_type<A20>::reference get() { return m_x; }
+ typename tuple_type<A20>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A20>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 21> : tuple_type<A21> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a21) {}
+ typename tuple_type<A21>::reference get() { return m_x; }
+ typename tuple_type<A21>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A21>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 22> : tuple_type<A22> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a22) {}
+ typename tuple_type<A22>::reference get() { return m_x; }
+ typename tuple_type<A22>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A22>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 23> : tuple_type<A23> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a23) {}
+ typename tuple_type<A23>::reference get() { return m_x; }
+ typename tuple_type<A23>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A23>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 24> : tuple_type<A24> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a24) {}
+ typename tuple_type<A24>::reference get() { return m_x; }
+ typename tuple_type<A24>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A24>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 25> : tuple_type<A25> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a25) {}
+ typename tuple_type<A25>::reference get() { return m_x; }
+ typename tuple_type<A25>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A25>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 26> : tuple_type<A26> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a26) {}
+ typename tuple_type<A26>::reference get() { return m_x; }
+ typename tuple_type<A26>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A26>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 27> : tuple_type<A27> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a27) {}
+ typename tuple_type<A27>::reference get() { return m_x; }
+ typename tuple_type<A27>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A27>::reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 1> : tuple_type<A1> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::reference get() { return m_x; }
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 2> : tuple_type<A2> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::reference get() { return m_x; }
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 3> : tuple_type<A3> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::reference get() { return m_x; }
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 4> : tuple_type<A4> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::reference get() { return m_x; }
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 5> : tuple_type<A5> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::reference get() { return m_x; }
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 6> : tuple_type<A6> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::reference get() { return m_x; }
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 7> : tuple_type<A7> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::reference get() { return m_x; }
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 8> : tuple_type<A8> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::reference get() { return m_x; }
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 9> : tuple_type<A9> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::reference get() { return m_x; }
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 10> : tuple_type<A10> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::reference get() { return m_x; }
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 11> : tuple_type<A11> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::reference get() { return m_x; }
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 12> : tuple_type<A12> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::reference get() { return m_x; }
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 13> : tuple_type<A13> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::reference get() { return m_x; }
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 14> : tuple_type<A14> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::reference get() { return m_x; }
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 15> : tuple_type<A15> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::reference get() { return m_x; }
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 16> : tuple_type<A16> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::reference get() { return m_x; }
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 17> : tuple_type<A17> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a17) {}
+ typename tuple_type<A17>::reference get() { return m_x; }
+ typename tuple_type<A17>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A17>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 18> : tuple_type<A18> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a18) {}
+ typename tuple_type<A18>::reference get() { return m_x; }
+ typename tuple_type<A18>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A18>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 19> : tuple_type<A19> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a19) {}
+ typename tuple_type<A19>::reference get() { return m_x; }
+ typename tuple_type<A19>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A19>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 20> : tuple_type<A20> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a20) {}
+ typename tuple_type<A20>::reference get() { return m_x; }
+ typename tuple_type<A20>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A20>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 21> : tuple_type<A21> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a21) {}
+ typename tuple_type<A21>::reference get() { return m_x; }
+ typename tuple_type<A21>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A21>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 22> : tuple_type<A22> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a22) {}
+ typename tuple_type<A22>::reference get() { return m_x; }
+ typename tuple_type<A22>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A22>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 23> : tuple_type<A23> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a23) {}
+ typename tuple_type<A23>::reference get() { return m_x; }
+ typename tuple_type<A23>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A23>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 24> : tuple_type<A24> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a24) {}
+ typename tuple_type<A24>::reference get() { return m_x; }
+ typename tuple_type<A24>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A24>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 25> : tuple_type<A25> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a25) {}
+ typename tuple_type<A25>::reference get() { return m_x; }
+ typename tuple_type<A25>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A25>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 26> : tuple_type<A26> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a26) {}
+ typename tuple_type<A26>::reference get() { return m_x; }
+ typename tuple_type<A26>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A26>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 27> : tuple_type<A27> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a27) {}
+ typename tuple_type<A27>::reference get() { return m_x; }
+ typename tuple_type<A27>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A27>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 28> : tuple_type<A28> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a28) {}
+ typename tuple_type<A28>::reference get() { return m_x; }
+ typename tuple_type<A28>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A28>::reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 1> : tuple_type<A1> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::reference get() { return m_x; }
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 2> : tuple_type<A2> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::reference get() { return m_x; }
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 3> : tuple_type<A3> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::reference get() { return m_x; }
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 4> : tuple_type<A4> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::reference get() { return m_x; }
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 5> : tuple_type<A5> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::reference get() { return m_x; }
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 6> : tuple_type<A6> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::reference get() { return m_x; }
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 7> : tuple_type<A7> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::reference get() { return m_x; }
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 8> : tuple_type<A8> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::reference get() { return m_x; }
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 9> : tuple_type<A9> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::reference get() { return m_x; }
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 10> : tuple_type<A10> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::reference get() { return m_x; }
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 11> : tuple_type<A11> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::reference get() { return m_x; }
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 12> : tuple_type<A12> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::reference get() { return m_x; }
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 13> : tuple_type<A13> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::reference get() { return m_x; }
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 14> : tuple_type<A14> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::reference get() { return m_x; }
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 15> : tuple_type<A15> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::reference get() { return m_x; }
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 16> : tuple_type<A16> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::reference get() { return m_x; }
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 17> : tuple_type<A17> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a17) {}
+ typename tuple_type<A17>::reference get() { return m_x; }
+ typename tuple_type<A17>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A17>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 18> : tuple_type<A18> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a18) {}
+ typename tuple_type<A18>::reference get() { return m_x; }
+ typename tuple_type<A18>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A18>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 19> : tuple_type<A19> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a19) {}
+ typename tuple_type<A19>::reference get() { return m_x; }
+ typename tuple_type<A19>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A19>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 20> : tuple_type<A20> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a20) {}
+ typename tuple_type<A20>::reference get() { return m_x; }
+ typename tuple_type<A20>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A20>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 21> : tuple_type<A21> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a21) {}
+ typename tuple_type<A21>::reference get() { return m_x; }
+ typename tuple_type<A21>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A21>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 22> : tuple_type<A22> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a22) {}
+ typename tuple_type<A22>::reference get() { return m_x; }
+ typename tuple_type<A22>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A22>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 23> : tuple_type<A23> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a23) {}
+ typename tuple_type<A23>::reference get() { return m_x; }
+ typename tuple_type<A23>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A23>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 24> : tuple_type<A24> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a24) {}
+ typename tuple_type<A24>::reference get() { return m_x; }
+ typename tuple_type<A24>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A24>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 25> : tuple_type<A25> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a25) {}
+ typename tuple_type<A25>::reference get() { return m_x; }
+ typename tuple_type<A25>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A25>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 26> : tuple_type<A26> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a26) {}
+ typename tuple_type<A26>::reference get() { return m_x; }
+ typename tuple_type<A26>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A26>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 27> : tuple_type<A27> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a27) {}
+ typename tuple_type<A27>::reference get() { return m_x; }
+ typename tuple_type<A27>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A27>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 28> : tuple_type<A28> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a28) {}
+ typename tuple_type<A28>::reference get() { return m_x; }
+ typename tuple_type<A28>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A28>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 29> : tuple_type<A29> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a29) {}
+ typename tuple_type<A29>::reference get() { return m_x; }
+ typename tuple_type<A29>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A29>::reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 1> : tuple_type<A1> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::reference get() { return m_x; }
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 2> : tuple_type<A2> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::reference get() { return m_x; }
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 3> : tuple_type<A3> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::reference get() { return m_x; }
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 4> : tuple_type<A4> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::reference get() { return m_x; }
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 5> : tuple_type<A5> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::reference get() { return m_x; }
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 6> : tuple_type<A6> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::reference get() { return m_x; }
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 7> : tuple_type<A7> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::reference get() { return m_x; }
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 8> : tuple_type<A8> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::reference get() { return m_x; }
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 9> : tuple_type<A9> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::reference get() { return m_x; }
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 10> : tuple_type<A10> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::reference get() { return m_x; }
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 11> : tuple_type<A11> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::reference get() { return m_x; }
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 12> : tuple_type<A12> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::reference get() { return m_x; }
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 13> : tuple_type<A13> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::reference get() { return m_x; }
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 14> : tuple_type<A14> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::reference get() { return m_x; }
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 15> : tuple_type<A15> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::reference get() { return m_x; }
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 16> : tuple_type<A16> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::reference get() { return m_x; }
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 17> : tuple_type<A17> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a17) {}
+ typename tuple_type<A17>::reference get() { return m_x; }
+ typename tuple_type<A17>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A17>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 18> : tuple_type<A18> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a18) {}
+ typename tuple_type<A18>::reference get() { return m_x; }
+ typename tuple_type<A18>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A18>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 19> : tuple_type<A19> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a19) {}
+ typename tuple_type<A19>::reference get() { return m_x; }
+ typename tuple_type<A19>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A19>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 20> : tuple_type<A20> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a20) {}
+ typename tuple_type<A20>::reference get() { return m_x; }
+ typename tuple_type<A20>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A20>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 21> : tuple_type<A21> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a21) {}
+ typename tuple_type<A21>::reference get() { return m_x; }
+ typename tuple_type<A21>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A21>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 22> : tuple_type<A22> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a22) {}
+ typename tuple_type<A22>::reference get() { return m_x; }
+ typename tuple_type<A22>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A22>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 23> : tuple_type<A23> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a23) {}
+ typename tuple_type<A23>::reference get() { return m_x; }
+ typename tuple_type<A23>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A23>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 24> : tuple_type<A24> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a24) {}
+ typename tuple_type<A24>::reference get() { return m_x; }
+ typename tuple_type<A24>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A24>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 25> : tuple_type<A25> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a25) {}
+ typename tuple_type<A25>::reference get() { return m_x; }
+ typename tuple_type<A25>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A25>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 26> : tuple_type<A26> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a26) {}
+ typename tuple_type<A26>::reference get() { return m_x; }
+ typename tuple_type<A26>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A26>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 27> : tuple_type<A27> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a27) {}
+ typename tuple_type<A27>::reference get() { return m_x; }
+ typename tuple_type<A27>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A27>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 28> : tuple_type<A28> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a28) {}
+ typename tuple_type<A28>::reference get() { return m_x; }
+ typename tuple_type<A28>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A28>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 29> : tuple_type<A29> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a29) {}
+ typename tuple_type<A29>::reference get() { return m_x; }
+ typename tuple_type<A29>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A29>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 30> : tuple_type<A30> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a30) {}
+ typename tuple_type<A30>::reference get() { return m_x; }
+ typename tuple_type<A30>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A30>::reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 0> : tuple_type<A0> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::reference get() { return m_x; }
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 1> : tuple_type<A1> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::reference get() { return m_x; }
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 2> : tuple_type<A2> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::reference get() { return m_x; }
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 3> : tuple_type<A3> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::reference get() { return m_x; }
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 4> : tuple_type<A4> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::reference get() { return m_x; }
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 5> : tuple_type<A5> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::reference get() { return m_x; }
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 6> : tuple_type<A6> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::reference get() { return m_x; }
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 7> : tuple_type<A7> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::reference get() { return m_x; }
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 8> : tuple_type<A8> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::reference get() { return m_x; }
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 9> : tuple_type<A9> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::reference get() { return m_x; }
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 10> : tuple_type<A10> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::reference get() { return m_x; }
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 11> : tuple_type<A11> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::reference get() { return m_x; }
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 12> : tuple_type<A12> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::reference get() { return m_x; }
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 13> : tuple_type<A13> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::reference get() { return m_x; }
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 14> : tuple_type<A14> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::reference get() { return m_x; }
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 15> : tuple_type<A15> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::reference get() { return m_x; }
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 16> : tuple_type<A16> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::reference get() { return m_x; }
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 17> : tuple_type<A17> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a17) {}
+ typename tuple_type<A17>::reference get() { return m_x; }
+ typename tuple_type<A17>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A17>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 18> : tuple_type<A18> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a18) {}
+ typename tuple_type<A18>::reference get() { return m_x; }
+ typename tuple_type<A18>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A18>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 19> : tuple_type<A19> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a19) {}
+ typename tuple_type<A19>::reference get() { return m_x; }
+ typename tuple_type<A19>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A19>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 20> : tuple_type<A20> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a20) {}
+ typename tuple_type<A20>::reference get() { return m_x; }
+ typename tuple_type<A20>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A20>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 21> : tuple_type<A21> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a21) {}
+ typename tuple_type<A21>::reference get() { return m_x; }
+ typename tuple_type<A21>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A21>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 22> : tuple_type<A22> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a22) {}
+ typename tuple_type<A22>::reference get() { return m_x; }
+ typename tuple_type<A22>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A22>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 23> : tuple_type<A23> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a23) {}
+ typename tuple_type<A23>::reference get() { return m_x; }
+ typename tuple_type<A23>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A23>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 24> : tuple_type<A24> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a24) {}
+ typename tuple_type<A24>::reference get() { return m_x; }
+ typename tuple_type<A24>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A24>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 25> : tuple_type<A25> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a25) {}
+ typename tuple_type<A25>::reference get() { return m_x; }
+ typename tuple_type<A25>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A25>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 26> : tuple_type<A26> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a26) {}
+ typename tuple_type<A26>::reference get() { return m_x; }
+ typename tuple_type<A26>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A26>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 27> : tuple_type<A27> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a27) {}
+ typename tuple_type<A27>::reference get() { return m_x; }
+ typename tuple_type<A27>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A27>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 28> : tuple_type<A28> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a28) {}
+ typename tuple_type<A28>::reference get() { return m_x; }
+ typename tuple_type<A28>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A28>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 29> : tuple_type<A29> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a29) {}
+ typename tuple_type<A29>::reference get() { return m_x; }
+ typename tuple_type<A29>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A29>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 30> : tuple_type<A30> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a30) {}
+ typename tuple_type<A30>::reference get() { return m_x; }
+ typename tuple_type<A30>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A30>::reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 31> : tuple_type<A31> {
+ tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 >& x) : m_x(x.a31) {}
+ typename tuple_type<A31>::reference get() { return m_x; }
+ typename tuple_type<A31>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A31>::reference m_x;
+};
+
+
+
+
+
+template <typename A0>
+struct const_tuple_element<tuple<A0>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+
+
+template <typename A0, typename A1>
+struct const_tuple_element<tuple<A0, A1>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0, A1>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+template <typename A0, typename A1>
+struct const_tuple_element<tuple<A0, A1>, 1> : tuple_type<A1> {
+ const_tuple_element(const tuple<A0, A1>& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::const_reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2>
+struct const_tuple_element<tuple<A0, A1, A2>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0, A1, A2>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2>
+struct const_tuple_element<tuple<A0, A1, A2>, 1> : tuple_type<A1> {
+ const_tuple_element(const tuple<A0, A1, A2>& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2>
+struct const_tuple_element<tuple<A0, A1, A2>, 2> : tuple_type<A2> {
+ const_tuple_element(const tuple<A0, A1, A2>& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::const_reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3>
+struct const_tuple_element<tuple<A0, A1, A2, A3>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0, A1, A2, A3>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3>
+struct const_tuple_element<tuple<A0, A1, A2, A3>, 1> : tuple_type<A1> {
+ const_tuple_element(const tuple<A0, A1, A2, A3>& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3>
+struct const_tuple_element<tuple<A0, A1, A2, A3>, 2> : tuple_type<A2> {
+ const_tuple_element(const tuple<A0, A1, A2, A3>& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3>
+struct const_tuple_element<tuple<A0, A1, A2, A3>, 3> : tuple_type<A3> {
+ const_tuple_element(const tuple<A0, A1, A2, A3>& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::const_reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4>, 1> : tuple_type<A1> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4>& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4>, 2> : tuple_type<A2> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4>& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4>, 3> : tuple_type<A3> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4>& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4>, 4> : tuple_type<A4> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4>& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::const_reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 1> : tuple_type<A1> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5>& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 2> : tuple_type<A2> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5>& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 3> : tuple_type<A3> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5>& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 4> : tuple_type<A4> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5>& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 5> : tuple_type<A5> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5>& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::const_reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 1> : tuple_type<A1> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6>& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 2> : tuple_type<A2> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6>& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 3> : tuple_type<A3> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6>& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 4> : tuple_type<A4> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6>& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 5> : tuple_type<A5> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6>& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 6> : tuple_type<A6> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6>& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::const_reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 1> : tuple_type<A1> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7>& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 2> : tuple_type<A2> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7>& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 3> : tuple_type<A3> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7>& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 4> : tuple_type<A4> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7>& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 5> : tuple_type<A5> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7>& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 6> : tuple_type<A6> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7>& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 7> : tuple_type<A7> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7>& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::const_reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 1> : tuple_type<A1> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 2> : tuple_type<A2> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 3> : tuple_type<A3> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 4> : tuple_type<A4> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 5> : tuple_type<A5> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 6> : tuple_type<A6> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 7> : tuple_type<A7> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 8> : tuple_type<A8> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::const_reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 1> : tuple_type<A1> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 2> : tuple_type<A2> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 3> : tuple_type<A3> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 4> : tuple_type<A4> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 5> : tuple_type<A5> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 6> : tuple_type<A6> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 7> : tuple_type<A7> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 8> : tuple_type<A8> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 9> : tuple_type<A9> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::const_reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 1> : tuple_type<A1> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 2> : tuple_type<A2> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 3> : tuple_type<A3> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 4> : tuple_type<A4> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 5> : tuple_type<A5> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 6> : tuple_type<A6> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 7> : tuple_type<A7> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 8> : tuple_type<A8> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 9> : tuple_type<A9> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 10> : tuple_type<A10> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::const_reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 1> : tuple_type<A1> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 2> : tuple_type<A2> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 3> : tuple_type<A3> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 4> : tuple_type<A4> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 5> : tuple_type<A5> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 6> : tuple_type<A6> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 7> : tuple_type<A7> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 8> : tuple_type<A8> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 9> : tuple_type<A9> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 10> : tuple_type<A10> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 11> : tuple_type<A11> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::const_reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 1> : tuple_type<A1> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 2> : tuple_type<A2> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 3> : tuple_type<A3> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 4> : tuple_type<A4> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 5> : tuple_type<A5> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 6> : tuple_type<A6> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 7> : tuple_type<A7> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 8> : tuple_type<A8> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 9> : tuple_type<A9> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 10> : tuple_type<A10> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 11> : tuple_type<A11> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 12> : tuple_type<A12> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::const_reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 1> : tuple_type<A1> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 2> : tuple_type<A2> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 3> : tuple_type<A3> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 4> : tuple_type<A4> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 5> : tuple_type<A5> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 6> : tuple_type<A6> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 7> : tuple_type<A7> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 8> : tuple_type<A8> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 9> : tuple_type<A9> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 10> : tuple_type<A10> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 11> : tuple_type<A11> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 12> : tuple_type<A12> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 13> : tuple_type<A13> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::const_reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 1> : tuple_type<A1> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 2> : tuple_type<A2> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 3> : tuple_type<A3> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 4> : tuple_type<A4> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 5> : tuple_type<A5> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 6> : tuple_type<A6> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 7> : tuple_type<A7> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 8> : tuple_type<A8> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 9> : tuple_type<A9> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 10> : tuple_type<A10> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 11> : tuple_type<A11> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 12> : tuple_type<A12> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 13> : tuple_type<A13> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 14> : tuple_type<A14> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::const_reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 1> : tuple_type<A1> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 2> : tuple_type<A2> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 3> : tuple_type<A3> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 4> : tuple_type<A4> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 5> : tuple_type<A5> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 6> : tuple_type<A6> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 7> : tuple_type<A7> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 8> : tuple_type<A8> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 9> : tuple_type<A9> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 10> : tuple_type<A10> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 11> : tuple_type<A11> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 12> : tuple_type<A12> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 13> : tuple_type<A13> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 14> : tuple_type<A14> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 15> : tuple_type<A15> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::const_reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 1> : tuple_type<A1> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 2> : tuple_type<A2> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 3> : tuple_type<A3> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 4> : tuple_type<A4> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 5> : tuple_type<A5> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 6> : tuple_type<A6> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 7> : tuple_type<A7> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 8> : tuple_type<A8> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 9> : tuple_type<A9> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 10> : tuple_type<A10> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 11> : tuple_type<A11> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 12> : tuple_type<A12> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 13> : tuple_type<A13> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 14> : tuple_type<A14> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 15> : tuple_type<A15> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 16> : tuple_type<A16> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::const_reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 1> : tuple_type<A1> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 2> : tuple_type<A2> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 3> : tuple_type<A3> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 4> : tuple_type<A4> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 5> : tuple_type<A5> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 6> : tuple_type<A6> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 7> : tuple_type<A7> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 8> : tuple_type<A8> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 9> : tuple_type<A9> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 10> : tuple_type<A10> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 11> : tuple_type<A11> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 12> : tuple_type<A12> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 13> : tuple_type<A13> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 14> : tuple_type<A14> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 15> : tuple_type<A15> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 16> : tuple_type<A16> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 17> : tuple_type<A17> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a17) {}
+ typename tuple_type<A17>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A17>::const_reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 1> : tuple_type<A1> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 2> : tuple_type<A2> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 3> : tuple_type<A3> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 4> : tuple_type<A4> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 5> : tuple_type<A5> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 6> : tuple_type<A6> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 7> : tuple_type<A7> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 8> : tuple_type<A8> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 9> : tuple_type<A9> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 10> : tuple_type<A10> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 11> : tuple_type<A11> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 12> : tuple_type<A12> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 13> : tuple_type<A13> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 14> : tuple_type<A14> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 15> : tuple_type<A15> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 16> : tuple_type<A16> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 17> : tuple_type<A17> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a17) {}
+ typename tuple_type<A17>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A17>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 18> : tuple_type<A18> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a18) {}
+ typename tuple_type<A18>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A18>::const_reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 1> : tuple_type<A1> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 2> : tuple_type<A2> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 3> : tuple_type<A3> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 4> : tuple_type<A4> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 5> : tuple_type<A5> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 6> : tuple_type<A6> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 7> : tuple_type<A7> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 8> : tuple_type<A8> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 9> : tuple_type<A9> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 10> : tuple_type<A10> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 11> : tuple_type<A11> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 12> : tuple_type<A12> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 13> : tuple_type<A13> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 14> : tuple_type<A14> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 15> : tuple_type<A15> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 16> : tuple_type<A16> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 17> : tuple_type<A17> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a17) {}
+ typename tuple_type<A17>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A17>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 18> : tuple_type<A18> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a18) {}
+ typename tuple_type<A18>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A18>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 19> : tuple_type<A19> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a19) {}
+ typename tuple_type<A19>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A19>::const_reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 1> : tuple_type<A1> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 2> : tuple_type<A2> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 3> : tuple_type<A3> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 4> : tuple_type<A4> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 5> : tuple_type<A5> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 6> : tuple_type<A6> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 7> : tuple_type<A7> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 8> : tuple_type<A8> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 9> : tuple_type<A9> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 10> : tuple_type<A10> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 11> : tuple_type<A11> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 12> : tuple_type<A12> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 13> : tuple_type<A13> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 14> : tuple_type<A14> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 15> : tuple_type<A15> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 16> : tuple_type<A16> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 17> : tuple_type<A17> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a17) {}
+ typename tuple_type<A17>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A17>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 18> : tuple_type<A18> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a18) {}
+ typename tuple_type<A18>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A18>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 19> : tuple_type<A19> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a19) {}
+ typename tuple_type<A19>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A19>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 20> : tuple_type<A20> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a20) {}
+ typename tuple_type<A20>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A20>::const_reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 1> : tuple_type<A1> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 2> : tuple_type<A2> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 3> : tuple_type<A3> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 4> : tuple_type<A4> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 5> : tuple_type<A5> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 6> : tuple_type<A6> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 7> : tuple_type<A7> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 8> : tuple_type<A8> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 9> : tuple_type<A9> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 10> : tuple_type<A10> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 11> : tuple_type<A11> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 12> : tuple_type<A12> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 13> : tuple_type<A13> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 14> : tuple_type<A14> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 15> : tuple_type<A15> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 16> : tuple_type<A16> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 17> : tuple_type<A17> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a17) {}
+ typename tuple_type<A17>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A17>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 18> : tuple_type<A18> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a18) {}
+ typename tuple_type<A18>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A18>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 19> : tuple_type<A19> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a19) {}
+ typename tuple_type<A19>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A19>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 20> : tuple_type<A20> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a20) {}
+ typename tuple_type<A20>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A20>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 21> : tuple_type<A21> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a21) {}
+ typename tuple_type<A21>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A21>::const_reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 1> : tuple_type<A1> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 2> : tuple_type<A2> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 3> : tuple_type<A3> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 4> : tuple_type<A4> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 5> : tuple_type<A5> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 6> : tuple_type<A6> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 7> : tuple_type<A7> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 8> : tuple_type<A8> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 9> : tuple_type<A9> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 10> : tuple_type<A10> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 11> : tuple_type<A11> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 12> : tuple_type<A12> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 13> : tuple_type<A13> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 14> : tuple_type<A14> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 15> : tuple_type<A15> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 16> : tuple_type<A16> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 17> : tuple_type<A17> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a17) {}
+ typename tuple_type<A17>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A17>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 18> : tuple_type<A18> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a18) {}
+ typename tuple_type<A18>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A18>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 19> : tuple_type<A19> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a19) {}
+ typename tuple_type<A19>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A19>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 20> : tuple_type<A20> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a20) {}
+ typename tuple_type<A20>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A20>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 21> : tuple_type<A21> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a21) {}
+ typename tuple_type<A21>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A21>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 22> : tuple_type<A22> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a22) {}
+ typename tuple_type<A22>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A22>::const_reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 1> : tuple_type<A1> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 2> : tuple_type<A2> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 3> : tuple_type<A3> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 4> : tuple_type<A4> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 5> : tuple_type<A5> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 6> : tuple_type<A6> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 7> : tuple_type<A7> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 8> : tuple_type<A8> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 9> : tuple_type<A9> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 10> : tuple_type<A10> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 11> : tuple_type<A11> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 12> : tuple_type<A12> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 13> : tuple_type<A13> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 14> : tuple_type<A14> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 15> : tuple_type<A15> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 16> : tuple_type<A16> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 17> : tuple_type<A17> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a17) {}
+ typename tuple_type<A17>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A17>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 18> : tuple_type<A18> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a18) {}
+ typename tuple_type<A18>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A18>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 19> : tuple_type<A19> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a19) {}
+ typename tuple_type<A19>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A19>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 20> : tuple_type<A20> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a20) {}
+ typename tuple_type<A20>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A20>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 21> : tuple_type<A21> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a21) {}
+ typename tuple_type<A21>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A21>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 22> : tuple_type<A22> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a22) {}
+ typename tuple_type<A22>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A22>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 23> : tuple_type<A23> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a23) {}
+ typename tuple_type<A23>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A23>::const_reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 1> : tuple_type<A1> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 2> : tuple_type<A2> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 3> : tuple_type<A3> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 4> : tuple_type<A4> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 5> : tuple_type<A5> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 6> : tuple_type<A6> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 7> : tuple_type<A7> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 8> : tuple_type<A8> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 9> : tuple_type<A9> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 10> : tuple_type<A10> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 11> : tuple_type<A11> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 12> : tuple_type<A12> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 13> : tuple_type<A13> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 14> : tuple_type<A14> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 15> : tuple_type<A15> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 16> : tuple_type<A16> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 17> : tuple_type<A17> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a17) {}
+ typename tuple_type<A17>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A17>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 18> : tuple_type<A18> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a18) {}
+ typename tuple_type<A18>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A18>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 19> : tuple_type<A19> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a19) {}
+ typename tuple_type<A19>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A19>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 20> : tuple_type<A20> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a20) {}
+ typename tuple_type<A20>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A20>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 21> : tuple_type<A21> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a21) {}
+ typename tuple_type<A21>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A21>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 22> : tuple_type<A22> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a22) {}
+ typename tuple_type<A22>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A22>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 23> : tuple_type<A23> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a23) {}
+ typename tuple_type<A23>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A23>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 24> : tuple_type<A24> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a24) {}
+ typename tuple_type<A24>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A24>::const_reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 1> : tuple_type<A1> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 2> : tuple_type<A2> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 3> : tuple_type<A3> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 4> : tuple_type<A4> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 5> : tuple_type<A5> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 6> : tuple_type<A6> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 7> : tuple_type<A7> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 8> : tuple_type<A8> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 9> : tuple_type<A9> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 10> : tuple_type<A10> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 11> : tuple_type<A11> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 12> : tuple_type<A12> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 13> : tuple_type<A13> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 14> : tuple_type<A14> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 15> : tuple_type<A15> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 16> : tuple_type<A16> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 17> : tuple_type<A17> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a17) {}
+ typename tuple_type<A17>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A17>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 18> : tuple_type<A18> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a18) {}
+ typename tuple_type<A18>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A18>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 19> : tuple_type<A19> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a19) {}
+ typename tuple_type<A19>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A19>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 20> : tuple_type<A20> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a20) {}
+ typename tuple_type<A20>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A20>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 21> : tuple_type<A21> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a21) {}
+ typename tuple_type<A21>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A21>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 22> : tuple_type<A22> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a22) {}
+ typename tuple_type<A22>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A22>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 23> : tuple_type<A23> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a23) {}
+ typename tuple_type<A23>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A23>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 24> : tuple_type<A24> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a24) {}
+ typename tuple_type<A24>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A24>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 25> : tuple_type<A25> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a25) {}
+ typename tuple_type<A25>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A25>::const_reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 1> : tuple_type<A1> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 2> : tuple_type<A2> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 3> : tuple_type<A3> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 4> : tuple_type<A4> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 5> : tuple_type<A5> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 6> : tuple_type<A6> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 7> : tuple_type<A7> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 8> : tuple_type<A8> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 9> : tuple_type<A9> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 10> : tuple_type<A10> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 11> : tuple_type<A11> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 12> : tuple_type<A12> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 13> : tuple_type<A13> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 14> : tuple_type<A14> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 15> : tuple_type<A15> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 16> : tuple_type<A16> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 17> : tuple_type<A17> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a17) {}
+ typename tuple_type<A17>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A17>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 18> : tuple_type<A18> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a18) {}
+ typename tuple_type<A18>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A18>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 19> : tuple_type<A19> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a19) {}
+ typename tuple_type<A19>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A19>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 20> : tuple_type<A20> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a20) {}
+ typename tuple_type<A20>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A20>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 21> : tuple_type<A21> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a21) {}
+ typename tuple_type<A21>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A21>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 22> : tuple_type<A22> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a22) {}
+ typename tuple_type<A22>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A22>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 23> : tuple_type<A23> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a23) {}
+ typename tuple_type<A23>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A23>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 24> : tuple_type<A24> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a24) {}
+ typename tuple_type<A24>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A24>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 25> : tuple_type<A25> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a25) {}
+ typename tuple_type<A25>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A25>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 26> : tuple_type<A26> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a26) {}
+ typename tuple_type<A26>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A26>::const_reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 1> : tuple_type<A1> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 2> : tuple_type<A2> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 3> : tuple_type<A3> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 4> : tuple_type<A4> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 5> : tuple_type<A5> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 6> : tuple_type<A6> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 7> : tuple_type<A7> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 8> : tuple_type<A8> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 9> : tuple_type<A9> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 10> : tuple_type<A10> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 11> : tuple_type<A11> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 12> : tuple_type<A12> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 13> : tuple_type<A13> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 14> : tuple_type<A14> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 15> : tuple_type<A15> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 16> : tuple_type<A16> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 17> : tuple_type<A17> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a17) {}
+ typename tuple_type<A17>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A17>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 18> : tuple_type<A18> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a18) {}
+ typename tuple_type<A18>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A18>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 19> : tuple_type<A19> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a19) {}
+ typename tuple_type<A19>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A19>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 20> : tuple_type<A20> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a20) {}
+ typename tuple_type<A20>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A20>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 21> : tuple_type<A21> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a21) {}
+ typename tuple_type<A21>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A21>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 22> : tuple_type<A22> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a22) {}
+ typename tuple_type<A22>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A22>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 23> : tuple_type<A23> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a23) {}
+ typename tuple_type<A23>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A23>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 24> : tuple_type<A24> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a24) {}
+ typename tuple_type<A24>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A24>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 25> : tuple_type<A25> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a25) {}
+ typename tuple_type<A25>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A25>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 26> : tuple_type<A26> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a26) {}
+ typename tuple_type<A26>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A26>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 27> : tuple_type<A27> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a27) {}
+ typename tuple_type<A27>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A27>::const_reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 1> : tuple_type<A1> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 2> : tuple_type<A2> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 3> : tuple_type<A3> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 4> : tuple_type<A4> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 5> : tuple_type<A5> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 6> : tuple_type<A6> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 7> : tuple_type<A7> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 8> : tuple_type<A8> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 9> : tuple_type<A9> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 10> : tuple_type<A10> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 11> : tuple_type<A11> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 12> : tuple_type<A12> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 13> : tuple_type<A13> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 14> : tuple_type<A14> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 15> : tuple_type<A15> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 16> : tuple_type<A16> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 17> : tuple_type<A17> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a17) {}
+ typename tuple_type<A17>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A17>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 18> : tuple_type<A18> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a18) {}
+ typename tuple_type<A18>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A18>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 19> : tuple_type<A19> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a19) {}
+ typename tuple_type<A19>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A19>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 20> : tuple_type<A20> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a20) {}
+ typename tuple_type<A20>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A20>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 21> : tuple_type<A21> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a21) {}
+ typename tuple_type<A21>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A21>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 22> : tuple_type<A22> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a22) {}
+ typename tuple_type<A22>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A22>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 23> : tuple_type<A23> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a23) {}
+ typename tuple_type<A23>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A23>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 24> : tuple_type<A24> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a24) {}
+ typename tuple_type<A24>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A24>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 25> : tuple_type<A25> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a25) {}
+ typename tuple_type<A25>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A25>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 26> : tuple_type<A26> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a26) {}
+ typename tuple_type<A26>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A26>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 27> : tuple_type<A27> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a27) {}
+ typename tuple_type<A27>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A27>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 28> : tuple_type<A28> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a28) {}
+ typename tuple_type<A28>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A28>::const_reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 1> : tuple_type<A1> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 2> : tuple_type<A2> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 3> : tuple_type<A3> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 4> : tuple_type<A4> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 5> : tuple_type<A5> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 6> : tuple_type<A6> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 7> : tuple_type<A7> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 8> : tuple_type<A8> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 9> : tuple_type<A9> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 10> : tuple_type<A10> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 11> : tuple_type<A11> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 12> : tuple_type<A12> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 13> : tuple_type<A13> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 14> : tuple_type<A14> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 15> : tuple_type<A15> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 16> : tuple_type<A16> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 17> : tuple_type<A17> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a17) {}
+ typename tuple_type<A17>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A17>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 18> : tuple_type<A18> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a18) {}
+ typename tuple_type<A18>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A18>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 19> : tuple_type<A19> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a19) {}
+ typename tuple_type<A19>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A19>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 20> : tuple_type<A20> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a20) {}
+ typename tuple_type<A20>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A20>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 21> : tuple_type<A21> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a21) {}
+ typename tuple_type<A21>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A21>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 22> : tuple_type<A22> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a22) {}
+ typename tuple_type<A22>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A22>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 23> : tuple_type<A23> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a23) {}
+ typename tuple_type<A23>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A23>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 24> : tuple_type<A24> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a24) {}
+ typename tuple_type<A24>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A24>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 25> : tuple_type<A25> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a25) {}
+ typename tuple_type<A25>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A25>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 26> : tuple_type<A26> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a26) {}
+ typename tuple_type<A26>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A26>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 27> : tuple_type<A27> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a27) {}
+ typename tuple_type<A27>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A27>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 28> : tuple_type<A28> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a28) {}
+ typename tuple_type<A28>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A28>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 29> : tuple_type<A29> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a29) {}
+ typename tuple_type<A29>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A29>::const_reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 1> : tuple_type<A1> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 2> : tuple_type<A2> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 3> : tuple_type<A3> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 4> : tuple_type<A4> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 5> : tuple_type<A5> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 6> : tuple_type<A6> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 7> : tuple_type<A7> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 8> : tuple_type<A8> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 9> : tuple_type<A9> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 10> : tuple_type<A10> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 11> : tuple_type<A11> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 12> : tuple_type<A12> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 13> : tuple_type<A13> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 14> : tuple_type<A14> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 15> : tuple_type<A15> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 16> : tuple_type<A16> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 17> : tuple_type<A17> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a17) {}
+ typename tuple_type<A17>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A17>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 18> : tuple_type<A18> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a18) {}
+ typename tuple_type<A18>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A18>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 19> : tuple_type<A19> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a19) {}
+ typename tuple_type<A19>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A19>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 20> : tuple_type<A20> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a20) {}
+ typename tuple_type<A20>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A20>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 21> : tuple_type<A21> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a21) {}
+ typename tuple_type<A21>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A21>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 22> : tuple_type<A22> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a22) {}
+ typename tuple_type<A22>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A22>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 23> : tuple_type<A23> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a23) {}
+ typename tuple_type<A23>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A23>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 24> : tuple_type<A24> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a24) {}
+ typename tuple_type<A24>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A24>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 25> : tuple_type<A25> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a25) {}
+ typename tuple_type<A25>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A25>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 26> : tuple_type<A26> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a26) {}
+ typename tuple_type<A26>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A26>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 27> : tuple_type<A27> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a27) {}
+ typename tuple_type<A27>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A27>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 28> : tuple_type<A28> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a28) {}
+ typename tuple_type<A28>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A28>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 29> : tuple_type<A29> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a29) {}
+ typename tuple_type<A29>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A29>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 30> : tuple_type<A30> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a30) {}
+ typename tuple_type<A30>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A30>::const_reference m_x;
+};
+
+
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 0> : tuple_type<A0> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a0) {}
+ typename tuple_type<A0>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A0>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 1> : tuple_type<A1> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a1) {}
+ typename tuple_type<A1>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A1>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 2> : tuple_type<A2> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a2) {}
+ typename tuple_type<A2>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A2>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 3> : tuple_type<A3> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a3) {}
+ typename tuple_type<A3>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A3>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 4> : tuple_type<A4> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a4) {}
+ typename tuple_type<A4>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A4>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 5> : tuple_type<A5> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a5) {}
+ typename tuple_type<A5>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A5>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 6> : tuple_type<A6> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a6) {}
+ typename tuple_type<A6>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A6>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 7> : tuple_type<A7> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a7) {}
+ typename tuple_type<A7>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A7>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 8> : tuple_type<A8> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a8) {}
+ typename tuple_type<A8>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A8>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 9> : tuple_type<A9> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a9) {}
+ typename tuple_type<A9>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A9>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 10> : tuple_type<A10> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a10) {}
+ typename tuple_type<A10>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A10>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 11> : tuple_type<A11> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a11) {}
+ typename tuple_type<A11>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A11>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 12> : tuple_type<A12> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a12) {}
+ typename tuple_type<A12>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A12>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 13> : tuple_type<A13> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a13) {}
+ typename tuple_type<A13>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A13>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 14> : tuple_type<A14> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a14) {}
+ typename tuple_type<A14>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A14>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 15> : tuple_type<A15> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a15) {}
+ typename tuple_type<A15>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A15>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 16> : tuple_type<A16> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a16) {}
+ typename tuple_type<A16>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A16>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 17> : tuple_type<A17> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a17) {}
+ typename tuple_type<A17>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A17>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 18> : tuple_type<A18> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a18) {}
+ typename tuple_type<A18>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A18>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 19> : tuple_type<A19> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a19) {}
+ typename tuple_type<A19>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A19>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 20> : tuple_type<A20> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a20) {}
+ typename tuple_type<A20>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A20>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 21> : tuple_type<A21> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a21) {}
+ typename tuple_type<A21>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A21>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 22> : tuple_type<A22> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a22) {}
+ typename tuple_type<A22>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A22>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 23> : tuple_type<A23> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a23) {}
+ typename tuple_type<A23>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A23>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 24> : tuple_type<A24> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a24) {}
+ typename tuple_type<A24>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A24>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 25> : tuple_type<A25> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a25) {}
+ typename tuple_type<A25>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A25>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 26> : tuple_type<A26> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a26) {}
+ typename tuple_type<A26>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A26>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 27> : tuple_type<A27> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a27) {}
+ typename tuple_type<A27>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A27>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 28> : tuple_type<A28> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a28) {}
+ typename tuple_type<A28>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A28>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 29> : tuple_type<A29> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a29) {}
+ typename tuple_type<A29>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A29>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 30> : tuple_type<A30> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a30) {}
+ typename tuple_type<A30>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A30>::const_reference m_x;
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 31> : tuple_type<A31> {
+ const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& x) : m_x(x.a31) {}
+ typename tuple_type<A31>::const_reference get() const { return m_x; }
+private:
+ typename tuple_type<A31>::const_reference m_x;
+};
+
+
+/// @endcond
+
+template <>
+struct tuple<> {
+ tuple() {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ typedef tuple<> value_type;
+ std::size_t size() const { return 0; }
+};
+
+/// @cond
+
+template <typename A0>
+struct tuple<A0> {
+ typedef tuple<A0> value_type;
+ std::size_t size() const { return 1; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0) :
+ a0(_a0) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+};
+
+template <int N, typename A0>
+inline typename type::tuple_element<type::tuple<A0>, N>::reference get(type::tuple<A0>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0>
+inline typename type::const_tuple_element<type::tuple<A0>, N>::const_reference get(type::tuple<A0> const& t)
+{ return t.template get<N>(); }
+
+template <typename A0, typename A1>
+struct tuple<A0, A1> {
+ typedef tuple<A0, A1> value_type;
+ std::size_t size() const { return 2; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1) :
+ a0(_a0), a1(_a1) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+ A1 a1;
+};
+
+template <int N, typename A0, typename A1>
+inline typename type::tuple_element<type::tuple<A0, A1>, N>::reference get(type::tuple<A0, A1>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0, typename A1>
+inline typename type::const_tuple_element<type::tuple<A0, A1>, N>::const_reference get(type::tuple<A0, A1> const& t)
+{ return t.template get<N>(); }
+
+template <typename A0, typename A1, typename A2>
+struct tuple<A0, A1, A2> {
+ typedef tuple<A0, A1, A2> value_type;
+ std::size_t size() const { return 3; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2) :
+ a0(_a0), a1(_a1), a2(_a2) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+ A1 a1;
+ A2 a2;
+};
+
+template <int N, typename A0, typename A1, typename A2>
+inline typename type::tuple_element<type::tuple<A0, A1, A2>, N>::reference get(type::tuple<A0, A1, A2>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0, typename A1, typename A2>
+inline typename type::const_tuple_element<type::tuple<A0, A1, A2>, N>::const_reference get(type::tuple<A0, A1, A2> const& t)
+{ return t.template get<N>(); }
+
+template <typename A0, typename A1, typename A2, typename A3>
+struct tuple<A0, A1, A2, A3> {
+ typedef tuple<A0, A1, A2, A3> value_type;
+ std::size_t size() const { return 4; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+ A1 a1;
+ A2 a2;
+ A3 a3;
+};
+
+template <int N, typename A0, typename A1, typename A2, typename A3>
+inline typename type::tuple_element<type::tuple<A0, A1, A2, A3>, N>::reference get(type::tuple<A0, A1, A2, A3>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0, typename A1, typename A2, typename A3>
+inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3>, N>::const_reference get(type::tuple<A0, A1, A2, A3> const& t)
+{ return t.template get<N>(); }
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4>
+struct tuple<A0, A1, A2, A3, A4> {
+ typedef tuple<A0, A1, A2, A3, A4> value_type;
+ std::size_t size() const { return 5; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+ A1 a1;
+ A2 a2;
+ A3 a3;
+ A4 a4;
+};
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4>
+inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4>, N>::reference get(type::tuple<A0, A1, A2, A3, A4>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4>
+inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4> const& t)
+{ return t.template get<N>(); }
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
+struct tuple<A0, A1, A2, A3, A4, A5> {
+ typedef tuple<A0, A1, A2, A3, A4, A5> value_type;
+ std::size_t size() const { return 6; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+ A1 a1;
+ A2 a2;
+ A3 a3;
+ A4 a4;
+ A5 a5;
+};
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
+inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
+inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5> const& t)
+{ return t.template get<N>(); }
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+struct tuple<A0, A1, A2, A3, A4, A5, A6> {
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6> value_type;
+ std::size_t size() const { return 7; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+ A1 a1;
+ A2 a2;
+ A3 a3;
+ A4 a4;
+ A5 a5;
+ A6 a6;
+};
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6> const& t)
+{ return t.template get<N>(); }
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+struct tuple<A0, A1, A2, A3, A4, A5, A6, A7> {
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7> value_type;
+ std::size_t size() const { return 8; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+ A1 a1;
+ A2 a2;
+ A3 a3;
+ A4 a4;
+ A5 a5;
+ A6 a6;
+ A7 a7;
+};
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7> const& t)
+{ return t.template get<N>(); }
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8> {
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8> value_type;
+ std::size_t size() const { return 9; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+ A1 a1;
+ A2 a2;
+ A3 a3;
+ A4 a4;
+ A5 a5;
+ A6 a6;
+ A7 a7;
+ A8 a8;
+};
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8> const& t)
+{ return t.template get<N>(); }
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> {
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> value_type;
+ std::size_t size() const { return 10; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+ A1 a1;
+ A2 a2;
+ A3 a3;
+ A4 a4;
+ A5 a5;
+ A6 a6;
+ A7 a7;
+ A8 a8;
+ A9 a9;
+};
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> const& t)
+{ return t.template get<N>(); }
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> {
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> value_type;
+ std::size_t size() const { return 11; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+ A1 a1;
+ A2 a2;
+ A3 a3;
+ A4 a4;
+ A5 a5;
+ A6 a6;
+ A7 a7;
+ A8 a8;
+ A9 a9;
+ A10 a10;
+};
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> const& t)
+{ return t.template get<N>(); }
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> {
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> value_type;
+ std::size_t size() const { return 12; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10, typename tuple_type<A11>::transparent_reference _a11) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+ A1 a1;
+ A2 a2;
+ A3 a3;
+ A4 a4;
+ A5 a5;
+ A6 a6;
+ A7 a7;
+ A8 a8;
+ A9 a9;
+ A10 a10;
+ A11 a11;
+};
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> const& t)
+{ return t.template get<N>(); }
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> {
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> value_type;
+ std::size_t size() const { return 13; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10, typename tuple_type<A11>::transparent_reference _a11, typename tuple_type<A12>::transparent_reference _a12) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+ A1 a1;
+ A2 a2;
+ A3 a3;
+ A4 a4;
+ A5 a5;
+ A6 a6;
+ A7 a7;
+ A8 a8;
+ A9 a9;
+ A10 a10;
+ A11 a11;
+ A12 a12;
+};
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> const& t)
+{ return t.template get<N>(); }
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> {
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> value_type;
+ std::size_t size() const { return 14; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10, typename tuple_type<A11>::transparent_reference _a11, typename tuple_type<A12>::transparent_reference _a12, typename tuple_type<A13>::transparent_reference _a13) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+ A1 a1;
+ A2 a2;
+ A3 a3;
+ A4 a4;
+ A5 a5;
+ A6 a6;
+ A7 a7;
+ A8 a8;
+ A9 a9;
+ A10 a10;
+ A11 a11;
+ A12 a12;
+ A13 a13;
+};
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> const& t)
+{ return t.template get<N>(); }
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> {
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> value_type;
+ std::size_t size() const { return 15; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10, typename tuple_type<A11>::transparent_reference _a11, typename tuple_type<A12>::transparent_reference _a12, typename tuple_type<A13>::transparent_reference _a13, typename tuple_type<A14>::transparent_reference _a14) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+ A1 a1;
+ A2 a2;
+ A3 a3;
+ A4 a4;
+ A5 a5;
+ A6 a6;
+ A7 a7;
+ A8 a8;
+ A9 a9;
+ A10 a10;
+ A11 a11;
+ A12 a12;
+ A13 a13;
+ A14 a14;
+};
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> const& t)
+{ return t.template get<N>(); }
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> {
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> value_type;
+ std::size_t size() const { return 16; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10, typename tuple_type<A11>::transparent_reference _a11, typename tuple_type<A12>::transparent_reference _a12, typename tuple_type<A13>::transparent_reference _a13, typename tuple_type<A14>::transparent_reference _a14, typename tuple_type<A15>::transparent_reference _a15) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+ A1 a1;
+ A2 a2;
+ A3 a3;
+ A4 a4;
+ A5 a5;
+ A6 a6;
+ A7 a7;
+ A8 a8;
+ A9 a9;
+ A10 a10;
+ A11 a11;
+ A12 a12;
+ A13 a13;
+ A14 a14;
+ A15 a15;
+};
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> const& t)
+{ return t.template get<N>(); }
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> {
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> value_type;
+ std::size_t size() const { return 17; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10, typename tuple_type<A11>::transparent_reference _a11, typename tuple_type<A12>::transparent_reference _a12, typename tuple_type<A13>::transparent_reference _a13, typename tuple_type<A14>::transparent_reference _a14, typename tuple_type<A15>::transparent_reference _a15, typename tuple_type<A16>::transparent_reference _a16) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+ A1 a1;
+ A2 a2;
+ A3 a3;
+ A4 a4;
+ A5 a5;
+ A6 a6;
+ A7 a7;
+ A8 a8;
+ A9 a9;
+ A10 a10;
+ A11 a11;
+ A12 a12;
+ A13 a13;
+ A14 a14;
+ A15 a15;
+ A16 a16;
+};
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> const& t)
+{ return t.template get<N>(); }
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> {
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> value_type;
+ std::size_t size() const { return 18; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10, typename tuple_type<A11>::transparent_reference _a11, typename tuple_type<A12>::transparent_reference _a12, typename tuple_type<A13>::transparent_reference _a13, typename tuple_type<A14>::transparent_reference _a14, typename tuple_type<A15>::transparent_reference _a15, typename tuple_type<A16>::transparent_reference _a16, typename tuple_type<A17>::transparent_reference _a17) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+ A1 a1;
+ A2 a2;
+ A3 a3;
+ A4 a4;
+ A5 a5;
+ A6 a6;
+ A7 a7;
+ A8 a8;
+ A9 a9;
+ A10 a10;
+ A11 a11;
+ A12 a12;
+ A13 a13;
+ A14 a14;
+ A15 a15;
+ A16 a16;
+ A17 a17;
+};
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> const& t)
+{ return t.template get<N>(); }
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> {
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> value_type;
+ std::size_t size() const { return 19; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10, typename tuple_type<A11>::transparent_reference _a11, typename tuple_type<A12>::transparent_reference _a12, typename tuple_type<A13>::transparent_reference _a13, typename tuple_type<A14>::transparent_reference _a14, typename tuple_type<A15>::transparent_reference _a15, typename tuple_type<A16>::transparent_reference _a16, typename tuple_type<A17>::transparent_reference _a17, typename tuple_type<A18>::transparent_reference _a18) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+ A1 a1;
+ A2 a2;
+ A3 a3;
+ A4 a4;
+ A5 a5;
+ A6 a6;
+ A7 a7;
+ A8 a8;
+ A9 a9;
+ A10 a10;
+ A11 a11;
+ A12 a12;
+ A13 a13;
+ A14 a14;
+ A15 a15;
+ A16 a16;
+ A17 a17;
+ A18 a18;
+};
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> const& t)
+{ return t.template get<N>(); }
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> {
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> value_type;
+ std::size_t size() const { return 20; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10, typename tuple_type<A11>::transparent_reference _a11, typename tuple_type<A12>::transparent_reference _a12, typename tuple_type<A13>::transparent_reference _a13, typename tuple_type<A14>::transparent_reference _a14, typename tuple_type<A15>::transparent_reference _a15, typename tuple_type<A16>::transparent_reference _a16, typename tuple_type<A17>::transparent_reference _a17, typename tuple_type<A18>::transparent_reference _a18, typename tuple_type<A19>::transparent_reference _a19) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+ A1 a1;
+ A2 a2;
+ A3 a3;
+ A4 a4;
+ A5 a5;
+ A6 a6;
+ A7 a7;
+ A8 a8;
+ A9 a9;
+ A10 a10;
+ A11 a11;
+ A12 a12;
+ A13 a13;
+ A14 a14;
+ A15 a15;
+ A16 a16;
+ A17 a17;
+ A18 a18;
+ A19 a19;
+};
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> const& t)
+{ return t.template get<N>(); }
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20> {
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20> value_type;
+ std::size_t size() const { return 21; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10, typename tuple_type<A11>::transparent_reference _a11, typename tuple_type<A12>::transparent_reference _a12, typename tuple_type<A13>::transparent_reference _a13, typename tuple_type<A14>::transparent_reference _a14, typename tuple_type<A15>::transparent_reference _a15, typename tuple_type<A16>::transparent_reference _a16, typename tuple_type<A17>::transparent_reference _a17, typename tuple_type<A18>::transparent_reference _a18, typename tuple_type<A19>::transparent_reference _a19, typename tuple_type<A20>::transparent_reference _a20) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+ A1 a1;
+ A2 a2;
+ A3 a3;
+ A4 a4;
+ A5 a5;
+ A6 a6;
+ A7 a7;
+ A8 a8;
+ A9 a9;
+ A10 a10;
+ A11 a11;
+ A12 a12;
+ A13 a13;
+ A14 a14;
+ A15 a15;
+ A16 a16;
+ A17 a17;
+ A18 a18;
+ A19 a19;
+ A20 a20;
+};
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20> const& t)
+{ return t.template get<N>(); }
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> {
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> value_type;
+ std::size_t size() const { return 22; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10, typename tuple_type<A11>::transparent_reference _a11, typename tuple_type<A12>::transparent_reference _a12, typename tuple_type<A13>::transparent_reference _a13, typename tuple_type<A14>::transparent_reference _a14, typename tuple_type<A15>::transparent_reference _a15, typename tuple_type<A16>::transparent_reference _a16, typename tuple_type<A17>::transparent_reference _a17, typename tuple_type<A18>::transparent_reference _a18, typename tuple_type<A19>::transparent_reference _a19, typename tuple_type<A20>::transparent_reference _a20, typename tuple_type<A21>::transparent_reference _a21) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+ A1 a1;
+ A2 a2;
+ A3 a3;
+ A4 a4;
+ A5 a5;
+ A6 a6;
+ A7 a7;
+ A8 a8;
+ A9 a9;
+ A10 a10;
+ A11 a11;
+ A12 a12;
+ A13 a13;
+ A14 a14;
+ A15 a15;
+ A16 a16;
+ A17 a17;
+ A18 a18;
+ A19 a19;
+ A20 a20;
+ A21 a21;
+};
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> const& t)
+{ return t.template get<N>(); }
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22> {
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22> value_type;
+ std::size_t size() const { return 23; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10, typename tuple_type<A11>::transparent_reference _a11, typename tuple_type<A12>::transparent_reference _a12, typename tuple_type<A13>::transparent_reference _a13, typename tuple_type<A14>::transparent_reference _a14, typename tuple_type<A15>::transparent_reference _a15, typename tuple_type<A16>::transparent_reference _a16, typename tuple_type<A17>::transparent_reference _a17, typename tuple_type<A18>::transparent_reference _a18, typename tuple_type<A19>::transparent_reference _a19, typename tuple_type<A20>::transparent_reference _a20, typename tuple_type<A21>::transparent_reference _a21, typename tuple_type<A22>::transparent_reference _a22) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+ A1 a1;
+ A2 a2;
+ A3 a3;
+ A4 a4;
+ A5 a5;
+ A6 a6;
+ A7 a7;
+ A8 a8;
+ A9 a9;
+ A10 a10;
+ A11 a11;
+ A12 a12;
+ A13 a13;
+ A14 a14;
+ A15 a15;
+ A16 a16;
+ A17 a17;
+ A18 a18;
+ A19 a19;
+ A20 a20;
+ A21 a21;
+ A22 a22;
+};
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22> const& t)
+{ return t.template get<N>(); }
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23> {
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23> value_type;
+ std::size_t size() const { return 24; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10, typename tuple_type<A11>::transparent_reference _a11, typename tuple_type<A12>::transparent_reference _a12, typename tuple_type<A13>::transparent_reference _a13, typename tuple_type<A14>::transparent_reference _a14, typename tuple_type<A15>::transparent_reference _a15, typename tuple_type<A16>::transparent_reference _a16, typename tuple_type<A17>::transparent_reference _a17, typename tuple_type<A18>::transparent_reference _a18, typename tuple_type<A19>::transparent_reference _a19, typename tuple_type<A20>::transparent_reference _a20, typename tuple_type<A21>::transparent_reference _a21, typename tuple_type<A22>::transparent_reference _a22, typename tuple_type<A23>::transparent_reference _a23) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+ A1 a1;
+ A2 a2;
+ A3 a3;
+ A4 a4;
+ A5 a5;
+ A6 a6;
+ A7 a7;
+ A8 a8;
+ A9 a9;
+ A10 a10;
+ A11 a11;
+ A12 a12;
+ A13 a13;
+ A14 a14;
+ A15 a15;
+ A16 a16;
+ A17 a17;
+ A18 a18;
+ A19 a19;
+ A20 a20;
+ A21 a21;
+ A22 a22;
+ A23 a23;
+};
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23> const& t)
+{ return t.template get<N>(); }
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24> {
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24> value_type;
+ std::size_t size() const { return 25; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10, typename tuple_type<A11>::transparent_reference _a11, typename tuple_type<A12>::transparent_reference _a12, typename tuple_type<A13>::transparent_reference _a13, typename tuple_type<A14>::transparent_reference _a14, typename tuple_type<A15>::transparent_reference _a15, typename tuple_type<A16>::transparent_reference _a16, typename tuple_type<A17>::transparent_reference _a17, typename tuple_type<A18>::transparent_reference _a18, typename tuple_type<A19>::transparent_reference _a19, typename tuple_type<A20>::transparent_reference _a20, typename tuple_type<A21>::transparent_reference _a21, typename tuple_type<A22>::transparent_reference _a22, typename tuple_type<A23>::transparent_reference _a23, typename tuple_type<A24>::transparent_reference _a24) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+ A1 a1;
+ A2 a2;
+ A3 a3;
+ A4 a4;
+ A5 a5;
+ A6 a6;
+ A7 a7;
+ A8 a8;
+ A9 a9;
+ A10 a10;
+ A11 a11;
+ A12 a12;
+ A13 a13;
+ A14 a14;
+ A15 a15;
+ A16 a16;
+ A17 a17;
+ A18 a18;
+ A19 a19;
+ A20 a20;
+ A21 a21;
+ A22 a22;
+ A23 a23;
+ A24 a24;
+};
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24> const& t)
+{ return t.template get<N>(); }
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25> {
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25> value_type;
+ std::size_t size() const { return 26; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10, typename tuple_type<A11>::transparent_reference _a11, typename tuple_type<A12>::transparent_reference _a12, typename tuple_type<A13>::transparent_reference _a13, typename tuple_type<A14>::transparent_reference _a14, typename tuple_type<A15>::transparent_reference _a15, typename tuple_type<A16>::transparent_reference _a16, typename tuple_type<A17>::transparent_reference _a17, typename tuple_type<A18>::transparent_reference _a18, typename tuple_type<A19>::transparent_reference _a19, typename tuple_type<A20>::transparent_reference _a20, typename tuple_type<A21>::transparent_reference _a21, typename tuple_type<A22>::transparent_reference _a22, typename tuple_type<A23>::transparent_reference _a23, typename tuple_type<A24>::transparent_reference _a24, typename tuple_type<A25>::transparent_reference _a25) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+ A1 a1;
+ A2 a2;
+ A3 a3;
+ A4 a4;
+ A5 a5;
+ A6 a6;
+ A7 a7;
+ A8 a8;
+ A9 a9;
+ A10 a10;
+ A11 a11;
+ A12 a12;
+ A13 a13;
+ A14 a14;
+ A15 a15;
+ A16 a16;
+ A17 a17;
+ A18 a18;
+ A19 a19;
+ A20 a20;
+ A21 a21;
+ A22 a22;
+ A23 a23;
+ A24 a24;
+ A25 a25;
+};
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25> const& t)
+{ return t.template get<N>(); }
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26> {
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26> value_type;
+ std::size_t size() const { return 27; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10, typename tuple_type<A11>::transparent_reference _a11, typename tuple_type<A12>::transparent_reference _a12, typename tuple_type<A13>::transparent_reference _a13, typename tuple_type<A14>::transparent_reference _a14, typename tuple_type<A15>::transparent_reference _a15, typename tuple_type<A16>::transparent_reference _a16, typename tuple_type<A17>::transparent_reference _a17, typename tuple_type<A18>::transparent_reference _a18, typename tuple_type<A19>::transparent_reference _a19, typename tuple_type<A20>::transparent_reference _a20, typename tuple_type<A21>::transparent_reference _a21, typename tuple_type<A22>::transparent_reference _a22, typename tuple_type<A23>::transparent_reference _a23, typename tuple_type<A24>::transparent_reference _a24, typename tuple_type<A25>::transparent_reference _a25, typename tuple_type<A26>::transparent_reference _a26) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+ A1 a1;
+ A2 a2;
+ A3 a3;
+ A4 a4;
+ A5 a5;
+ A6 a6;
+ A7 a7;
+ A8 a8;
+ A9 a9;
+ A10 a10;
+ A11 a11;
+ A12 a12;
+ A13 a13;
+ A14 a14;
+ A15 a15;
+ A16 a16;
+ A17 a17;
+ A18 a18;
+ A19 a19;
+ A20 a20;
+ A21 a21;
+ A22 a22;
+ A23 a23;
+ A24 a24;
+ A25 a25;
+ A26 a26;
+};
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26> const& t)
+{ return t.template get<N>(); }
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27> {
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27> value_type;
+ std::size_t size() const { return 28; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10, typename tuple_type<A11>::transparent_reference _a11, typename tuple_type<A12>::transparent_reference _a12, typename tuple_type<A13>::transparent_reference _a13, typename tuple_type<A14>::transparent_reference _a14, typename tuple_type<A15>::transparent_reference _a15, typename tuple_type<A16>::transparent_reference _a16, typename tuple_type<A17>::transparent_reference _a17, typename tuple_type<A18>::transparent_reference _a18, typename tuple_type<A19>::transparent_reference _a19, typename tuple_type<A20>::transparent_reference _a20, typename tuple_type<A21>::transparent_reference _a21, typename tuple_type<A22>::transparent_reference _a22, typename tuple_type<A23>::transparent_reference _a23, typename tuple_type<A24>::transparent_reference _a24, typename tuple_type<A25>::transparent_reference _a25, typename tuple_type<A26>::transparent_reference _a26, typename tuple_type<A27>::transparent_reference _a27) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26), a27(_a27) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+ A1 a1;
+ A2 a2;
+ A3 a3;
+ A4 a4;
+ A5 a5;
+ A6 a6;
+ A7 a7;
+ A8 a8;
+ A9 a9;
+ A10 a10;
+ A11 a11;
+ A12 a12;
+ A13 a13;
+ A14 a14;
+ A15 a15;
+ A16 a16;
+ A17 a17;
+ A18 a18;
+ A19 a19;
+ A20 a20;
+ A21 a21;
+ A22 a22;
+ A23 a23;
+ A24 a24;
+ A25 a25;
+ A26 a26;
+ A27 a27;
+};
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27> const& t)
+{ return t.template get<N>(); }
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28> {
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28> value_type;
+ std::size_t size() const { return 29; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10, typename tuple_type<A11>::transparent_reference _a11, typename tuple_type<A12>::transparent_reference _a12, typename tuple_type<A13>::transparent_reference _a13, typename tuple_type<A14>::transparent_reference _a14, typename tuple_type<A15>::transparent_reference _a15, typename tuple_type<A16>::transparent_reference _a16, typename tuple_type<A17>::transparent_reference _a17, typename tuple_type<A18>::transparent_reference _a18, typename tuple_type<A19>::transparent_reference _a19, typename tuple_type<A20>::transparent_reference _a20, typename tuple_type<A21>::transparent_reference _a21, typename tuple_type<A22>::transparent_reference _a22, typename tuple_type<A23>::transparent_reference _a23, typename tuple_type<A24>::transparent_reference _a24, typename tuple_type<A25>::transparent_reference _a25, typename tuple_type<A26>::transparent_reference _a26, typename tuple_type<A27>::transparent_reference _a27, typename tuple_type<A28>::transparent_reference _a28) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26), a27(_a27), a28(_a28) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+ A1 a1;
+ A2 a2;
+ A3 a3;
+ A4 a4;
+ A5 a5;
+ A6 a6;
+ A7 a7;
+ A8 a8;
+ A9 a9;
+ A10 a10;
+ A11 a11;
+ A12 a12;
+ A13 a13;
+ A14 a14;
+ A15 a15;
+ A16 a16;
+ A17 a17;
+ A18 a18;
+ A19 a19;
+ A20 a20;
+ A21 a21;
+ A22 a22;
+ A23 a23;
+ A24 a24;
+ A25 a25;
+ A26 a26;
+ A27 a27;
+ A28 a28;
+};
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28> const& t)
+{ return t.template get<N>(); }
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29> {
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29> value_type;
+ std::size_t size() const { return 30; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10, typename tuple_type<A11>::transparent_reference _a11, typename tuple_type<A12>::transparent_reference _a12, typename tuple_type<A13>::transparent_reference _a13, typename tuple_type<A14>::transparent_reference _a14, typename tuple_type<A15>::transparent_reference _a15, typename tuple_type<A16>::transparent_reference _a16, typename tuple_type<A17>::transparent_reference _a17, typename tuple_type<A18>::transparent_reference _a18, typename tuple_type<A19>::transparent_reference _a19, typename tuple_type<A20>::transparent_reference _a20, typename tuple_type<A21>::transparent_reference _a21, typename tuple_type<A22>::transparent_reference _a22, typename tuple_type<A23>::transparent_reference _a23, typename tuple_type<A24>::transparent_reference _a24, typename tuple_type<A25>::transparent_reference _a25, typename tuple_type<A26>::transparent_reference _a26, typename tuple_type<A27>::transparent_reference _a27, typename tuple_type<A28>::transparent_reference _a28, typename tuple_type<A29>::transparent_reference _a29) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26), a27(_a27), a28(_a28), a29(_a29) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+ A1 a1;
+ A2 a2;
+ A3 a3;
+ A4 a4;
+ A5 a5;
+ A6 a6;
+ A7 a7;
+ A8 a8;
+ A9 a9;
+ A10 a10;
+ A11 a11;
+ A12 a12;
+ A13 a13;
+ A14 a14;
+ A15 a15;
+ A16 a16;
+ A17 a17;
+ A18 a18;
+ A19 a19;
+ A20 a20;
+ A21 a21;
+ A22 a22;
+ A23 a23;
+ A24 a24;
+ A25 a25;
+ A26 a26;
+ A27 a27;
+ A28 a28;
+ A29 a29;
+};
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29> const& t)
+{ return t.template get<N>(); }
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30> {
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30> value_type;
+ std::size_t size() const { return 31; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10, typename tuple_type<A11>::transparent_reference _a11, typename tuple_type<A12>::transparent_reference _a12, typename tuple_type<A13>::transparent_reference _a13, typename tuple_type<A14>::transparent_reference _a14, typename tuple_type<A15>::transparent_reference _a15, typename tuple_type<A16>::transparent_reference _a16, typename tuple_type<A17>::transparent_reference _a17, typename tuple_type<A18>::transparent_reference _a18, typename tuple_type<A19>::transparent_reference _a19, typename tuple_type<A20>::transparent_reference _a20, typename tuple_type<A21>::transparent_reference _a21, typename tuple_type<A22>::transparent_reference _a22, typename tuple_type<A23>::transparent_reference _a23, typename tuple_type<A24>::transparent_reference _a24, typename tuple_type<A25>::transparent_reference _a25, typename tuple_type<A26>::transparent_reference _a26, typename tuple_type<A27>::transparent_reference _a27, typename tuple_type<A28>::transparent_reference _a28, typename tuple_type<A29>::transparent_reference _a29, typename tuple_type<A30>::transparent_reference _a30) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26), a27(_a27), a28(_a28), a29(_a29), a30(_a30) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+ A1 a1;
+ A2 a2;
+ A3 a3;
+ A4 a4;
+ A5 a5;
+ A6 a6;
+ A7 a7;
+ A8 a8;
+ A9 a9;
+ A10 a10;
+ A11 a11;
+ A12 a12;
+ A13 a13;
+ A14 a14;
+ A15 a15;
+ A16 a16;
+ A17 a17;
+ A18 a18;
+ A19 a19;
+ A20 a20;
+ A21 a21;
+ A22 a22;
+ A23 a23;
+ A24 a24;
+ A25 a25;
+ A26 a26;
+ A27 a27;
+ A28 a28;
+ A29 a29;
+ A30 a30;
+};
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30> const& t)
+{ return t.template get<N>(); }
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31> {
+ typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31> value_type;
+ std::size_t size() const { return 32; }
+ tuple() {}
+ tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10, typename tuple_type<A11>::transparent_reference _a11, typename tuple_type<A12>::transparent_reference _a12, typename tuple_type<A13>::transparent_reference _a13, typename tuple_type<A14>::transparent_reference _a14, typename tuple_type<A15>::transparent_reference _a15, typename tuple_type<A16>::transparent_reference _a16, typename tuple_type<A17>::transparent_reference _a17, typename tuple_type<A18>::transparent_reference _a18, typename tuple_type<A19>::transparent_reference _a19, typename tuple_type<A20>::transparent_reference _a20, typename tuple_type<A21>::transparent_reference _a21, typename tuple_type<A22>::transparent_reference _a22, typename tuple_type<A23>::transparent_reference _a23, typename tuple_type<A24>::transparent_reference _a24, typename tuple_type<A25>::transparent_reference _a25, typename tuple_type<A26>::transparent_reference _a26, typename tuple_type<A27>::transparent_reference _a27, typename tuple_type<A28>::transparent_reference _a28, typename tuple_type<A29>::transparent_reference _a29, typename tuple_type<A30>::transparent_reference _a30, typename tuple_type<A31>::transparent_reference _a31) :
+ a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26), a27(_a27), a28(_a28), a29(_a29), a30(_a30), a31(_a31) {}
+ tuple(msgpack::object const& o) { o.convert(*this); }
+ template <int N> typename tuple_element<value_type, N>::reference get()
+ { return tuple_element<value_type, N>(*this).get(); }
+ template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
+ { return const_tuple_element<value_type, N>(*this).get(); }
+
+ A0 a0;
+ A1 a1;
+ A2 a2;
+ A3 a3;
+ A4 a4;
+ A5 a5;
+ A6 a6;
+ A7 a7;
+ A8 a8;
+ A9 a9;
+ A10 a10;
+ A11 a11;
+ A12 a12;
+ A13 a13;
+ A14 a14;
+ A15 a15;
+ A16 a16;
+ A17 a17;
+ A18 a18;
+ A19 a19;
+ A20 a20;
+ A21 a21;
+ A22 a22;
+ A23 a23;
+ A24 a24;
+ A25 a25;
+ A26 a26;
+ A27 a27;
+ A28 a28;
+ A29 a29;
+ A30 a30;
+ A31 a31;
+};
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& t)
+{ return t.template get<N>(); }
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31> const& t)
+{ return t.template get<N>(); }
+
+/// @endcond
+
+inline tuple<> make_tuple()
+{
+ return tuple<>();
+}
+
+/// @cond
+
+template <typename A0>
+inline tuple<A0> make_tuple(typename tuple_type<A0>::transparent_reference a0)
+{
+ return tuple<A0>(a0);
+}
+
+template <typename A0, typename A1>
+inline tuple<A0, A1> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1)
+{
+ return tuple<A0, A1>(a0, a1);
+}
+
+template <typename A0, typename A1, typename A2>
+inline tuple<A0, A1, A2> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2)
+{
+ return tuple<A0, A1, A2>(a0, a1, a2);
+}
+
+template <typename A0, typename A1, typename A2, typename A3>
+inline tuple<A0, A1, A2, A3> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3)
+{
+ return tuple<A0, A1, A2, A3>(a0, a1, a2, a3);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4>
+inline tuple<A0, A1, A2, A3, A4> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4)
+{
+ return tuple<A0, A1, A2, A3, A4>(a0, a1, a2, a3, a4);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
+inline tuple<A0, A1, A2, A3, A4, A5> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5)
+{
+ return tuple<A0, A1, A2, A3, A4, A5>(a0, a1, a2, a3, a4, a5);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+inline tuple<A0, A1, A2, A3, A4, A5, A6> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6)
+{
+ return tuple<A0, A1, A2, A3, A4, A5, A6>(a0, a1, a2, a3, a4, a5, a6);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+inline tuple<A0, A1, A2, A3, A4, A5, A6, A7> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7)
+{
+ return tuple<A0, A1, A2, A3, A4, A5, A6, A7>(a0, a1, a2, a3, a4, a5, a6, a7);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8)
+{
+ return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>(a0, a1, a2, a3, a4, a5, a6, a7, a8);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9)
+{
+ return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10)
+{
+ return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11)
+{
+ return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12)
+{
+ return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13)
+{
+ return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14)
+{
+ return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15)
+{
+ return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16)
+{
+ return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17)
+{
+ return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18)
+{
+ return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19)
+{
+ return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20)
+{
+ return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21)
+{
+ return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22)
+{
+ return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23)
+{
+ return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23, typename tuple_type<A24>::transparent_reference a24)
+{
+ return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23, typename tuple_type<A24>::transparent_reference a24, typename tuple_type<A25>::transparent_reference a25)
+{
+ return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23, typename tuple_type<A24>::transparent_reference a24, typename tuple_type<A25>::transparent_reference a25, typename tuple_type<A26>::transparent_reference a26)
+{
+ return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23, typename tuple_type<A24>::transparent_reference a24, typename tuple_type<A25>::transparent_reference a25, typename tuple_type<A26>::transparent_reference a26, typename tuple_type<A27>::transparent_reference a27)
+{
+ return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23, typename tuple_type<A24>::transparent_reference a24, typename tuple_type<A25>::transparent_reference a25, typename tuple_type<A26>::transparent_reference a26, typename tuple_type<A27>::transparent_reference a27, typename tuple_type<A28>::transparent_reference a28)
+{
+ return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23, typename tuple_type<A24>::transparent_reference a24, typename tuple_type<A25>::transparent_reference a25, typename tuple_type<A26>::transparent_reference a26, typename tuple_type<A27>::transparent_reference a27, typename tuple_type<A28>::transparent_reference a28, typename tuple_type<A29>::transparent_reference a29)
+{
+ return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23, typename tuple_type<A24>::transparent_reference a24, typename tuple_type<A25>::transparent_reference a25, typename tuple_type<A26>::transparent_reference a26, typename tuple_type<A27>::transparent_reference a27, typename tuple_type<A28>::transparent_reference a28, typename tuple_type<A29>::transparent_reference a29, typename tuple_type<A30>::transparent_reference a30)
+{
+ return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30);
+}
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23, typename tuple_type<A24>::transparent_reference a24, typename tuple_type<A25>::transparent_reference a25, typename tuple_type<A26>::transparent_reference a26, typename tuple_type<A27>::transparent_reference a27, typename tuple_type<A28>::transparent_reference a28, typename tuple_type<A29>::transparent_reference a29, typename tuple_type<A30>::transparent_reference a30, typename tuple_type<A31>::transparent_reference a31)
+{
+ return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31);
+}
+
+/// @endcond
+
+} // namespace type
+
+namespace adaptor {
+
+template <>
+struct convert<type::tuple<> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<>&) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ return o;
+ }
+};
+
+/// @cond
+
+template <typename A0>
+struct convert<type::tuple<A0> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1>
+struct convert<type::tuple<A0, A1> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0, A1>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 1)
+ o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2>
+struct convert<type::tuple<A0, A1, A2> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0, A1, A2>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 1)
+ o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 2)
+ o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3>
+struct convert<type::tuple<A0, A1, A2, A3> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0, A1, A2, A3>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 1)
+ o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 2)
+ o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 3)
+ o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4>
+struct convert<type::tuple<A0, A1, A2, A3, A4> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0, A1, A2, A3, A4>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 1)
+ o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 2)
+ o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 3)
+ o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 4)
+ o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
+struct convert<type::tuple<A0, A1, A2, A3, A4, A5> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0, A1, A2, A3, A4, A5>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 1)
+ o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 2)
+ o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 3)
+ o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 4)
+ o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 5)
+ o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0, A1, A2, A3, A4, A5, A6>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 1)
+ o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 2)
+ o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 3)
+ o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 4)
+ o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 5)
+ o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 6)
+ o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0, A1, A2, A3, A4, A5, A6, A7>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 1)
+ o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 2)
+ o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 3)
+ o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 4)
+ o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 5)
+ o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 6)
+ o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 7)
+ o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 1)
+ o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 2)
+ o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 3)
+ o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 4)
+ o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 5)
+ o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 6)
+ o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 7)
+ o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 8)
+ o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 1)
+ o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 2)
+ o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 3)
+ o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 4)
+ o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 5)
+ o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 6)
+ o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 7)
+ o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 8)
+ o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 9)
+ o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 1)
+ o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 2)
+ o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 3)
+ o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 4)
+ o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 5)
+ o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 6)
+ o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 7)
+ o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 8)
+ o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 9)
+ o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 10)
+ o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 1)
+ o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 2)
+ o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 3)
+ o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 4)
+ o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 5)
+ o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 6)
+ o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 7)
+ o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 8)
+ o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 9)
+ o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 10)
+ o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 11)
+ o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 1)
+ o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 2)
+ o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 3)
+ o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 4)
+ o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 5)
+ o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 6)
+ o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 7)
+ o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 8)
+ o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 9)
+ o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 10)
+ o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 11)
+ o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 12)
+ o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 1)
+ o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 2)
+ o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 3)
+ o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 4)
+ o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 5)
+ o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 6)
+ o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 7)
+ o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 8)
+ o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 9)
+ o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 10)
+ o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 11)
+ o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 12)
+ o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 13)
+ o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 1)
+ o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 2)
+ o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 3)
+ o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 4)
+ o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 5)
+ o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 6)
+ o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 7)
+ o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 8)
+ o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 9)
+ o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 10)
+ o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 11)
+ o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 12)
+ o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 13)
+ o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 14)
+ o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 1)
+ o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 2)
+ o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 3)
+ o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 4)
+ o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 5)
+ o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 6)
+ o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 7)
+ o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 8)
+ o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 9)
+ o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 10)
+ o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 11)
+ o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 12)
+ o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 13)
+ o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 14)
+ o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 15)
+ o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 1)
+ o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 2)
+ o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 3)
+ o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 4)
+ o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 5)
+ o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 6)
+ o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 7)
+ o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 8)
+ o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 9)
+ o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 10)
+ o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 11)
+ o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 12)
+ o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 13)
+ o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 14)
+ o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 15)
+ o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 16)
+ o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 1)
+ o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 2)
+ o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 3)
+ o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 4)
+ o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 5)
+ o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 6)
+ o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 7)
+ o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 8)
+ o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 9)
+ o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 10)
+ o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 11)
+ o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 12)
+ o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 13)
+ o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 14)
+ o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 15)
+ o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 16)
+ o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 17)
+ o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 1)
+ o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 2)
+ o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 3)
+ o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 4)
+ o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 5)
+ o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 6)
+ o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 7)
+ o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 8)
+ o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 9)
+ o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 10)
+ o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 11)
+ o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 12)
+ o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 13)
+ o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 14)
+ o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 15)
+ o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 16)
+ o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 17)
+ o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 18)
+ o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 1)
+ o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 2)
+ o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 3)
+ o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 4)
+ o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 5)
+ o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 6)
+ o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 7)
+ o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 8)
+ o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 9)
+ o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 10)
+ o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 11)
+ o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 12)
+ o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 13)
+ o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 14)
+ o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 15)
+ o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 16)
+ o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 17)
+ o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 18)
+ o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 19)
+ o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 1)
+ o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 2)
+ o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 3)
+ o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 4)
+ o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 5)
+ o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 6)
+ o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 7)
+ o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 8)
+ o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 9)
+ o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 10)
+ o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 11)
+ o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 12)
+ o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 13)
+ o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 14)
+ o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 15)
+ o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 16)
+ o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 17)
+ o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 18)
+ o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 19)
+ o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 20)
+ o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 1)
+ o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 2)
+ o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 3)
+ o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 4)
+ o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 5)
+ o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 6)
+ o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 7)
+ o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 8)
+ o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 9)
+ o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 10)
+ o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 11)
+ o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 12)
+ o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 13)
+ o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 14)
+ o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 15)
+ o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 16)
+ o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 17)
+ o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 18)
+ o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 19)
+ o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 20)
+ o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 21)
+ o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 1)
+ o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 2)
+ o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 3)
+ o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 4)
+ o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 5)
+ o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 6)
+ o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 7)
+ o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 8)
+ o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 9)
+ o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 10)
+ o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 11)
+ o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 12)
+ o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 13)
+ o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 14)
+ o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 15)
+ o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 16)
+ o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 17)
+ o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 18)
+ o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 19)
+ o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 20)
+ o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 21)
+ o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 22)
+ o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 1)
+ o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 2)
+ o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 3)
+ o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 4)
+ o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 5)
+ o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 6)
+ o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 7)
+ o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 8)
+ o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 9)
+ o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 10)
+ o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 11)
+ o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 12)
+ o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 13)
+ o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 14)
+ o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 15)
+ o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 16)
+ o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 17)
+ o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 18)
+ o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 19)
+ o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 20)
+ o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 21)
+ o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 22)
+ o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 23)
+ o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 1)
+ o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 2)
+ o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 3)
+ o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 4)
+ o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 5)
+ o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 6)
+ o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 7)
+ o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 8)
+ o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 9)
+ o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 10)
+ o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 11)
+ o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 12)
+ o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 13)
+ o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 14)
+ o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 15)
+ o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 16)
+ o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 17)
+ o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 18)
+ o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 19)
+ o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 20)
+ o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 21)
+ o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 22)
+ o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 23)
+ o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 24)
+ o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 1)
+ o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 2)
+ o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 3)
+ o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 4)
+ o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 5)
+ o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 6)
+ o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 7)
+ o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 8)
+ o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 9)
+ o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 10)
+ o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 11)
+ o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 12)
+ o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 13)
+ o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 14)
+ o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 15)
+ o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 16)
+ o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 17)
+ o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 18)
+ o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 19)
+ o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 20)
+ o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 21)
+ o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 22)
+ o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 23)
+ o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 24)
+ o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 25)
+ o.via.array.ptr[25].msgpack::object::convert<typename type::tuple_type<A25>::type>(v.template get<25>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 1)
+ o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 2)
+ o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 3)
+ o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 4)
+ o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 5)
+ o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 6)
+ o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 7)
+ o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 8)
+ o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 9)
+ o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 10)
+ o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 11)
+ o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 12)
+ o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 13)
+ o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 14)
+ o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 15)
+ o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 16)
+ o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 17)
+ o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 18)
+ o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 19)
+ o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 20)
+ o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 21)
+ o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 22)
+ o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 23)
+ o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 24)
+ o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 25)
+ o.via.array.ptr[25].msgpack::object::convert<typename type::tuple_type<A25>::type>(v.template get<25>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 26)
+ o.via.array.ptr[26].msgpack::object::convert<typename type::tuple_type<A26>::type>(v.template get<26>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 1)
+ o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 2)
+ o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 3)
+ o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 4)
+ o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 5)
+ o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 6)
+ o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 7)
+ o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 8)
+ o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 9)
+ o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 10)
+ o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 11)
+ o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 12)
+ o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 13)
+ o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 14)
+ o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 15)
+ o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 16)
+ o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 17)
+ o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 18)
+ o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 19)
+ o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 20)
+ o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 21)
+ o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 22)
+ o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 23)
+ o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 24)
+ o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 25)
+ o.via.array.ptr[25].msgpack::object::convert<typename type::tuple_type<A25>::type>(v.template get<25>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 26)
+ o.via.array.ptr[26].msgpack::object::convert<typename type::tuple_type<A26>::type>(v.template get<26>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 27)
+ o.via.array.ptr[27].msgpack::object::convert<typename type::tuple_type<A27>::type>(v.template get<27>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 1)
+ o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 2)
+ o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 3)
+ o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 4)
+ o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 5)
+ o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 6)
+ o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 7)
+ o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 8)
+ o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 9)
+ o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 10)
+ o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 11)
+ o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 12)
+ o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 13)
+ o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 14)
+ o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 15)
+ o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 16)
+ o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 17)
+ o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 18)
+ o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 19)
+ o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 20)
+ o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 21)
+ o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 22)
+ o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 23)
+ o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 24)
+ o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 25)
+ o.via.array.ptr[25].msgpack::object::convert<typename type::tuple_type<A25>::type>(v.template get<25>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 26)
+ o.via.array.ptr[26].msgpack::object::convert<typename type::tuple_type<A26>::type>(v.template get<26>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 27)
+ o.via.array.ptr[27].msgpack::object::convert<typename type::tuple_type<A27>::type>(v.template get<27>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 28)
+ o.via.array.ptr[28].msgpack::object::convert<typename type::tuple_type<A28>::type>(v.template get<28>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 1)
+ o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 2)
+ o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 3)
+ o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 4)
+ o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 5)
+ o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 6)
+ o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 7)
+ o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 8)
+ o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 9)
+ o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 10)
+ o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 11)
+ o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 12)
+ o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 13)
+ o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 14)
+ o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 15)
+ o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 16)
+ o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 17)
+ o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 18)
+ o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 19)
+ o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 20)
+ o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 21)
+ o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 22)
+ o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 23)
+ o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 24)
+ o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 25)
+ o.via.array.ptr[25].msgpack::object::convert<typename type::tuple_type<A25>::type>(v.template get<25>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 26)
+ o.via.array.ptr[26].msgpack::object::convert<typename type::tuple_type<A26>::type>(v.template get<26>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 27)
+ o.via.array.ptr[27].msgpack::object::convert<typename type::tuple_type<A27>::type>(v.template get<27>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 28)
+ o.via.array.ptr[28].msgpack::object::convert<typename type::tuple_type<A28>::type>(v.template get<28>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 29)
+ o.via.array.ptr[29].msgpack::object::convert<typename type::tuple_type<A29>::type>(v.template get<29>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 1)
+ o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 2)
+ o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 3)
+ o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 4)
+ o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 5)
+ o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 6)
+ o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 7)
+ o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 8)
+ o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 9)
+ o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 10)
+ o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 11)
+ o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 12)
+ o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 13)
+ o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 14)
+ o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 15)
+ o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 16)
+ o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 17)
+ o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 18)
+ o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 19)
+ o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 20)
+ o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 21)
+ o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 22)
+ o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 23)
+ o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 24)
+ o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 25)
+ o.via.array.ptr[25].msgpack::object::convert<typename type::tuple_type<A25>::type>(v.template get<25>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 26)
+ o.via.array.ptr[26].msgpack::object::convert<typename type::tuple_type<A26>::type>(v.template get<26>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 27)
+ o.via.array.ptr[27].msgpack::object::convert<typename type::tuple_type<A27>::type>(v.template get<27>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 28)
+ o.via.array.ptr[28].msgpack::object::convert<typename type::tuple_type<A28>::type>(v.template get<28>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 29)
+ o.via.array.ptr[29].msgpack::object::convert<typename type::tuple_type<A29>::type>(v.template get<29>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 30)
+ o.via.array.ptr[30].msgpack::object::convert<typename type::tuple_type<A30>::type>(v.template get<30>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31> > {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 0)
+ o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 1)
+ o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 2)
+ o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 3)
+ o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 4)
+ o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 5)
+ o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 6)
+ o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 7)
+ o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 8)
+ o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 9)
+ o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 10)
+ o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 11)
+ o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 12)
+ o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 13)
+ o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 14)
+ o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 15)
+ o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 16)
+ o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 17)
+ o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 18)
+ o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 19)
+ o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 20)
+ o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 21)
+ o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 22)
+ o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 23)
+ o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 24)
+ o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 25)
+ o.via.array.ptr[25].msgpack::object::convert<typename type::tuple_type<A25>::type>(v.template get<25>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 26)
+ o.via.array.ptr[26].msgpack::object::convert<typename type::tuple_type<A26>::type>(v.template get<26>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 27)
+ o.via.array.ptr[27].msgpack::object::convert<typename type::tuple_type<A27>::type>(v.template get<27>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 28)
+ o.via.array.ptr[28].msgpack::object::convert<typename type::tuple_type<A28>::type>(v.template get<28>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 29)
+ o.via.array.ptr[29].msgpack::object::convert<typename type::tuple_type<A29>::type>(v.template get<29>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 30)
+ o.via.array.ptr[30].msgpack::object::convert<typename type::tuple_type<A30>::type>(v.template get<30>());
+ // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
+ if(o.via.array.size > 31)
+ o.via.array.ptr[31].msgpack::object::convert<typename type::tuple_type<A31>::type>(v.template get<31>());
+ return o;
+ }
+};
+
+/// @endcond
+
+template <>
+struct pack<type::tuple<> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<>&) const {
+ o.pack_array(0);
+ return o;
+ }
+};
+
+/// @cond
+
+template <typename A0>
+struct pack<type::tuple<A0> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0>& v) const {
+ o.pack_array(1);
+
+ o.pack(v.template get<0>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1>
+struct pack<type::tuple<A0, A1> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0, A1>& v) const {
+ o.pack_array(2);
+
+ o.pack(v.template get<0>());
+ o.pack(v.template get<1>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2>
+struct pack<type::tuple<A0, A1, A2> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0, A1, A2>& v) const {
+ o.pack_array(3);
+
+ o.pack(v.template get<0>());
+ o.pack(v.template get<1>());
+ o.pack(v.template get<2>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3>
+struct pack<type::tuple<A0, A1, A2, A3> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0, A1, A2, A3>& v) const {
+ o.pack_array(4);
+
+ o.pack(v.template get<0>());
+ o.pack(v.template get<1>());
+ o.pack(v.template get<2>());
+ o.pack(v.template get<3>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4>
+struct pack<type::tuple<A0, A1, A2, A3, A4> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0, A1, A2, A3, A4>& v) const {
+ o.pack_array(5);
+
+ o.pack(v.template get<0>());
+ o.pack(v.template get<1>());
+ o.pack(v.template get<2>());
+ o.pack(v.template get<3>());
+ o.pack(v.template get<4>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
+struct pack<type::tuple<A0, A1, A2, A3, A4, A5> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5>& v) const {
+ o.pack_array(6);
+
+ o.pack(v.template get<0>());
+ o.pack(v.template get<1>());
+ o.pack(v.template get<2>());
+ o.pack(v.template get<3>());
+ o.pack(v.template get<4>());
+ o.pack(v.template get<5>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6>& v) const {
+ o.pack_array(7);
+
+ o.pack(v.template get<0>());
+ o.pack(v.template get<1>());
+ o.pack(v.template get<2>());
+ o.pack(v.template get<3>());
+ o.pack(v.template get<4>());
+ o.pack(v.template get<5>());
+ o.pack(v.template get<6>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7>& v) const {
+ o.pack_array(8);
+
+ o.pack(v.template get<0>());
+ o.pack(v.template get<1>());
+ o.pack(v.template get<2>());
+ o.pack(v.template get<3>());
+ o.pack(v.template get<4>());
+ o.pack(v.template get<5>());
+ o.pack(v.template get<6>());
+ o.pack(v.template get<7>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>& v) const {
+ o.pack_array(9);
+
+ o.pack(v.template get<0>());
+ o.pack(v.template get<1>());
+ o.pack(v.template get<2>());
+ o.pack(v.template get<3>());
+ o.pack(v.template get<4>());
+ o.pack(v.template get<5>());
+ o.pack(v.template get<6>());
+ o.pack(v.template get<7>());
+ o.pack(v.template get<8>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>& v) const {
+ o.pack_array(10);
+
+ o.pack(v.template get<0>());
+ o.pack(v.template get<1>());
+ o.pack(v.template get<2>());
+ o.pack(v.template get<3>());
+ o.pack(v.template get<4>());
+ o.pack(v.template get<5>());
+ o.pack(v.template get<6>());
+ o.pack(v.template get<7>());
+ o.pack(v.template get<8>());
+ o.pack(v.template get<9>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& v) const {
+ o.pack_array(11);
+
+ o.pack(v.template get<0>());
+ o.pack(v.template get<1>());
+ o.pack(v.template get<2>());
+ o.pack(v.template get<3>());
+ o.pack(v.template get<4>());
+ o.pack(v.template get<5>());
+ o.pack(v.template get<6>());
+ o.pack(v.template get<7>());
+ o.pack(v.template get<8>());
+ o.pack(v.template get<9>());
+ o.pack(v.template get<10>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& v) const {
+ o.pack_array(12);
+
+ o.pack(v.template get<0>());
+ o.pack(v.template get<1>());
+ o.pack(v.template get<2>());
+ o.pack(v.template get<3>());
+ o.pack(v.template get<4>());
+ o.pack(v.template get<5>());
+ o.pack(v.template get<6>());
+ o.pack(v.template get<7>());
+ o.pack(v.template get<8>());
+ o.pack(v.template get<9>());
+ o.pack(v.template get<10>());
+ o.pack(v.template get<11>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& v) const {
+ o.pack_array(13);
+
+ o.pack(v.template get<0>());
+ o.pack(v.template get<1>());
+ o.pack(v.template get<2>());
+ o.pack(v.template get<3>());
+ o.pack(v.template get<4>());
+ o.pack(v.template get<5>());
+ o.pack(v.template get<6>());
+ o.pack(v.template get<7>());
+ o.pack(v.template get<8>());
+ o.pack(v.template get<9>());
+ o.pack(v.template get<10>());
+ o.pack(v.template get<11>());
+ o.pack(v.template get<12>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& v) const {
+ o.pack_array(14);
+
+ o.pack(v.template get<0>());
+ o.pack(v.template get<1>());
+ o.pack(v.template get<2>());
+ o.pack(v.template get<3>());
+ o.pack(v.template get<4>());
+ o.pack(v.template get<5>());
+ o.pack(v.template get<6>());
+ o.pack(v.template get<7>());
+ o.pack(v.template get<8>());
+ o.pack(v.template get<9>());
+ o.pack(v.template get<10>());
+ o.pack(v.template get<11>());
+ o.pack(v.template get<12>());
+ o.pack(v.template get<13>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& v) const {
+ o.pack_array(15);
+
+ o.pack(v.template get<0>());
+ o.pack(v.template get<1>());
+ o.pack(v.template get<2>());
+ o.pack(v.template get<3>());
+ o.pack(v.template get<4>());
+ o.pack(v.template get<5>());
+ o.pack(v.template get<6>());
+ o.pack(v.template get<7>());
+ o.pack(v.template get<8>());
+ o.pack(v.template get<9>());
+ o.pack(v.template get<10>());
+ o.pack(v.template get<11>());
+ o.pack(v.template get<12>());
+ o.pack(v.template get<13>());
+ o.pack(v.template get<14>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& v) const {
+ o.pack_array(16);
+
+ o.pack(v.template get<0>());
+ o.pack(v.template get<1>());
+ o.pack(v.template get<2>());
+ o.pack(v.template get<3>());
+ o.pack(v.template get<4>());
+ o.pack(v.template get<5>());
+ o.pack(v.template get<6>());
+ o.pack(v.template get<7>());
+ o.pack(v.template get<8>());
+ o.pack(v.template get<9>());
+ o.pack(v.template get<10>());
+ o.pack(v.template get<11>());
+ o.pack(v.template get<12>());
+ o.pack(v.template get<13>());
+ o.pack(v.template get<14>());
+ o.pack(v.template get<15>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& v) const {
+ o.pack_array(17);
+
+ o.pack(v.template get<0>());
+ o.pack(v.template get<1>());
+ o.pack(v.template get<2>());
+ o.pack(v.template get<3>());
+ o.pack(v.template get<4>());
+ o.pack(v.template get<5>());
+ o.pack(v.template get<6>());
+ o.pack(v.template get<7>());
+ o.pack(v.template get<8>());
+ o.pack(v.template get<9>());
+ o.pack(v.template get<10>());
+ o.pack(v.template get<11>());
+ o.pack(v.template get<12>());
+ o.pack(v.template get<13>());
+ o.pack(v.template get<14>());
+ o.pack(v.template get<15>());
+ o.pack(v.template get<16>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& v) const {
+ o.pack_array(18);
+
+ o.pack(v.template get<0>());
+ o.pack(v.template get<1>());
+ o.pack(v.template get<2>());
+ o.pack(v.template get<3>());
+ o.pack(v.template get<4>());
+ o.pack(v.template get<5>());
+ o.pack(v.template get<6>());
+ o.pack(v.template get<7>());
+ o.pack(v.template get<8>());
+ o.pack(v.template get<9>());
+ o.pack(v.template get<10>());
+ o.pack(v.template get<11>());
+ o.pack(v.template get<12>());
+ o.pack(v.template get<13>());
+ o.pack(v.template get<14>());
+ o.pack(v.template get<15>());
+ o.pack(v.template get<16>());
+ o.pack(v.template get<17>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& v) const {
+ o.pack_array(19);
+
+ o.pack(v.template get<0>());
+ o.pack(v.template get<1>());
+ o.pack(v.template get<2>());
+ o.pack(v.template get<3>());
+ o.pack(v.template get<4>());
+ o.pack(v.template get<5>());
+ o.pack(v.template get<6>());
+ o.pack(v.template get<7>());
+ o.pack(v.template get<8>());
+ o.pack(v.template get<9>());
+ o.pack(v.template get<10>());
+ o.pack(v.template get<11>());
+ o.pack(v.template get<12>());
+ o.pack(v.template get<13>());
+ o.pack(v.template get<14>());
+ o.pack(v.template get<15>());
+ o.pack(v.template get<16>());
+ o.pack(v.template get<17>());
+ o.pack(v.template get<18>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& v) const {
+ o.pack_array(20);
+
+ o.pack(v.template get<0>());
+ o.pack(v.template get<1>());
+ o.pack(v.template get<2>());
+ o.pack(v.template get<3>());
+ o.pack(v.template get<4>());
+ o.pack(v.template get<5>());
+ o.pack(v.template get<6>());
+ o.pack(v.template get<7>());
+ o.pack(v.template get<8>());
+ o.pack(v.template get<9>());
+ o.pack(v.template get<10>());
+ o.pack(v.template get<11>());
+ o.pack(v.template get<12>());
+ o.pack(v.template get<13>());
+ o.pack(v.template get<14>());
+ o.pack(v.template get<15>());
+ o.pack(v.template get<16>());
+ o.pack(v.template get<17>());
+ o.pack(v.template get<18>());
+ o.pack(v.template get<19>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& v) const {
+ o.pack_array(21);
+
+ o.pack(v.template get<0>());
+ o.pack(v.template get<1>());
+ o.pack(v.template get<2>());
+ o.pack(v.template get<3>());
+ o.pack(v.template get<4>());
+ o.pack(v.template get<5>());
+ o.pack(v.template get<6>());
+ o.pack(v.template get<7>());
+ o.pack(v.template get<8>());
+ o.pack(v.template get<9>());
+ o.pack(v.template get<10>());
+ o.pack(v.template get<11>());
+ o.pack(v.template get<12>());
+ o.pack(v.template get<13>());
+ o.pack(v.template get<14>());
+ o.pack(v.template get<15>());
+ o.pack(v.template get<16>());
+ o.pack(v.template get<17>());
+ o.pack(v.template get<18>());
+ o.pack(v.template get<19>());
+ o.pack(v.template get<20>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& v) const {
+ o.pack_array(22);
+
+ o.pack(v.template get<0>());
+ o.pack(v.template get<1>());
+ o.pack(v.template get<2>());
+ o.pack(v.template get<3>());
+ o.pack(v.template get<4>());
+ o.pack(v.template get<5>());
+ o.pack(v.template get<6>());
+ o.pack(v.template get<7>());
+ o.pack(v.template get<8>());
+ o.pack(v.template get<9>());
+ o.pack(v.template get<10>());
+ o.pack(v.template get<11>());
+ o.pack(v.template get<12>());
+ o.pack(v.template get<13>());
+ o.pack(v.template get<14>());
+ o.pack(v.template get<15>());
+ o.pack(v.template get<16>());
+ o.pack(v.template get<17>());
+ o.pack(v.template get<18>());
+ o.pack(v.template get<19>());
+ o.pack(v.template get<20>());
+ o.pack(v.template get<21>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& v) const {
+ o.pack_array(23);
+
+ o.pack(v.template get<0>());
+ o.pack(v.template get<1>());
+ o.pack(v.template get<2>());
+ o.pack(v.template get<3>());
+ o.pack(v.template get<4>());
+ o.pack(v.template get<5>());
+ o.pack(v.template get<6>());
+ o.pack(v.template get<7>());
+ o.pack(v.template get<8>());
+ o.pack(v.template get<9>());
+ o.pack(v.template get<10>());
+ o.pack(v.template get<11>());
+ o.pack(v.template get<12>());
+ o.pack(v.template get<13>());
+ o.pack(v.template get<14>());
+ o.pack(v.template get<15>());
+ o.pack(v.template get<16>());
+ o.pack(v.template get<17>());
+ o.pack(v.template get<18>());
+ o.pack(v.template get<19>());
+ o.pack(v.template get<20>());
+ o.pack(v.template get<21>());
+ o.pack(v.template get<22>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& v) const {
+ o.pack_array(24);
+
+ o.pack(v.template get<0>());
+ o.pack(v.template get<1>());
+ o.pack(v.template get<2>());
+ o.pack(v.template get<3>());
+ o.pack(v.template get<4>());
+ o.pack(v.template get<5>());
+ o.pack(v.template get<6>());
+ o.pack(v.template get<7>());
+ o.pack(v.template get<8>());
+ o.pack(v.template get<9>());
+ o.pack(v.template get<10>());
+ o.pack(v.template get<11>());
+ o.pack(v.template get<12>());
+ o.pack(v.template get<13>());
+ o.pack(v.template get<14>());
+ o.pack(v.template get<15>());
+ o.pack(v.template get<16>());
+ o.pack(v.template get<17>());
+ o.pack(v.template get<18>());
+ o.pack(v.template get<19>());
+ o.pack(v.template get<20>());
+ o.pack(v.template get<21>());
+ o.pack(v.template get<22>());
+ o.pack(v.template get<23>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& v) const {
+ o.pack_array(25);
+
+ o.pack(v.template get<0>());
+ o.pack(v.template get<1>());
+ o.pack(v.template get<2>());
+ o.pack(v.template get<3>());
+ o.pack(v.template get<4>());
+ o.pack(v.template get<5>());
+ o.pack(v.template get<6>());
+ o.pack(v.template get<7>());
+ o.pack(v.template get<8>());
+ o.pack(v.template get<9>());
+ o.pack(v.template get<10>());
+ o.pack(v.template get<11>());
+ o.pack(v.template get<12>());
+ o.pack(v.template get<13>());
+ o.pack(v.template get<14>());
+ o.pack(v.template get<15>());
+ o.pack(v.template get<16>());
+ o.pack(v.template get<17>());
+ o.pack(v.template get<18>());
+ o.pack(v.template get<19>());
+ o.pack(v.template get<20>());
+ o.pack(v.template get<21>());
+ o.pack(v.template get<22>());
+ o.pack(v.template get<23>());
+ o.pack(v.template get<24>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& v) const {
+ o.pack_array(26);
+
+ o.pack(v.template get<0>());
+ o.pack(v.template get<1>());
+ o.pack(v.template get<2>());
+ o.pack(v.template get<3>());
+ o.pack(v.template get<4>());
+ o.pack(v.template get<5>());
+ o.pack(v.template get<6>());
+ o.pack(v.template get<7>());
+ o.pack(v.template get<8>());
+ o.pack(v.template get<9>());
+ o.pack(v.template get<10>());
+ o.pack(v.template get<11>());
+ o.pack(v.template get<12>());
+ o.pack(v.template get<13>());
+ o.pack(v.template get<14>());
+ o.pack(v.template get<15>());
+ o.pack(v.template get<16>());
+ o.pack(v.template get<17>());
+ o.pack(v.template get<18>());
+ o.pack(v.template get<19>());
+ o.pack(v.template get<20>());
+ o.pack(v.template get<21>());
+ o.pack(v.template get<22>());
+ o.pack(v.template get<23>());
+ o.pack(v.template get<24>());
+ o.pack(v.template get<25>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& v) const {
+ o.pack_array(27);
+
+ o.pack(v.template get<0>());
+ o.pack(v.template get<1>());
+ o.pack(v.template get<2>());
+ o.pack(v.template get<3>());
+ o.pack(v.template get<4>());
+ o.pack(v.template get<5>());
+ o.pack(v.template get<6>());
+ o.pack(v.template get<7>());
+ o.pack(v.template get<8>());
+ o.pack(v.template get<9>());
+ o.pack(v.template get<10>());
+ o.pack(v.template get<11>());
+ o.pack(v.template get<12>());
+ o.pack(v.template get<13>());
+ o.pack(v.template get<14>());
+ o.pack(v.template get<15>());
+ o.pack(v.template get<16>());
+ o.pack(v.template get<17>());
+ o.pack(v.template get<18>());
+ o.pack(v.template get<19>());
+ o.pack(v.template get<20>());
+ o.pack(v.template get<21>());
+ o.pack(v.template get<22>());
+ o.pack(v.template get<23>());
+ o.pack(v.template get<24>());
+ o.pack(v.template get<25>());
+ o.pack(v.template get<26>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& v) const {
+ o.pack_array(28);
+
+ o.pack(v.template get<0>());
+ o.pack(v.template get<1>());
+ o.pack(v.template get<2>());
+ o.pack(v.template get<3>());
+ o.pack(v.template get<4>());
+ o.pack(v.template get<5>());
+ o.pack(v.template get<6>());
+ o.pack(v.template get<7>());
+ o.pack(v.template get<8>());
+ o.pack(v.template get<9>());
+ o.pack(v.template get<10>());
+ o.pack(v.template get<11>());
+ o.pack(v.template get<12>());
+ o.pack(v.template get<13>());
+ o.pack(v.template get<14>());
+ o.pack(v.template get<15>());
+ o.pack(v.template get<16>());
+ o.pack(v.template get<17>());
+ o.pack(v.template get<18>());
+ o.pack(v.template get<19>());
+ o.pack(v.template get<20>());
+ o.pack(v.template get<21>());
+ o.pack(v.template get<22>());
+ o.pack(v.template get<23>());
+ o.pack(v.template get<24>());
+ o.pack(v.template get<25>());
+ o.pack(v.template get<26>());
+ o.pack(v.template get<27>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& v) const {
+ o.pack_array(29);
+
+ o.pack(v.template get<0>());
+ o.pack(v.template get<1>());
+ o.pack(v.template get<2>());
+ o.pack(v.template get<3>());
+ o.pack(v.template get<4>());
+ o.pack(v.template get<5>());
+ o.pack(v.template get<6>());
+ o.pack(v.template get<7>());
+ o.pack(v.template get<8>());
+ o.pack(v.template get<9>());
+ o.pack(v.template get<10>());
+ o.pack(v.template get<11>());
+ o.pack(v.template get<12>());
+ o.pack(v.template get<13>());
+ o.pack(v.template get<14>());
+ o.pack(v.template get<15>());
+ o.pack(v.template get<16>());
+ o.pack(v.template get<17>());
+ o.pack(v.template get<18>());
+ o.pack(v.template get<19>());
+ o.pack(v.template get<20>());
+ o.pack(v.template get<21>());
+ o.pack(v.template get<22>());
+ o.pack(v.template get<23>());
+ o.pack(v.template get<24>());
+ o.pack(v.template get<25>());
+ o.pack(v.template get<26>());
+ o.pack(v.template get<27>());
+ o.pack(v.template get<28>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& v) const {
+ o.pack_array(30);
+
+ o.pack(v.template get<0>());
+ o.pack(v.template get<1>());
+ o.pack(v.template get<2>());
+ o.pack(v.template get<3>());
+ o.pack(v.template get<4>());
+ o.pack(v.template get<5>());
+ o.pack(v.template get<6>());
+ o.pack(v.template get<7>());
+ o.pack(v.template get<8>());
+ o.pack(v.template get<9>());
+ o.pack(v.template get<10>());
+ o.pack(v.template get<11>());
+ o.pack(v.template get<12>());
+ o.pack(v.template get<13>());
+ o.pack(v.template get<14>());
+ o.pack(v.template get<15>());
+ o.pack(v.template get<16>());
+ o.pack(v.template get<17>());
+ o.pack(v.template get<18>());
+ o.pack(v.template get<19>());
+ o.pack(v.template get<20>());
+ o.pack(v.template get<21>());
+ o.pack(v.template get<22>());
+ o.pack(v.template get<23>());
+ o.pack(v.template get<24>());
+ o.pack(v.template get<25>());
+ o.pack(v.template get<26>());
+ o.pack(v.template get<27>());
+ o.pack(v.template get<28>());
+ o.pack(v.template get<29>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& v) const {
+ o.pack_array(31);
+
+ o.pack(v.template get<0>());
+ o.pack(v.template get<1>());
+ o.pack(v.template get<2>());
+ o.pack(v.template get<3>());
+ o.pack(v.template get<4>());
+ o.pack(v.template get<5>());
+ o.pack(v.template get<6>());
+ o.pack(v.template get<7>());
+ o.pack(v.template get<8>());
+ o.pack(v.template get<9>());
+ o.pack(v.template get<10>());
+ o.pack(v.template get<11>());
+ o.pack(v.template get<12>());
+ o.pack(v.template get<13>());
+ o.pack(v.template get<14>());
+ o.pack(v.template get<15>());
+ o.pack(v.template get<16>());
+ o.pack(v.template get<17>());
+ o.pack(v.template get<18>());
+ o.pack(v.template get<19>());
+ o.pack(v.template get<20>());
+ o.pack(v.template get<21>());
+ o.pack(v.template get<22>());
+ o.pack(v.template get<23>());
+ o.pack(v.template get<24>());
+ o.pack(v.template get<25>());
+ o.pack(v.template get<26>());
+ o.pack(v.template get<27>());
+ o.pack(v.template get<28>());
+ o.pack(v.template get<29>());
+ o.pack(v.template get<30>());
+ return o;
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& v) const {
+ o.pack_array(32);
+
+ o.pack(v.template get<0>());
+ o.pack(v.template get<1>());
+ o.pack(v.template get<2>());
+ o.pack(v.template get<3>());
+ o.pack(v.template get<4>());
+ o.pack(v.template get<5>());
+ o.pack(v.template get<6>());
+ o.pack(v.template get<7>());
+ o.pack(v.template get<8>());
+ o.pack(v.template get<9>());
+ o.pack(v.template get<10>());
+ o.pack(v.template get<11>());
+ o.pack(v.template get<12>());
+ o.pack(v.template get<13>());
+ o.pack(v.template get<14>());
+ o.pack(v.template get<15>());
+ o.pack(v.template get<16>());
+ o.pack(v.template get<17>());
+ o.pack(v.template get<18>());
+ o.pack(v.template get<19>());
+ o.pack(v.template get<20>());
+ o.pack(v.template get<21>());
+ o.pack(v.template get<22>());
+ o.pack(v.template get<23>());
+ o.pack(v.template get<24>());
+ o.pack(v.template get<25>());
+ o.pack(v.template get<26>());
+ o.pack(v.template get<27>());
+ o.pack(v.template get<28>());
+ o.pack(v.template get<29>());
+ o.pack(v.template get<30>());
+ o.pack(v.template get<31>());
+ return o;
+ }
+};
+
+/// @endcond
+
+template <>
+struct object_with_zone<type::tuple<> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<>&) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = MSGPACK_NULLPTR;
+ o.via.array.size = 0;
+ }
+};
+
+/// @cond
+
+template <typename A0>
+struct object_with_zone<type::tuple<A0> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*1, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 1;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ }
+};
+
+template <typename A0, typename A1>
+struct object_with_zone<type::tuple<A0, A1> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0, A1>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*2, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 2;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
+ }
+};
+
+template <typename A0, typename A1, typename A2>
+struct object_with_zone<type::tuple<A0, A1, A2> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0, A1, A2>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*3, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 3;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
+ o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3>
+struct object_with_zone<type::tuple<A0, A1, A2, A3> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0, A1, A2, A3>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*4, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 4;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
+ o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
+ o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4>
+struct object_with_zone<type::tuple<A0, A1, A2, A3, A4> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0, A1, A2, A3, A4>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*5, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 5;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
+ o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
+ o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
+ o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
+struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*6, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 6;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
+ o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
+ o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
+ o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
+ o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*7, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 7;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
+ o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
+ o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
+ o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
+ o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
+ o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*8, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 8;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
+ o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
+ o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
+ o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
+ o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
+ o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
+ o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*9, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 9;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
+ o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
+ o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
+ o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
+ o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
+ o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
+ o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
+ o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*10, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 10;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
+ o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
+ o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
+ o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
+ o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
+ o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
+ o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
+ o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
+ o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*11, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 11;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
+ o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
+ o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
+ o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
+ o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
+ o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
+ o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
+ o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
+ o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
+ o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*12, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 12;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
+ o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
+ o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
+ o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
+ o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
+ o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
+ o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
+ o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
+ o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
+ o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
+ o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*13, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 13;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
+ o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
+ o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
+ o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
+ o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
+ o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
+ o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
+ o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
+ o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
+ o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
+ o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
+ o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*14, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 14;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
+ o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
+ o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
+ o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
+ o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
+ o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
+ o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
+ o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
+ o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
+ o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
+ o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
+ o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
+ o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*15, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 15;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
+ o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
+ o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
+ o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
+ o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
+ o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
+ o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
+ o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
+ o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
+ o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
+ o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
+ o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
+ o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
+ o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*16, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 16;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
+ o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
+ o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
+ o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
+ o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
+ o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
+ o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
+ o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
+ o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
+ o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
+ o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
+ o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
+ o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
+ o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
+ o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*17, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 17;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
+ o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
+ o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
+ o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
+ o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
+ o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
+ o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
+ o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
+ o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
+ o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
+ o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
+ o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
+ o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
+ o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
+ o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
+ o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*18, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 18;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
+ o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
+ o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
+ o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
+ o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
+ o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
+ o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
+ o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
+ o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
+ o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
+ o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
+ o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
+ o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
+ o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
+ o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
+ o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
+ o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*19, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 19;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
+ o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
+ o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
+ o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
+ o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
+ o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
+ o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
+ o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
+ o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
+ o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
+ o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
+ o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
+ o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
+ o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
+ o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
+ o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
+ o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
+ o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*20, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 20;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
+ o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
+ o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
+ o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
+ o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
+ o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
+ o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
+ o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
+ o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
+ o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
+ o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
+ o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
+ o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
+ o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
+ o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
+ o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
+ o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
+ o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
+ o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*21, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 21;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
+ o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
+ o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
+ o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
+ o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
+ o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
+ o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
+ o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
+ o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
+ o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
+ o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
+ o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
+ o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
+ o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
+ o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
+ o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
+ o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
+ o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
+ o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
+ o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*22, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 22;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
+ o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
+ o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
+ o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
+ o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
+ o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
+ o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
+ o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
+ o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
+ o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
+ o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
+ o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
+ o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
+ o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
+ o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
+ o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
+ o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
+ o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
+ o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
+ o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
+ o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*23, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 23;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
+ o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
+ o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
+ o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
+ o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
+ o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
+ o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
+ o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
+ o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
+ o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
+ o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
+ o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
+ o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
+ o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
+ o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
+ o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
+ o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
+ o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
+ o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
+ o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
+ o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
+ o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*24, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 24;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
+ o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
+ o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
+ o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
+ o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
+ o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
+ o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
+ o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
+ o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
+ o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
+ o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
+ o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
+ o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
+ o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
+ o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
+ o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
+ o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
+ o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
+ o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
+ o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
+ o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
+ o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
+ o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*25, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 25;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
+ o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
+ o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
+ o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
+ o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
+ o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
+ o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
+ o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
+ o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
+ o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
+ o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
+ o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
+ o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
+ o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
+ o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
+ o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
+ o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
+ o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
+ o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
+ o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
+ o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
+ o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
+ o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
+ o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*26, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 26;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
+ o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
+ o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
+ o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
+ o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
+ o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
+ o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
+ o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
+ o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
+ o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
+ o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
+ o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
+ o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
+ o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
+ o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
+ o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
+ o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
+ o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
+ o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
+ o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
+ o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
+ o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
+ o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
+ o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
+ o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone);
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*27, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 27;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
+ o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
+ o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
+ o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
+ o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
+ o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
+ o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
+ o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
+ o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
+ o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
+ o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
+ o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
+ o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
+ o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
+ o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
+ o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
+ o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
+ o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
+ o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
+ o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
+ o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
+ o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
+ o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
+ o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
+ o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone);
+ o.via.array.ptr[26] = msgpack::object(v.template get<26>(), o.zone);
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*28, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 28;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
+ o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
+ o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
+ o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
+ o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
+ o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
+ o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
+ o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
+ o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
+ o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
+ o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
+ o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
+ o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
+ o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
+ o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
+ o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
+ o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
+ o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
+ o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
+ o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
+ o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
+ o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
+ o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
+ o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
+ o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone);
+ o.via.array.ptr[26] = msgpack::object(v.template get<26>(), o.zone);
+ o.via.array.ptr[27] = msgpack::object(v.template get<27>(), o.zone);
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*29, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 29;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
+ o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
+ o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
+ o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
+ o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
+ o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
+ o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
+ o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
+ o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
+ o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
+ o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
+ o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
+ o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
+ o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
+ o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
+ o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
+ o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
+ o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
+ o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
+ o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
+ o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
+ o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
+ o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
+ o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
+ o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone);
+ o.via.array.ptr[26] = msgpack::object(v.template get<26>(), o.zone);
+ o.via.array.ptr[27] = msgpack::object(v.template get<27>(), o.zone);
+ o.via.array.ptr[28] = msgpack::object(v.template get<28>(), o.zone);
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*30, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 30;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
+ o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
+ o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
+ o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
+ o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
+ o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
+ o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
+ o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
+ o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
+ o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
+ o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
+ o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
+ o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
+ o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
+ o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
+ o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
+ o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
+ o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
+ o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
+ o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
+ o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
+ o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
+ o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
+ o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
+ o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone);
+ o.via.array.ptr[26] = msgpack::object(v.template get<26>(), o.zone);
+ o.via.array.ptr[27] = msgpack::object(v.template get<27>(), o.zone);
+ o.via.array.ptr[28] = msgpack::object(v.template get<28>(), o.zone);
+ o.via.array.ptr[29] = msgpack::object(v.template get<29>(), o.zone);
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*31, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 31;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
+ o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
+ o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
+ o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
+ o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
+ o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
+ o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
+ o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
+ o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
+ o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
+ o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
+ o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
+ o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
+ o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
+ o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
+ o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
+ o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
+ o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
+ o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
+ o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
+ o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
+ o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
+ o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
+ o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
+ o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone);
+ o.via.array.ptr[26] = msgpack::object(v.template get<26>(), o.zone);
+ o.via.array.ptr[27] = msgpack::object(v.template get<27>(), o.zone);
+ o.via.array.ptr[28] = msgpack::object(v.template get<28>(), o.zone);
+ o.via.array.ptr[29] = msgpack::object(v.template get<29>(), o.zone);
+ o.via.array.ptr[30] = msgpack::object(v.template get<30>(), o.zone);
+ }
+};
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31> > {
+ void operator()(
+ msgpack::object::with_zone& o,
+ const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*32, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = 32;
+
+ o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
+ o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
+ o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
+ o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
+ o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
+ o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
+ o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
+ o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
+ o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
+ o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
+ o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
+ o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
+ o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
+ o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
+ o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
+ o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
+ o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
+ o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
+ o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
+ o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
+ o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
+ o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
+ o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
+ o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
+ o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
+ o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone);
+ o.via.array.ptr[26] = msgpack::object(v.template get<26>(), o.zone);
+ o.via.array.ptr[27] = msgpack::object(v.template get<27>(), o.zone);
+ o.via.array.ptr[28] = msgpack::object(v.template get<28>(), o.zone);
+ o.via.array.ptr[29] = msgpack::object(v.template get<29>(), o.zone);
+ o.via.array.ptr[30] = msgpack::object(v.template get<30>(), o.zone);
+ o.via.array.ptr[31] = msgpack::object(v.template get<31>(), o.zone);
+ }
+};
+
+/// @endcond
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_CPP03_MSGPACK_TUPLE_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp03_msgpack_tuple_decl.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp03_msgpack_tuple_decl.hpp
new file mode 100644
index 0000000000..0c9200d862
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp03_msgpack_tuple_decl.hpp
@@ -0,0 +1,317 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_CPP03_MSGPACK_TUPLE_DECL_HPP
+#define MSGPACK_V1_CPP03_MSGPACK_TUPLE_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/object.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace type {
+
+// FIXME operator==
+// FIXME operator!=
+
+
+/// @cond
+template <typename A0 = void, typename A1 = void, typename A2 = void, typename A3 = void, typename A4 = void, typename A5 = void, typename A6 = void, typename A7 = void, typename A8 = void, typename A9 = void, typename A10 = void, typename A11 = void, typename A12 = void, typename A13 = void, typename A14 = void, typename A15 = void, typename A16 = void, typename A17 = void, typename A18 = void, typename A19 = void, typename A20 = void, typename A21 = void, typename A22 = void, typename A23 = void, typename A24 = void, typename A25 = void, typename A26 = void, typename A27 = void, typename A28 = void, typename A29 = void, typename A30 = void, typename A31 = void, typename A32 = void>
+struct tuple;
+/// @endcond
+
+template <typename Tuple, int N>
+struct tuple_element;
+
+template <typename Tuple, int N>
+struct const_tuple_element;
+
+template <typename T>
+struct tuple_type;
+
+/// @cond
+
+template <int N, typename A0>
+typename type::tuple_element<type::tuple<A0>, N>::reference get(type::tuple<A0>& t);
+template <int N, typename A0>
+typename type::const_tuple_element<type::tuple<A0>, N>::const_reference get(type::tuple<A0> const& t);
+
+template <int N, typename A0, typename A1>
+typename type::tuple_element<type::tuple<A0, A1>, N>::reference get(type::tuple<A0, A1>& t);
+template <int N, typename A0, typename A1>
+typename type::const_tuple_element<type::tuple<A0, A1>, N>::const_reference get(type::tuple<A0, A1> const& t);
+
+template <int N, typename A0, typename A1, typename A2>
+typename type::tuple_element<type::tuple<A0, A1, A2>, N>::reference get(type::tuple<A0, A1, A2>& t);
+template <int N, typename A0, typename A1, typename A2>
+typename type::const_tuple_element<type::tuple<A0, A1, A2>, N>::const_reference get(type::tuple<A0, A1, A2> const& t);
+
+template <int N, typename A0, typename A1, typename A2, typename A3>
+typename type::tuple_element<type::tuple<A0, A1, A2, A3>, N>::reference get(type::tuple<A0, A1, A2, A3>& t);
+template <int N, typename A0, typename A1, typename A2, typename A3>
+typename type::const_tuple_element<type::tuple<A0, A1, A2, A3>, N>::const_reference get(type::tuple<A0, A1, A2, A3> const& t);
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4>
+typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4>, N>::reference get(type::tuple<A0, A1, A2, A3, A4>& t);
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4>
+typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4> const& t);
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
+typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5>& t);
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
+typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5> const& t);
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6>& t);
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6> const& t);
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7>& t);
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7> const& t);
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>& t);
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8> const& t);
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>& t);
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> const& t);
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& t);
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> const& t);
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& t);
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> const& t);
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& t);
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> const& t);
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& t);
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> const& t);
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& t);
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> const& t);
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& t);
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> const& t);
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& t);
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> const& t);
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& t);
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> const& t);
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& t);
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> const& t);
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& t);
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> const& t);
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& t);
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20> const& t);
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& t);
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> const& t);
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& t);
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22> const& t);
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& t);
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23> const& t);
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& t);
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24> const& t);
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& t);
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25> const& t);
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& t);
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26> const& t);
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& t);
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27> const& t);
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& t);
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28> const& t);
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& t);
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29> const& t);
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& t);
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30> const& t);
+
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& t);
+template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31> const& t);
+
+/// @endcond
+
+tuple<> make_tuple();
+
+/// @cond
+
+template <typename A0>
+tuple<A0> make_tuple(typename tuple_type<A0>::transparent_reference a0);
+
+template <typename A0, typename A1>
+tuple<A0, A1> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1);
+
+template <typename A0, typename A1, typename A2>
+tuple<A0, A1, A2> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2);
+
+template <typename A0, typename A1, typename A2, typename A3>
+tuple<A0, A1, A2, A3> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4>
+tuple<A0, A1, A2, A3, A4> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
+tuple<A0, A1, A2, A3, A4, A5> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+tuple<A0, A1, A2, A3, A4, A5, A6> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+tuple<A0, A1, A2, A3, A4, A5, A6, A7> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
+tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
+tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
+tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
+tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
+tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
+tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
+tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
+tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
+tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23, typename tuple_type<A24>::transparent_reference a24);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
+tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23, typename tuple_type<A24>::transparent_reference a24, typename tuple_type<A25>::transparent_reference a25);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
+tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23, typename tuple_type<A24>::transparent_reference a24, typename tuple_type<A25>::transparent_reference a25, typename tuple_type<A26>::transparent_reference a26);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
+tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23, typename tuple_type<A24>::transparent_reference a24, typename tuple_type<A25>::transparent_reference a25, typename tuple_type<A26>::transparent_reference a26, typename tuple_type<A27>::transparent_reference a27);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
+tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23, typename tuple_type<A24>::transparent_reference a24, typename tuple_type<A25>::transparent_reference a25, typename tuple_type<A26>::transparent_reference a26, typename tuple_type<A27>::transparent_reference a27, typename tuple_type<A28>::transparent_reference a28);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
+tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23, typename tuple_type<A24>::transparent_reference a24, typename tuple_type<A25>::transparent_reference a25, typename tuple_type<A26>::transparent_reference a26, typename tuple_type<A27>::transparent_reference a27, typename tuple_type<A28>::transparent_reference a28, typename tuple_type<A29>::transparent_reference a29);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
+tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23, typename tuple_type<A24>::transparent_reference a24, typename tuple_type<A25>::transparent_reference a25, typename tuple_type<A26>::transparent_reference a26, typename tuple_type<A27>::transparent_reference a27, typename tuple_type<A28>::transparent_reference a28, typename tuple_type<A29>::transparent_reference a29, typename tuple_type<A30>::transparent_reference a30);
+
+template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
+tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23, typename tuple_type<A24>::transparent_reference a24, typename tuple_type<A25>::transparent_reference a25, typename tuple_type<A26>::transparent_reference a26, typename tuple_type<A27>::transparent_reference a27, typename tuple_type<A28>::transparent_reference a28, typename tuple_type<A29>::transparent_reference a29, typename tuple_type<A30>::transparent_reference a30, typename tuple_type<A31>::transparent_reference a31);
+
+/// @endcond
+
+} // namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_CPP03_MSGPACK_TUPLE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp11_convert_helper.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp11_convert_helper.hpp
new file mode 100644
index 0000000000..f9e29ea61a
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp11_convert_helper.hpp
@@ -0,0 +1,45 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2017 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_CPP11_CONVERT_HELPER_HPP
+#define MSGPACK_V1_CPP11_CONVERT_HELPER_HPP
+
+#include <tuple>
+
+#include <msgpack/object_fwd.hpp>
+
+namespace msgpack {
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+namespace type {
+
+template <typename T>
+inline typename std::enable_if<
+ has_as<T>::value
+>::type
+convert_helper(msgpack::object const& o, T& t) {
+ t = o.as<T>();
+}
+template <typename T>
+inline typename std::enable_if<
+ !has_as<T>::value
+>::type
+convert_helper(msgpack::object const& o, T& t) {
+ o.convert(t);
+}
+
+} // namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+} // namespace msgpack
+
+#endif // MSGPACK_V1_CPP11_CONVERT_HELPER_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp11_define_array.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp11_define_array.hpp
new file mode 100644
index 0000000000..bec4a053bd
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp11_define_array.hpp
@@ -0,0 +1,128 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_CPP11_DEFINE_ARRAY_HPP
+#define MSGPACK_V1_CPP11_DEFINE_ARRAY_HPP
+
+#include "msgpack/v1/adaptor/detail/cpp11_define_array_decl.hpp"
+#include "msgpack/v1/adaptor/detail/cpp11_convert_helper.hpp"
+
+#include <tuple>
+
+namespace msgpack {
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+namespace type {
+
+template <typename Tuple, std::size_t N>
+struct define_array_imp {
+ template <typename Packer>
+ static void pack(Packer& pk, Tuple const& t) {
+ define_array_imp<Tuple, N-1>::pack(pk, t);
+ pk.pack(std::get<N-1>(t));
+ }
+ static void unpack(msgpack::object const& o, Tuple& t) {
+ define_array_imp<Tuple, N-1>::unpack(o, t);
+ const size_t size = o.via.array.size;
+ if(size <= N-1) { return; }
+ convert_helper(o.via.array.ptr[N-1], std::get<N-1>(t));
+ }
+ static void object(msgpack::object* o, msgpack::zone& z, Tuple const& t) {
+ define_array_imp<Tuple, N-1>::object(o, z, t);
+ o->via.array.ptr[N-1] = msgpack::object(std::get<N-1>(t), z);
+ }
+};
+
+template <typename Tuple>
+struct define_array_imp<Tuple, 1> {
+ template <typename Packer>
+ static void pack(Packer& pk, Tuple const& t) {
+ pk.pack(std::get<0>(t));
+ }
+ static void unpack(msgpack::object const& o, Tuple& t) {
+ const size_t size = o.via.array.size;
+ if(size <= 0) { return; }
+ convert_helper(o.via.array.ptr[0], std::get<0>(t));
+ }
+ static void object(msgpack::object* o, msgpack::zone& z, Tuple const& t) {
+ o->via.array.ptr[0] = msgpack::object(std::get<0>(t), z);
+ }
+};
+
+template <typename... Args>
+struct define_array {
+ typedef define_array<Args...> value_type;
+ typedef std::tuple<Args...> tuple_type;
+ define_array(Args&... args) :
+ a(args...) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(sizeof...(Args));
+
+ define_array_imp<std::tuple<Args&...>, sizeof...(Args)>::pack(pk, a);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+
+ define_array_imp<std::tuple<Args&...>, sizeof...(Args)>::unpack(o, a);
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*sizeof...(Args), MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o->via.array.size = sizeof...(Args);
+
+ define_array_imp<std::tuple<Args&...>, sizeof...(Args)>::object(o, z, a);
+ }
+
+ std::tuple<Args&...> a;
+};
+
+template <>
+struct define_array<> {
+ typedef define_array<> value_type;
+ typedef std::tuple<> tuple_type;
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ pk.pack_array(0);
+ }
+ void msgpack_unpack(msgpack::object const& o)
+ {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone&) const
+ {
+ o->type = msgpack::type::ARRAY;
+ o->via.array.ptr = NULL;
+ o->via.array.size = 0;
+ }
+};
+
+inline define_array<> make_define_array()
+{
+ return define_array<>();
+}
+
+template <typename... Args>
+inline define_array<Args...> make_define_array(Args&... args)
+{
+ return define_array<Args...>(args...);
+}
+
+} // namespace type
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+} // namespace msgpack
+
+#endif // MSGPACK_V1_CPP11_DEFINE_ARRAY_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp11_define_array_decl.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp11_define_array_decl.hpp
new file mode 100644
index 0000000000..6333f660a9
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp11_define_array_decl.hpp
@@ -0,0 +1,39 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_CPP11_DEFINE_ARRAY_DECL_HPP
+#define MSGPACK_V1_CPP11_DEFINE_ARRAY_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+
+namespace msgpack {
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+namespace type {
+
+template <typename Tuple, std::size_t N>
+struct define_array_imp;
+
+template <typename... Args>
+struct define_array;
+
+define_array<> make_define_array();
+
+template <typename... Args>
+inline define_array<Args...> make_define_array(Args&... args);
+
+} // namespace type
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+} // namespace msgpack
+
+#endif // MSGPACK_V1_CPP11_DEFINE_ARRAY_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp11_define_map.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp11_define_map.hpp
new file mode 100644
index 0000000000..d1ab70150f
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp11_define_map.hpp
@@ -0,0 +1,110 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_CPP11_DEFINE_MAP_HPP
+#define MSGPACK_V1_CPP11_DEFINE_MAP_HPP
+
+#include "msgpack/v1/adaptor/detail/cpp11_define_map_decl.hpp"
+#include "msgpack/v1/adaptor/detail/cpp11_convert_helper.hpp"
+
+#include <tuple>
+#include <map>
+
+namespace msgpack {
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+namespace type {
+
+template <typename Tuple, std::size_t N>
+struct define_map_imp {
+ template <typename Packer>
+ static void pack(Packer& pk, Tuple const& t) {
+ define_map_imp<Tuple, N-1>::pack(pk, t);
+ pk.pack(std::get<N-1>(t));
+ }
+ static void unpack(
+ msgpack::object const& o, Tuple const& t,
+ std::map<std::string, msgpack::object const*> const& kvmap) {
+ define_map_imp<Tuple, N-2>::unpack(o, t, kvmap);
+ auto it = kvmap.find(std::get<N-2>(t));
+ if (it != kvmap.end()) {
+ convert_helper(*it->second, std::get<N-1>(t));
+ }
+ }
+ static void object(msgpack::object* o, msgpack::zone& z, Tuple const& t) {
+ define_map_imp<Tuple, N-2>::object(o, z, t);
+ o->via.map.ptr[(N-1)/2].key = msgpack::object(std::get<N-2>(t), z);
+ o->via.map.ptr[(N-1)/2].val = msgpack::object(std::get<N-1>(t), z);
+ }
+};
+
+template <typename Tuple>
+struct define_map_imp<Tuple, 0> {
+ template <typename Packer>
+ static void pack(Packer&, Tuple const&) {}
+ static void unpack(
+ msgpack::object const&, Tuple const&,
+ std::map<std::string, msgpack::object const*> const&) {}
+ static void object(msgpack::object*, msgpack::zone&, Tuple const&) {}
+};
+
+template <typename... Args>
+struct define_map {
+ define_map(Args&... args) :
+ a(args...) {}
+ template <typename Packer>
+ void msgpack_pack(Packer& pk) const
+ {
+ static_assert(sizeof...(Args) % 2 == 0, "");
+ pk.pack_map(sizeof...(Args) / 2);
+
+ define_map_imp<std::tuple<Args&...>, sizeof...(Args)>::pack(pk, a);
+ }
+ void msgpack_unpack(msgpack::object const& o) const
+ {
+ if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ std::map<std::string, msgpack::object const*> kvmap;
+ for (uint32_t i = 0; i < o.via.map.size; ++i) {
+ if (o.via.map.ptr[i].key.type != msgpack::type::STR) { throw msgpack::type_error(); }
+ kvmap.emplace(
+ std::string(
+ o.via.map.ptr[i].key.via.str.ptr,
+ o.via.map.ptr[i].key.via.str.size),
+ &o.via.map.ptr[i].val);
+ }
+ define_map_imp<std::tuple<Args&...>, sizeof...(Args)>::unpack(o, a, kvmap);
+ }
+ void msgpack_object(msgpack::object* o, msgpack::zone& z) const
+ {
+ static_assert(sizeof...(Args) % 2 == 0, "");
+ o->type = msgpack::type::MAP;
+ o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*sizeof...(Args)/2, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
+ o->via.map.size = sizeof...(Args) / 2;
+
+ define_map_imp<std::tuple<Args&...>, sizeof...(Args)>::object(o, z, a);
+ }
+
+ std::tuple<Args&...> a;
+};
+
+
+template <typename... Args>
+inline define_map<Args...> make_define_map(Args&... args)
+{
+ return define_map<Args...>(args...);
+}
+
+} // namespace type
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+} // namespace msgpack
+
+#endif // MSGPACK_V1_CPP11_DEFINE_MAP_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp11_define_map_decl.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp11_define_map_decl.hpp
new file mode 100644
index 0000000000..403e68c079
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp11_define_map_decl.hpp
@@ -0,0 +1,37 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_CPP11_DEFINE_MAP_DECL_HPP
+#define MSGPACK_V1_CPP11_DEFINE_MAP_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+
+namespace msgpack {
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+namespace type {
+
+template <typename Tuple, std::size_t N>
+struct define_map_imp;
+
+template <typename... Args>
+struct define_map;
+
+template <typename... Args>
+define_map<Args...> make_define_map(Args&... args);
+
+} // namespace type
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+} // namespace msgpack
+
+#endif // MSGPACK_V1_CPP11_DEFINE_MAP_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp11_msgpack_tuple.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp11_msgpack_tuple.hpp
new file mode 100644
index 0000000000..9aa0c31a49
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp11_msgpack_tuple.hpp
@@ -0,0 +1,220 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_CPP11_MSGPACK_TUPLE_HPP
+#define MSGPACK_V1_CPP11_MSGPACK_TUPLE_HPP
+
+#include "msgpack/v1/adaptor/detail/cpp11_msgpack_tuple_decl.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/pack.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace type {
+
+template <class... Args>
+inline tuple<Args...> make_tuple(Args&&... args) {
+ return tuple<Args...>(std::forward<Args>(args)...);
+}
+
+template<class... Args>
+inline tuple<Args&&...> forward_as_tuple (Args&&... args) noexcept {
+ return tuple<Args&&...>(std::forward<Args>(args)...);
+}
+
+template <class... Tuples>
+inline auto tuple_cat(Tuples&&... args) ->
+ decltype(
+ std::tuple_cat(std::forward<typename std::remove_reference<Tuples>::type::base>(args)...)
+ ) {
+ return std::tuple_cat(std::forward<typename std::remove_reference<Tuples>::type::base>(args)...);
+}
+
+template <class... Args>
+inline tuple<Args&...> tie(Args&... args) {
+ return tuple<Args&...>(args...);
+}
+} // namespace type
+
+// --- Pack from tuple to packer stream ---
+template <typename Stream, typename Tuple, std::size_t N>
+struct MsgpackTuplePacker {
+ static void pack(
+ msgpack::packer<Stream>& o,
+ const Tuple& v) {
+ MsgpackTuplePacker<Stream, Tuple, N-1>::pack(o, v);
+ o.pack(type::get<N-1>(v));
+ }
+};
+
+template <typename Stream, typename Tuple>
+struct MsgpackTuplePacker<Stream, Tuple, 1> {
+ static void pack (
+ msgpack::packer<Stream>& o,
+ const Tuple& v) {
+ o.pack(type::get<0>(v));
+ }
+};
+
+template <typename Stream, typename Tuple>
+struct MsgpackTuplePacker<Stream, Tuple, 0> {
+ static void pack (
+ msgpack::packer<Stream>&,
+ const Tuple&) {
+ }
+};
+
+namespace adaptor {
+
+template <typename... Args>
+struct pack<msgpack::type::tuple<Args...>> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(
+ msgpack::packer<Stream>& o,
+ const msgpack::type::tuple<Args...>& v) const {
+ o.pack_array(sizeof...(Args));
+ MsgpackTuplePacker<Stream, decltype(v), sizeof...(Args)>::pack(o, v);
+ return o;
+ }
+};
+
+} // namespace adaptor
+
+// --- Convert from tuple to object ---
+
+template <typename T, typename... Args>
+struct MsgpackTupleAsImpl {
+ static msgpack::type::tuple<T, Args...> as(msgpack::object const& o) {
+ return msgpack::type::tuple_cat(
+ msgpack::type::make_tuple(o.via.array.ptr[o.via.array.size - sizeof...(Args) - 1].as<T>()),
+ MsgpackTupleAs<Args...>::as(o));
+ }
+};
+
+template <typename... Args>
+struct MsgpackTupleAs {
+ static msgpack::type::tuple<Args...> as(msgpack::object const& o) {
+ return MsgpackTupleAsImpl<Args...>::as(o);
+ }
+};
+
+template <>
+struct MsgpackTupleAs<> {
+ static msgpack::type::tuple<> as (msgpack::object const&) {
+ return msgpack::type::tuple<>();
+ }
+};
+
+template <typename Tuple, std::size_t N>
+struct MsgpackTupleConverter {
+ static void convert(
+ msgpack::object const& o,
+ Tuple& v) {
+ MsgpackTupleConverter<Tuple, N-1>::convert(o, v);
+ if (o.via.array.size >= N)
+ o.via.array.ptr[N-1].convert<typename std::remove_reference<decltype(type::get<N-1>(v))>::type>(type::get<N-1>(v));
+ }
+};
+
+template <typename Tuple>
+struct MsgpackTupleConverter<Tuple, 1> {
+ static void convert (
+ msgpack::object const& o,
+ Tuple& v) {
+ o.via.array.ptr[0].convert<typename std::remove_reference<decltype(type::get<0>(v))>::type>(type::get<0>(v));
+ }
+};
+
+template <typename Tuple>
+struct MsgpackTupleConverter<Tuple, 0> {
+ static void convert (
+ msgpack::object const&,
+ Tuple&) {
+ }
+};
+
+namespace adaptor {
+
+template <typename... Args>
+struct as<msgpack::type::tuple<Args...>, typename std::enable_if<msgpack::any_of<msgpack::has_as, Args...>::value>::type> {
+ msgpack::type::tuple<Args...> operator()(
+ msgpack::object const& o) const {
+ if (o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ return MsgpackTupleAs<Args...>::as(o);
+ }
+};
+
+template <typename... Args>
+struct convert<msgpack::type::tuple<Args...>> {
+ msgpack::object const& operator()(
+ msgpack::object const& o,
+ msgpack::type::tuple<Args...>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ MsgpackTupleConverter<decltype(v), sizeof...(Args)>::convert(o, v);
+ return o;
+ }
+};
+
+} // namespace adaptor
+
+// --- Convert from tuple to object with zone ---
+template <typename Tuple, std::size_t N>
+struct MsgpackTupleToObjectWithZone {
+ static void convert(
+ msgpack::object::with_zone& o,
+ const Tuple& v) {
+ MsgpackTupleToObjectWithZone<Tuple, N-1>::convert(o, v);
+ o.via.array.ptr[N-1] = msgpack::object(type::get<N-1>(v), o.zone);
+ }
+};
+
+template <typename Tuple>
+struct MsgpackTupleToObjectWithZone<Tuple, 1> {
+ static void convert (
+ msgpack::object::with_zone& o,
+ const Tuple& v) {
+ o.via.array.ptr[0] = msgpack::object(type::get<0>(v), o.zone);
+ }
+};
+
+template <typename Tuple>
+struct MsgpackTupleToObjectWithZone<Tuple, 0> {
+ static void convert (
+ msgpack::object::with_zone&,
+ const Tuple&) {
+ }
+};
+
+namespace adaptor {
+
+template <typename... Args>
+ struct object_with_zone<msgpack::type::tuple<Args...>> {
+ void operator()(
+ msgpack::object::with_zone& o,
+ msgpack::type::tuple<Args...> const& v) const {
+ o.type = msgpack::type::ARRAY;
+ o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*sizeof...(Args), MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.size = sizeof...(Args);
+ MsgpackTupleToObjectWithZone<decltype(v), sizeof...(Args)>::convert(o, v);
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+///@endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_CPP11_MSGPACK_TUPLE_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp11_msgpack_tuple_decl.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp11_msgpack_tuple_decl.hpp
new file mode 100644
index 0000000000..9b6d5d4959
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/detail/cpp11_msgpack_tuple_decl.hpp
@@ -0,0 +1,120 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2015 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_CPP11_MSGPACK_TUPLE_DECL_HPP
+#define MSGPACK_V1_CPP11_MSGPACK_TUPLE_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/object_fwd.hpp"
+#include "msgpack/meta.hpp"
+
+#include <tuple>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace type {
+ // tuple
+ using std::get;
+ using std::tuple_size;
+ using std::tuple_element;
+ using std::uses_allocator;
+ using std::ignore;
+ using std::swap;
+
+ template< class... Types >
+ class tuple : public std::tuple<Types...> {
+ public:
+ using base = std::tuple<Types...>;
+
+ tuple(tuple const&) = default;
+ tuple(tuple&&) = default;
+
+ template<typename... OtherTypes>
+ tuple(OtherTypes&&... other):base(std::forward<OtherTypes>(other)...) {}
+
+ template<typename... OtherTypes>
+ tuple(tuple<OtherTypes...> const& other):base(static_cast<std::tuple<OtherTypes...> const&>(other)) {}
+ template<typename... OtherTypes>
+ tuple(tuple<OtherTypes...> && other):base(static_cast<std::tuple<OtherTypes...> &&>(other)) {}
+
+ tuple& operator=(tuple const&) = default;
+ tuple& operator=(tuple&&) = default;
+
+ template<typename... OtherTypes>
+ tuple& operator=(tuple<OtherTypes...> const& other) {
+ *static_cast<base*>(this) = static_cast<std::tuple<OtherTypes...> const&>(other);
+ return *this;
+ }
+ template<typename... OtherTypes>
+ tuple& operator=(tuple<OtherTypes...> && other) {
+ *static_cast<base*>(this) = static_cast<std::tuple<OtherTypes...> &&>(other);
+ return *this;
+ }
+
+ template< std::size_t I>
+ typename tuple_element<I, base >::type&
+ get() & { return std::get<I>(*this); }
+
+ template< std::size_t I>
+ typename tuple_element<I, base >::type const&
+ get() const& { return std::get<I>(*this); }
+
+ template< std::size_t I>
+ typename tuple_element<I, base >::type&&
+ get() && { return std::get<I>(*this); }
+
+ std::size_t size() const { return sizeof...(Types); }
+ };
+
+ template <class... Args>
+ tuple<Args...> make_tuple(Args&&... args);
+
+ template<class... Args>
+ tuple<Args&&...> forward_as_tuple (Args&&... args) noexcept;
+
+ template <class... Tuples>
+ auto tuple_cat(Tuples&&... args) ->
+ decltype(
+ std::tuple_cat(std::forward<typename std::remove_reference<Tuples>::type::base>(args)...)
+ );
+
+ template <class... Args>
+ tuple<Args&...> tie(Args&... args);
+
+} // namespace type
+
+// --- Pack from tuple to packer stream ---
+template <typename Stream, typename Tuple, std::size_t N>
+struct MsgpackTuplePacker;
+
+// --- Convert from tuple to object ---
+template <typename... Args>
+struct MsgpackTupleAs;
+
+template <typename T, typename... Args>
+struct MsgpackTupleAsImpl;
+
+template <typename Tuple, std::size_t N>
+struct MsgpackTupleConverter;
+
+// --- Convert from tuple to object with zone ---
+template <typename Tuple, std::size_t N>
+struct MsgpackTupleToObjectWithZone;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+///@endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_CPP11_MSGPACK_TUPLE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/ext.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/ext.hpp
new file mode 100644
index 0000000000..de375975fb
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/ext.hpp
@@ -0,0 +1,236 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015-2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_EXT_HPP
+#define MSGPACK_V1_TYPE_EXT_HPP
+
+#include "msgpack/v1/adaptor/ext_decl.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+#include <cstring>
+#include <string>
+#include <cassert>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace type {
+
+class ext {
+public:
+ ext() : m_data(1, 0) {}
+ ext(int8_t t, const char* p, uint32_t s) {
+ msgpack::detail::check_container_size_for_ext<sizeof(std::size_t)>(s);
+ m_data.reserve(static_cast<std::size_t>(s) + 1);
+ m_data.push_back(static_cast<char>(t));
+ m_data.insert(m_data.end(), p, p + s);
+ }
+ ext(int8_t t, uint32_t s) {
+ msgpack::detail::check_container_size_for_ext<sizeof(std::size_t)>(s);
+ m_data.resize(static_cast<std::size_t>(s) + 1);
+ m_data[0] = static_cast<char>(t);
+ }
+ ext(ext_ref const&);
+ int8_t type() const {
+ return static_cast<int8_t>(m_data[0]);
+ }
+ const char* data() const {
+ return &m_data[0] + 1;
+ }
+ char* data() {
+ return &m_data[0] + 1;
+ }
+ uint32_t size() const {
+ return static_cast<uint32_t>(m_data.size()) - 1;
+ }
+ bool operator== (const ext& x) const {
+ return m_data == x.m_data;
+ }
+
+ bool operator!= (const ext& x) const {
+ return !(*this == x);
+ }
+
+ bool operator< (const ext& x) const {
+ return m_data < x.m_data;
+ }
+
+ bool operator> (const ext& x) const {
+ return m_data > x.m_data;
+ }
+private:
+ std::vector<char> m_data;
+ friend class ext_ref;
+};
+
+} // namespace type
+
+namespace adaptor {
+
+template <>
+struct convert<msgpack::type::ext> {
+ msgpack::object const& operator()(msgpack::object const& o, msgpack::type::ext& v) const {
+ if(o.type != msgpack::type::EXT) {
+ throw msgpack::type_error();
+ }
+ v = msgpack::type::ext(o.via.ext.type(), o.via.ext.data(), o.via.ext.size);
+ return o;
+ }
+};
+
+template <>
+struct pack<msgpack::type::ext> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const msgpack::type::ext& v) const {
+ // size limit has already been checked at ext's constructor
+ uint32_t size = v.size();
+ o.pack_ext(size, v.type());
+ o.pack_ext_body(v.data(), size);
+ return o;
+ }
+};
+
+template <>
+struct object_with_zone<msgpack::type::ext> {
+ void operator()(msgpack::object::with_zone& o, const msgpack::type::ext& v) const {
+ // size limit has already been checked at ext's constructor
+ uint32_t size = v.size();
+ o.type = msgpack::type::EXT;
+ char* ptr = static_cast<char*>(o.zone.allocate_align(size + 1, MSGPACK_ZONE_ALIGNOF(char)));
+ o.via.ext.ptr = ptr;
+ o.via.ext.size = size;
+ ptr[0] = static_cast<char>(v.type());
+ std::memcpy(ptr + 1, v.data(), size);
+ }
+};
+
+} // namespace adaptor
+
+namespace type {
+
+class ext_ref {
+public:
+ // ext_ref should be default constructible to support 'convert'.
+ // A default constructed ext_ref object::m_ptr doesn't have the buffer to point to.
+ // In order to avoid nullptr checking branches, m_ptr points to m_size.
+ // So type() returns unspecified but valid value. It might be a zero because m_size
+ // is initialized as zero, but shouldn't assume that.
+ ext_ref() : m_ptr(static_cast<char*>(static_cast<void*>(&m_size))), m_size(0) {}
+ ext_ref(const char* p, uint32_t s) :
+ m_ptr(s == 0 ? static_cast<char*>(static_cast<void*>(&m_size)) : p),
+ m_size(s == 0 ? 0 : s - 1) {
+ msgpack::detail::check_container_size_for_ext<sizeof(std::size_t)>(s);
+ }
+
+ // size limit has already been checked at ext's constructor
+ ext_ref(ext const& x) : m_ptr(&x.m_data[0]), m_size(x.size()) {}
+
+ const char* data() const {
+ return m_ptr + 1;
+ }
+
+ uint32_t size() const {
+ return m_size;
+ }
+
+ int8_t type() const {
+ return static_cast<int8_t>(m_ptr[0]);
+ }
+
+ std::string str() const {
+ return std::string(m_ptr + 1, m_size);
+ }
+
+ bool operator== (const ext_ref& x) const {
+ return m_size == x.m_size && std::memcmp(m_ptr, x.m_ptr, m_size) == 0;
+ }
+
+ bool operator!= (const ext_ref& x) const {
+ return !(*this == x);
+ }
+
+ bool operator< (const ext_ref& x) const {
+ if (m_size < x.m_size) return true;
+ if (m_size > x.m_size) return false;
+ return std::memcmp(m_ptr, x.m_ptr, m_size) < 0;
+ }
+
+ bool operator> (const ext_ref& x) const {
+ if (m_size > x.m_size) return true;
+ if (m_size < x.m_size) return false;
+ return std::memcmp(m_ptr, x.m_ptr, m_size) > 0;
+ }
+private:
+ const char* m_ptr;
+ uint32_t m_size;
+ friend struct adaptor::object<msgpack::type::ext_ref>;
+};
+
+inline ext::ext(ext_ref const& x) {
+ // size limit has already been checked at ext_ref's constructor
+ m_data.reserve(x.size() + 1);
+
+ m_data.push_back(x.type());
+ m_data.insert(m_data.end(), x.data(), x.data() + x.size());
+}
+
+} // namespace type
+
+namespace adaptor {
+
+template <>
+struct convert<msgpack::type::ext_ref> {
+ msgpack::object const& operator()(msgpack::object const& o, msgpack::type::ext_ref& v) const {
+ if(o.type != msgpack::type::EXT) { throw msgpack::type_error(); }
+ v = msgpack::type::ext_ref(o.via.ext.ptr, o.via.ext.size + 1);
+ return o;
+ }
+};
+
+template <>
+struct pack<msgpack::type::ext_ref> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const msgpack::type::ext_ref& v) const {
+ // size limit has already been checked at ext_ref's constructor
+ uint32_t size = v.size();
+ o.pack_ext(size, v.type());
+ o.pack_ext_body(v.data(), size);
+ return o;
+ }
+};
+
+template <>
+struct object<msgpack::type::ext_ref> {
+ void operator()(msgpack::object& o, const msgpack::type::ext_ref& v) const {
+ // size limit has already been checked at ext_ref's constructor
+ uint32_t size = v.size();
+ o.type = msgpack::type::EXT;
+ o.via.ext.ptr = v.m_ptr;
+ o.via.ext.size = size;
+ }
+};
+
+template <>
+struct object_with_zone<msgpack::type::ext_ref> {
+ void operator()(msgpack::object::with_zone& o, const msgpack::type::ext_ref& v) const {
+ static_cast<msgpack::object&>(o) << v;
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_EXT_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/ext_decl.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/ext_decl.hpp
new file mode 100644
index 0000000000..df5bd19965
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/ext_decl.hpp
@@ -0,0 +1,38 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015-2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_EXT_DECL_HPP
+#define MSGPACK_V1_TYPE_EXT_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include <cstring>
+#include <string>
+#include <cassert>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace type {
+
+class ext_ref;
+class ext;
+
+} // namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_EXT_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/fixint.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/fixint.hpp
new file mode 100644
index 0000000000..7361edf9d6
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/fixint.hpp
@@ -0,0 +1,299 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_FIXINT_HPP
+#define MSGPACK_V1_TYPE_FIXINT_HPP
+
+#include "msgpack/v1/adaptor/fixint_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace type {
+
+template <typename T>
+struct fix_int {
+ fix_int() : value(0) { }
+ fix_int(T value) : value(value) { }
+
+ operator T() const { return value; }
+
+ T get() const { return value; }
+
+private:
+ T value;
+};
+
+} // namespace type
+
+namespace adaptor {
+
+template <>
+struct convert<type::fix_int8> {
+ msgpack::object const& operator()(msgpack::object const& o, type::fix_int8& v) const
+ { v = type::detail::convert_integer<int8_t>(o); return o; }
+};
+
+template <>
+struct convert<type::fix_int16> {
+ msgpack::object const& operator()(msgpack::object const& o, type::fix_int16& v) const
+ { v = type::detail::convert_integer<int16_t>(o); return o; }
+};
+
+template <>
+struct convert<type::fix_int32> {
+ msgpack::object const& operator()(msgpack::object const& o, type::fix_int32& v) const
+ { v = type::detail::convert_integer<int32_t>(o); return o; }
+};
+
+template <>
+struct convert<type::fix_int64> {
+ msgpack::object const& operator()(msgpack::object const& o, type::fix_int64& v) const
+ { v = type::detail::convert_integer<int64_t>(o); return o; }
+};
+
+
+template <>
+struct convert<type::fix_uint8> {
+ msgpack::object const& operator()(msgpack::object const& o, type::fix_uint8& v) const
+ { v = type::detail::convert_integer<uint8_t>(o); return o; }
+};
+
+template <>
+struct convert<type::fix_uint16> {
+ msgpack::object const& operator()(msgpack::object const& o, type::fix_uint16& v) const
+ { v = type::detail::convert_integer<uint16_t>(o); return o; }
+};
+
+template <>
+struct convert<type::fix_uint32> {
+ msgpack::object const& operator()(msgpack::object const& o, type::fix_uint32& v) const
+ { v = type::detail::convert_integer<uint32_t>(o); return o; }
+};
+
+template <>
+struct convert<type::fix_uint64> {
+ msgpack::object const& operator()(msgpack::object const& o, type::fix_uint64& v) const
+ { v = type::detail::convert_integer<uint64_t>(o); return o; }
+};
+
+template <>
+struct pack<type::fix_int8> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const type::fix_int8& v) const
+ { o.pack_fix_int8(v); return o; }
+};
+
+template <>
+struct pack<type::fix_int16> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const type::fix_int16& v) const
+ { o.pack_fix_int16(v); return o; }
+};
+
+template <>
+struct pack<type::fix_int32> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const type::fix_int32& v) const
+ { o.pack_fix_int32(v); return o; }
+};
+
+template <>
+struct pack<type::fix_int64> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const type::fix_int64& v) const
+ { o.pack_fix_int64(v); return o; }
+};
+
+
+template <>
+struct pack<type::fix_uint8> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const type::fix_uint8& v) const
+ { o.pack_fix_uint8(v); return o; }
+};
+
+template <>
+struct pack<type::fix_uint16> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const type::fix_uint16& v) const
+ { o.pack_fix_uint16(v); return o; }
+};
+
+template <>
+struct pack<type::fix_uint32> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const type::fix_uint32& v) const
+ { o.pack_fix_uint32(v); return o; }
+};
+
+template <>
+struct pack<type::fix_uint64> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const type::fix_uint64& v) const
+ { o.pack_fix_uint64(v); return o; }
+};
+
+template <>
+struct object<type::fix_int8> {
+ void operator()(msgpack::object& o, type::fix_int8 v) const {
+ if (v.get() < 0) {
+ o.type = msgpack::type::NEGATIVE_INTEGER;
+ o.via.i64 = v.get();
+ }
+ else {
+ o.type = msgpack::type::POSITIVE_INTEGER;
+ o.via.u64 = v.get();
+ }
+ }
+};
+
+template <>
+struct object<type::fix_int16> {
+ void operator()(msgpack::object& o, type::fix_int16 v) const {
+ if(v.get() < 0) {
+ o.type = msgpack::type::NEGATIVE_INTEGER;
+ o.via.i64 = v.get();
+ }
+ else {
+ o.type = msgpack::type::POSITIVE_INTEGER;
+ o.via.u64 = v.get();
+ }
+ }
+};
+
+template <>
+struct object<type::fix_int32> {
+ void operator()(msgpack::object& o, type::fix_int32 v) const {
+ if (v.get() < 0) {
+ o.type = msgpack::type::NEGATIVE_INTEGER;
+ o.via.i64 = v.get();
+ }
+ else {
+ o.type = msgpack::type::POSITIVE_INTEGER;
+ o.via.u64 = v.get();
+ }
+ }
+};
+
+template <>
+struct object<type::fix_int64> {
+ void operator()(msgpack::object& o, type::fix_int64 v) const {
+ if (v.get() < 0) {
+ o.type = msgpack::type::NEGATIVE_INTEGER;
+ o.via.i64 = v.get();
+ }
+ else {
+ o.type = msgpack::type::POSITIVE_INTEGER;
+ o.via.u64 = v.get();
+ }
+ }
+};
+
+template <>
+struct object<type::fix_uint8> {
+ void operator()(msgpack::object& o, type::fix_uint8 v) const {
+ o.type = msgpack::type::POSITIVE_INTEGER;
+ o.via.u64 = v.get();
+ }
+};
+
+template <>
+struct object<type::fix_uint16> {
+ void operator()(msgpack::object& o, type::fix_uint16 v) const {
+ o.type = msgpack::type::POSITIVE_INTEGER;
+ o.via.u64 = v.get();
+ }
+};
+
+template <>
+struct object<type::fix_uint32> {
+ void operator()(msgpack::object& o, type::fix_uint32 v) const {
+ o.type = msgpack::type::POSITIVE_INTEGER;
+ o.via.u64 = v.get();
+ }
+};
+
+template <>
+struct object<type::fix_uint64> {
+ void operator()(msgpack::object& o, type::fix_uint64 v) const {
+ o.type = msgpack::type::POSITIVE_INTEGER;
+ o.via.u64 = v.get();
+ }
+};
+
+template <>
+struct object_with_zone<type::fix_int8> {
+ void operator()(msgpack::object::with_zone& o, type::fix_int8 v) const {
+ static_cast<msgpack::object&>(o) << v;
+ }
+};
+
+template <>
+struct object_with_zone<type::fix_int16> {
+ void operator()(msgpack::object::with_zone& o, type::fix_int16 v) const {
+ static_cast<msgpack::object&>(o) << v;
+ }
+};
+
+template <>
+struct object_with_zone<type::fix_int32> {
+ void operator()(msgpack::object::with_zone& o, type::fix_int32 v) const {
+ static_cast<msgpack::object&>(o) << v;
+ }
+};
+
+template <>
+struct object_with_zone<type::fix_int64> {
+ void operator()(msgpack::object::with_zone& o, type::fix_int64 v) const {
+ static_cast<msgpack::object&>(o) << v;
+ }
+};
+
+
+template <>
+struct object_with_zone<type::fix_uint8> {
+ void operator()(msgpack::object::with_zone& o, type::fix_uint8 v) const {
+ static_cast<msgpack::object&>(o) << v;
+ }
+};
+
+template <>
+struct object_with_zone<type::fix_uint16> {
+ void operator()(msgpack::object::with_zone& o, type::fix_uint16 v) const {
+ static_cast<msgpack::object&>(o) << v;
+ }
+};
+
+template <>
+struct object_with_zone<type::fix_uint32> {
+ void operator()(msgpack::object::with_zone& o, type::fix_uint32 v) const {
+ static_cast<msgpack::object&>(o) << v;
+ }
+};
+
+template <>
+struct object_with_zone<type::fix_uint64> {
+ void operator()(msgpack::object::with_zone& o, type::fix_uint64 v) const {
+ static_cast<msgpack::object&>(o) << v;
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_FIXINT_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/fixint_decl.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/fixint_decl.hpp
new file mode 100644
index 0000000000..1c4a439a9c
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/fixint_decl.hpp
@@ -0,0 +1,46 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_FIXINT_DECL_HPP
+#define MSGPACK_V1_TYPE_FIXINT_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/int.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace type {
+
+template <typename T>
+struct fix_int;
+
+typedef fix_int<uint8_t> fix_uint8;
+typedef fix_int<uint16_t> fix_uint16;
+typedef fix_int<uint32_t> fix_uint32;
+typedef fix_int<uint64_t> fix_uint64;
+
+typedef fix_int<int8_t> fix_int8;
+typedef fix_int<int16_t> fix_int16;
+typedef fix_int<int32_t> fix_int32;
+typedef fix_int<int64_t> fix_int64;
+
+} // namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_FIXINT_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/float.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/float.hpp
new file mode 100644
index 0000000000..ae075fc620
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/float.hpp
@@ -0,0 +1,123 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2009 FURUHASHI Sadayuki
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_FLOAT_HPP
+#define MSGPACK_V1_TYPE_FLOAT_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/object_fwd.hpp"
+#include <vector>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+// FIXME check overflow, underflow
+
+namespace adaptor {
+
+template <>
+struct convert<float> {
+ msgpack::object const& operator()(msgpack::object const& o, float& v) const {
+ if(o.type == msgpack::type::FLOAT32 || o.type == msgpack::type::FLOAT64) {
+ v = static_cast<float>(o.via.f64);
+ }
+ else if (o.type == msgpack::type::POSITIVE_INTEGER) {
+ v = static_cast<float>(o.via.u64);
+ }
+ else if (o.type == msgpack::type::NEGATIVE_INTEGER) {
+ v = static_cast<float>(o.via.i64);
+ }
+ else {
+ throw msgpack::type_error();
+ }
+ return o;
+ }
+};
+
+template <>
+struct pack<float> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const float& v) const {
+ o.pack_float(v);
+ return o;
+ }
+};
+
+
+template <>
+struct convert<double> {
+ msgpack::object const& operator()(msgpack::object const& o, double& v) const {
+ if(o.type == msgpack::type::FLOAT32 || o.type == msgpack::type::FLOAT64) {
+ v = o.via.f64;
+ }
+ else if (o.type == msgpack::type::POSITIVE_INTEGER) {
+ v = static_cast<double>(o.via.u64);
+ }
+ else if (o.type == msgpack::type::NEGATIVE_INTEGER) {
+ v = static_cast<double>(o.via.i64);
+ }
+ else {
+ throw msgpack::type_error();
+ }
+ return o;
+ }
+};
+
+template <>
+struct pack<double> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const double& v) const {
+ o.pack_double(v);
+ return o;
+ }
+};
+
+
+template <>
+struct object<float> {
+ void operator()(msgpack::object& o, float v) const {
+ o.type = msgpack::type::FLOAT32;
+ o.via.f64 = static_cast<double>(v);
+ }
+};
+
+template <>
+struct object<double> {
+ void operator()(msgpack::object& o, double v) const {
+ o.type = msgpack::type::FLOAT64;
+ o.via.f64 = v;
+ }
+};
+
+template <>
+struct object_with_zone<float> {
+ void operator()(msgpack::object::with_zone& o, float v) const {
+ static_cast<msgpack::object&>(o) << v;
+ }
+};
+
+template <>
+struct object_with_zone<double> {
+ void operator()(msgpack::object::with_zone& o, double v) const {
+ static_cast<msgpack::object&>(o) << v;
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_FLOAT_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/int.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/int.hpp
new file mode 100644
index 0000000000..962e66ff9e
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/int.hpp
@@ -0,0 +1,448 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_INT_HPP
+#define MSGPACK_V1_TYPE_INT_HPP
+
+#include "msgpack/v1/adaptor/int_decl.hpp"
+#include "msgpack/object.hpp"
+
+#include <limits>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1){
+/// @endcond
+
+namespace type {
+namespace detail {
+
+template <typename T>
+struct convert_integer_sign<T, true> {
+ static T convert(msgpack::object const& o) {
+ if(o.type == msgpack::type::POSITIVE_INTEGER) {
+ if(o.via.u64 > static_cast<uint64_t>(std::numeric_limits<T>::max()))
+ { throw msgpack::type_error(); }
+ return static_cast<T>(o.via.u64);
+ } else if(o.type == msgpack::type::NEGATIVE_INTEGER) {
+ if(o.via.i64 < static_cast<int64_t>(std::numeric_limits<T>::min()))
+ { throw msgpack::type_error(); }
+ return static_cast<T>(o.via.i64);
+ }
+ throw msgpack::type_error();
+ }
+};
+
+template <typename T>
+struct convert_integer_sign<T, false> {
+ static T convert(msgpack::object const& o) {
+ if(o.type == msgpack::type::POSITIVE_INTEGER) {
+ if(o.via.u64 > static_cast<uint64_t>(std::numeric_limits<T>::max()))
+ { throw msgpack::type_error(); }
+ return static_cast<T>(o.via.u64);
+ }
+ throw msgpack::type_error();
+ }
+};
+
+template <typename T>
+struct is_signed {
+ static const bool value = std::numeric_limits<T>::is_signed;
+};
+
+template <typename T>
+inline T convert_integer(msgpack::object const& o)
+{
+ return detail::convert_integer_sign<T, is_signed<T>::value>::convert(o);
+}
+
+template <>
+struct object_char_sign<true> {
+ template <typename T>
+ static typename msgpack::enable_if<msgpack::is_same<T, char>::value>::type
+ make(msgpack::object& o, T v) {
+ if (v < 0) {
+ o.type = msgpack::type::NEGATIVE_INTEGER;
+ o.via.i64 = v;
+ }
+ else {
+ o.type = msgpack::type::POSITIVE_INTEGER;
+ o.via.u64 = v;
+ }
+ }
+};
+
+template <>
+struct object_char_sign<false> {
+ static void make(msgpack::object& o, char v) {
+ o.type = msgpack::type::POSITIVE_INTEGER;
+ o.via.u64 = v;
+ }
+};
+
+inline void object_char(msgpack::object& o, char v) {
+ return object_char_sign<is_signed<char>::value>::make(o, v);
+}
+
+} // namespace detail
+} // namespace type
+
+namespace adaptor {
+
+template <>
+struct convert<char> {
+ msgpack::object const& operator()(msgpack::object const& o, char& v) const
+ { v = type::detail::convert_integer<char>(o); return o; }
+};
+
+template <>
+struct convert<signed char> {
+ msgpack::object const& operator()(msgpack::object const& o, signed char& v) const
+ { v = type::detail::convert_integer<signed char>(o); return o; }
+};
+
+template <>
+struct convert<signed short> {
+ msgpack::object const& operator()(msgpack::object const& o, signed short& v) const
+ { v = type::detail::convert_integer<signed short>(o); return o; }
+};
+
+template <>
+struct convert<signed int> {
+ msgpack::object const& operator()(msgpack::object const& o, signed int& v) const
+ { v = type::detail::convert_integer<signed int>(o); return o; }
+};
+
+template <>
+struct convert<signed long> {
+ msgpack::object const& operator()(msgpack::object const& o, signed long& v) const
+ { v = type::detail::convert_integer<signed long>(o); return o; }
+};
+
+template <>
+struct convert<signed long long> {
+ msgpack::object const& operator()(msgpack::object const& o, signed long long& v) const
+ { v = type::detail::convert_integer<signed long long>(o); return o; }
+};
+
+
+template <>
+struct convert<unsigned char> {
+ msgpack::object const& operator()(msgpack::object const& o, unsigned char& v) const
+ { v = type::detail::convert_integer<unsigned char>(o); return o; }
+};
+
+template <>
+struct convert<unsigned short> {
+ msgpack::object const& operator()(msgpack::object const& o, unsigned short& v) const
+ { v = type::detail::convert_integer<unsigned short>(o); return o; }
+};
+
+template <>
+struct convert<unsigned int> {
+ msgpack::object const& operator()(msgpack::object const& o, unsigned int& v) const
+ { v = type::detail::convert_integer<unsigned int>(o); return o; }
+};
+
+template <>
+struct convert<unsigned long> {
+ msgpack::object const& operator()(msgpack::object const& o, unsigned long& v) const
+ { v = type::detail::convert_integer<unsigned long>(o); return o; }
+};
+
+template <>
+struct convert<unsigned long long> {
+ msgpack::object const& operator()(msgpack::object const& o, unsigned long long& v) const
+ { v = type::detail::convert_integer<unsigned long long>(o); return o; }
+};
+
+
+template <>
+struct pack<char> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, char v) const
+ { o.pack_char(v); return o; }
+};
+
+template <>
+struct pack<signed char> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, signed char v) const
+ { o.pack_signed_char(v); return o; }
+};
+
+template <>
+struct pack<signed short> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, signed short v) const
+ { o.pack_short(v); return o; }
+};
+
+template <>
+struct pack<signed int> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, signed int v) const
+ { o.pack_int(v); return o; }
+};
+
+template <>
+struct pack<signed long> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, signed long v) const
+ { o.pack_long(v); return o; }
+};
+
+template <>
+struct pack<signed long long> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, signed long long v) const
+ { o.pack_long_long(v); return o; }
+};
+
+
+template <>
+struct pack<unsigned char> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, unsigned char v) const
+ { o.pack_unsigned_char(v); return o; }
+};
+
+template <>
+struct pack<unsigned short> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, unsigned short v) const
+ { o.pack_unsigned_short(v); return o; }
+};
+
+template <>
+struct pack<unsigned int> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, unsigned int v) const
+ { o.pack_unsigned_int(v); return o; }
+};
+
+template <>
+struct pack<unsigned long> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, unsigned long v) const
+ { o.pack_unsigned_long(v); return o; }
+};
+
+template <>
+struct pack<unsigned long long> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, unsigned long long v) const
+ { o.pack_unsigned_long_long(v); return o; }
+};
+
+
+template <>
+struct object<char> {
+ void operator()(msgpack::object& o, char v) const
+ { type::detail::object_char(o, v); }
+};
+
+template <>
+struct object<signed char> {
+ void operator()(msgpack::object& o, signed char v) const {
+ if (v < 0) {
+ o.type = msgpack::type::NEGATIVE_INTEGER;
+ o.via.i64 = v;
+ }
+ else {
+ o.type = msgpack::type::POSITIVE_INTEGER;
+ o.via.u64 = v;
+ }
+ }
+};
+
+template <>
+struct object<signed short> {
+ void operator()(msgpack::object& o, signed short v) const {
+ if (v < 0) {
+ o.type = msgpack::type::NEGATIVE_INTEGER;
+ o.via.i64 = v;
+ }
+ else {
+ o.type = msgpack::type::POSITIVE_INTEGER;
+ o.via.u64 = v;
+ }
+ }
+};
+
+template <>
+struct object<signed int> {
+ void operator()(msgpack::object& o, signed int v) const {
+ if (v < 0) {
+ o.type = msgpack::type::NEGATIVE_INTEGER;
+ o.via.i64 = v;
+ }
+ else {
+ o.type = msgpack::type::POSITIVE_INTEGER;
+ o.via.u64 = v;
+ }
+ }
+};
+
+template <>
+struct object<signed long> {
+ void operator()(msgpack::object& o, signed long v) const {
+ if (v < 0) {
+ o.type = msgpack::type::NEGATIVE_INTEGER;
+ o.via.i64 = v;
+ }
+ else {
+ o.type = msgpack::type::POSITIVE_INTEGER;
+ o.via.u64 = v;
+ }
+ }
+};
+
+template <>
+struct object<signed long long> {
+ void operator()(msgpack::object& o, signed long long v) const {
+ if (v < 0) {
+ o.type = msgpack::type::NEGATIVE_INTEGER;
+ o.via.i64 = v;
+ }
+ else{
+ o.type = msgpack::type::POSITIVE_INTEGER;
+ o.via.u64 = v;
+ }
+ }
+};
+
+template <>
+struct object<unsigned char> {
+ void operator()(msgpack::object& o, unsigned char v) const {
+ o.type = msgpack::type::POSITIVE_INTEGER;
+ o.via.u64 = v;
+ }
+};
+
+template <>
+struct object<unsigned short> {
+ void operator()(msgpack::object& o, unsigned short v) const {
+ o.type = msgpack::type::POSITIVE_INTEGER;
+ o.via.u64 = v;
+ }
+};
+
+template <>
+struct object<unsigned int> {
+ void operator()(msgpack::object& o, unsigned int v) const {
+ o.type = msgpack::type::POSITIVE_INTEGER;
+ o.via.u64 = v;
+ }
+};
+
+template <>
+struct object<unsigned long> {
+ void operator()(msgpack::object& o, unsigned long v) const {
+ o.type = msgpack::type::POSITIVE_INTEGER;
+ o.via.u64 = v;
+ }
+};
+
+template <>
+struct object<unsigned long long> {
+ void operator()(msgpack::object& o, unsigned long long v) const {
+ o.type = msgpack::type::POSITIVE_INTEGER;
+ o.via.u64 = v;
+ }
+};
+
+
+template <>
+struct object_with_zone<char> {
+ void operator()(msgpack::object::with_zone& o, char v) const {
+ static_cast<msgpack::object&>(o) << v;
+ }
+};
+
+template <>
+struct object_with_zone<signed char> {
+ void operator()(msgpack::object::with_zone& o, signed char v) const {
+ static_cast<msgpack::object&>(o) << v;
+ }
+};
+
+template <>
+struct object_with_zone<signed short> {
+ void operator()(msgpack::object::with_zone& o, signed short v) const {
+ static_cast<msgpack::object&>(o) << v;
+ }
+};
+
+template <>
+struct object_with_zone<signed int> {
+ void operator()(msgpack::object::with_zone& o, signed int v) const {
+ static_cast<msgpack::object&>(o) << v;
+ }
+};
+
+template <>
+struct object_with_zone<signed long> {
+ void operator()(msgpack::object::with_zone& o, signed long v) const {
+ static_cast<msgpack::object&>(o) << v;
+ }
+};
+
+template <>
+struct object_with_zone<signed long long> {
+ void operator()(msgpack::object::with_zone& o, const signed long long& v) const {
+ static_cast<msgpack::object&>(o) << v;
+ }
+};
+
+template <>
+struct object_with_zone<unsigned char> {
+ void operator()(msgpack::object::with_zone& o, unsigned char v) const {
+ static_cast<msgpack::object&>(o) << v;
+ }
+};
+
+template <>
+struct object_with_zone<unsigned short> {
+ void operator()(msgpack::object::with_zone& o, unsigned short v) const {
+ static_cast<msgpack::object&>(o) << v;
+ }
+};
+
+template <>
+struct object_with_zone<unsigned int> {
+ void operator()(msgpack::object::with_zone& o, unsigned int v) const {
+ static_cast<msgpack::object&>(o) << v;
+ }
+};
+
+template <>
+struct object_with_zone<unsigned long> {
+ void operator()(msgpack::object::with_zone& o, unsigned long v) const {
+ static_cast<msgpack::object&>(o) << v;
+ }
+};
+
+template <>
+struct object_with_zone<unsigned long long> {
+ void operator()(msgpack::object::with_zone& o, const unsigned long long& v) const {
+ static_cast<msgpack::object&>(o) << v;
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_INT_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/int_decl.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/int_decl.hpp
new file mode 100644
index 0000000000..eb596c7ac1
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/int_decl.hpp
@@ -0,0 +1,49 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_INT_DECL_HPP
+#define MSGPACK_V1_TYPE_INT_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include <limits>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1){
+/// @endcond
+
+namespace type {
+namespace detail {
+
+template <typename T, bool Signed>
+struct convert_integer_sign;
+
+template <typename T>
+struct is_signed;
+
+template <typename T>
+T convert_integer(msgpack::object const& o);
+
+template <bool Signed>
+struct object_char_sign;
+
+void object_char(msgpack::object& o, char v);
+
+} // namespace detail
+} // namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_INT_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/list.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/list.hpp
new file mode 100644
index 0000000000..d16c8d2192
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/list.hpp
@@ -0,0 +1,106 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2015 FURUHASHI Sadayuki
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_LIST_HPP
+#define MSGPACK_V1_TYPE_LIST_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+
+#include <list>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+#if !defined(MSGPACK_USE_CPP03)
+
+template <typename T, typename Alloc>
+struct as<std::list<T, Alloc>, typename std::enable_if<msgpack::has_as<T>::value>::type> {
+ std::list<T, Alloc> operator()(msgpack::object const& o) const {
+ if (o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ std::list<T, Alloc> v;
+ msgpack::object* p = o.via.array.ptr;
+ msgpack::object* const pend = o.via.array.ptr + o.via.array.size;
+ for (; p < pend; ++p) {
+ v.push_back(p->as<T>());
+ }
+ return v;
+ }
+};
+
+#endif // !defined(MSGPACK_USE_CPP03)
+
+template <typename T, typename Alloc>
+struct convert<std::list<T, Alloc> > {
+ msgpack::object const& operator()(msgpack::object const& o, std::list<T, Alloc>& v) const {
+ if (o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ v.resize(o.via.array.size);
+ msgpack::object* p = o.via.array.ptr;
+ msgpack::object* const pend = o.via.array.ptr + o.via.array.size;
+ typename std::list<T, Alloc>::iterator it = v.begin();
+ for (; p < pend; ++p, ++it) {
+ p->convert(*it);
+ }
+ return o;
+ }
+};
+
+template <typename T, typename Alloc>
+struct pack<std::list<T, Alloc> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::list<T, Alloc>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_array(size);
+ for (typename std::list<T, Alloc>::const_iterator it(v.begin()), it_end(v.end());
+ it != it_end; ++it) {
+ o.pack(*it);
+ }
+ return o;
+ }
+};
+
+template <typename T, typename Alloc>
+struct object_with_zone<std::list<T, Alloc> > {
+ void operator()(msgpack::object::with_zone& o, const std::list<T, Alloc>& v) const {
+ o.type = msgpack::type::ARRAY;
+ if (v.empty()) {
+ o.via.array.ptr = MSGPACK_NULLPTR;
+ o.via.array.size = 0;
+ }
+ else {
+ uint32_t size = checked_get_container_size(v.size());
+ msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ msgpack::object* const pend = p + size;
+ o.via.array.ptr = p;
+ o.via.array.size = size;
+ typename std::list<T, Alloc>::const_iterator it(v.begin());
+ do {
+ *p = msgpack::object(*it, o.zone);
+ ++p;
+ ++it;
+ } while(p < pend);
+ }
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_LIST_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/map.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/map.hpp
new file mode 100644
index 0000000000..2c1793e16e
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/map.hpp
@@ -0,0 +1,314 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_MAP_HPP
+#define MSGPACK_V1_TYPE_MAP_HPP
+
+#include "msgpack/v1/adaptor/map_decl.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+
+#include <map>
+#include <vector>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace type {
+
+template <typename K, typename V, typename Compare, typename Alloc>
+class assoc_vector : public std::vector< std::pair<K, V>, Alloc > {
+#if !defined(MSGPACK_USE_CPP03)
+ using std::vector<std::pair<K, V>, Alloc>::vector;
+#endif // !defined(MSGPACK_USE_CPP03)
+};
+
+namespace detail {
+ template <typename K, typename V, typename Compare, typename Alloc>
+ struct pair_first_less {
+ bool operator() (const std::pair<K, V>& x, const std::pair<K, V>& y) const
+ { return Compare()(x.first, y.first); }
+ };
+}
+
+} //namespace type
+
+namespace adaptor {
+
+#if !defined(MSGPACK_USE_CPP03)
+
+template <typename K, typename V, typename Compare, typename Alloc>
+struct as<
+ type::assoc_vector<K, V, Compare, Alloc>,
+ typename std::enable_if<msgpack::has_as<K>::value || msgpack::has_as<V>::value>::type> {
+ type::assoc_vector<K, V, Compare, Alloc> operator()(msgpack::object const& o) const {
+ if (o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ type::assoc_vector<K, V, Compare, Alloc> v;
+ v.reserve(o.via.map.size);
+ msgpack::object_kv* p = o.via.map.ptr;
+ msgpack::object_kv* const pend = o.via.map.ptr + o.via.map.size;
+ for (; p < pend; ++p) {
+ v.emplace_back(p->key.as<K>(), p->val.as<V>());
+ }
+ std::sort(v.begin(), v.end(), type::detail::pair_first_less<K, V, Compare, Alloc>());
+ return v;
+ }
+};
+
+#endif // !defined(MSGPACK_USE_CPP03)
+
+template <typename K, typename V, typename Compare, typename Alloc>
+struct convert<type::assoc_vector<K, V, Compare, Alloc> > {
+ msgpack::object const& operator()(msgpack::object const& o, type::assoc_vector<K, V, Compare, Alloc>& v) const {
+ if (o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ v.resize(o.via.map.size);
+ if (o.via.map.size != 0) {
+ msgpack::object_kv* p = o.via.map.ptr;
+ msgpack::object_kv* const pend = o.via.map.ptr + o.via.map.size;
+ std::pair<K, V>* it(&v.front());
+ for (; p < pend; ++p, ++it) {
+ p->key.convert(it->first);
+ p->val.convert(it->second);
+ }
+ std::sort(v.begin(), v.end(), type::detail::pair_first_less<K, V, Compare, Alloc>());
+ }
+ return o;
+ }
+};
+
+template <typename K, typename V, typename Compare, typename Alloc>
+struct pack<type::assoc_vector<K, V, Compare, Alloc> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const type::assoc_vector<K, V, Compare, Alloc>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_map(size);
+ for (typename type::assoc_vector<K, V, Compare, Alloc>::const_iterator it(v.begin()), it_end(v.end());
+ it != it_end; ++it) {
+ o.pack(it->first);
+ o.pack(it->second);
+ }
+ return o;
+ }
+};
+
+template <typename K, typename V, typename Compare, typename Alloc>
+struct object_with_zone<type::assoc_vector<K, V, Compare, Alloc> > {
+ void operator()(msgpack::object::with_zone& o, const type::assoc_vector<K, V, Compare, Alloc>& v) const {
+ o.type = msgpack::type::MAP;
+ if (v.empty()) {
+ o.via.map.ptr = MSGPACK_NULLPTR;
+ o.via.map.size = 0;
+ }
+ else {
+ uint32_t size = checked_get_container_size(v.size());
+ msgpack::object_kv* p = static_cast<msgpack::object_kv*>(o.zone.allocate_align(sizeof(msgpack::object_kv)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
+ msgpack::object_kv* const pend = p + size;
+ o.via.map.ptr = p;
+ o.via.map.size = size;
+ typename type::assoc_vector<K, V, Compare, Alloc>::const_iterator it(v.begin());
+ do {
+ p->key = msgpack::object(it->first, o.zone);
+ p->val = msgpack::object(it->second, o.zone);
+ ++p;
+ ++it;
+ } while(p < pend);
+ }
+ }
+};
+
+#if !defined(MSGPACK_USE_CPP03)
+
+template <typename K, typename V, typename Compare, typename Alloc>
+struct as<
+ std::map<K, V, Compare, Alloc>,
+ typename std::enable_if<msgpack::has_as<K>::value || msgpack::has_as<V>::value>::type> {
+ std::map<K, V, Compare, Alloc> operator()(msgpack::object const& o) const {
+ if (o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ msgpack::object_kv* p(o.via.map.ptr);
+ msgpack::object_kv* const pend(o.via.map.ptr + o.via.map.size);
+ std::map<K, V, Compare, Alloc> v;
+ for (; p != pend; ++p) {
+ v.emplace(p->key.as<K>(), p->val.as<V>());
+ }
+ return v;
+ }
+};
+
+#endif // !defined(MSGPACK_USE_CPP03)
+
+template <typename K, typename V, typename Compare, typename Alloc>
+struct convert<std::map<K, V, Compare, Alloc> > {
+ msgpack::object const& operator()(msgpack::object const& o, std::map<K, V, Compare, Alloc>& v) const {
+ if (o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ msgpack::object_kv* p(o.via.map.ptr);
+ msgpack::object_kv* const pend(o.via.map.ptr + o.via.map.size);
+ std::map<K, V, Compare, Alloc> tmp;
+ for (; p != pend; ++p) {
+ K key;
+ p->key.convert(key);
+#if __cplusplus >= 201103L
+ p->val.convert(tmp[std::move(key)]);
+#else
+ p->val.convert(tmp[key]);
+#endif
+ }
+#if __cplusplus >= 201103L
+ v = std::move(tmp);
+#else
+ tmp.swap(v);
+#endif
+ return o;
+ }
+};
+
+template <typename K, typename V, typename Compare, typename Alloc>
+struct pack<std::map<K, V, Compare, Alloc> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::map<K, V, Compare, Alloc>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_map(size);
+ for (typename std::map<K, V, Compare, Alloc>::const_iterator it(v.begin()), it_end(v.end());
+ it != it_end; ++it) {
+ o.pack(it->first);
+ o.pack(it->second);
+ }
+ return o;
+ }
+};
+
+template <typename K, typename V, typename Compare, typename Alloc>
+struct object_with_zone<std::map<K, V, Compare, Alloc> > {
+ void operator()(msgpack::object::with_zone& o, const std::map<K, V, Compare, Alloc>& v) const {
+ o.type = msgpack::type::MAP;
+ if (v.empty()) {
+ o.via.map.ptr = MSGPACK_NULLPTR;
+ o.via.map.size = 0;
+ }
+ else {
+ uint32_t size = checked_get_container_size(v.size());
+
+ msgpack::object_kv* p = static_cast<msgpack::object_kv*>(o.zone.allocate_align(sizeof(msgpack::object_kv)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
+ msgpack::object_kv* const pend = p + size;
+ o.via.map.ptr = p;
+ o.via.map.size = size;
+ typename std::map<K, V, Compare, Alloc>::const_iterator it(v.begin());
+ do {
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
+#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+ p->key = msgpack::object(it->first, o.zone);
+ p->val = msgpack::object(it->second, o.zone);
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+#pragma GCC diagnostic pop
+#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+ ++p;
+ ++it;
+ } while(p < pend);
+ }
+ }
+};
+
+#if !defined(MSGPACK_USE_CPP03)
+
+template <typename K, typename V, typename Compare, typename Alloc>
+struct as<
+ std::multimap<K, V, Compare, Alloc>,
+ typename std::enable_if<msgpack::has_as<K>::value || msgpack::has_as<V>::value>::type> {
+ std::multimap<K, V, Compare, Alloc> operator()(msgpack::object const& o) const {
+ if (o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ msgpack::object_kv* p(o.via.map.ptr);
+ msgpack::object_kv* const pend(o.via.map.ptr + o.via.map.size);
+ std::multimap<K, V, Compare, Alloc> v;
+ for (; p != pend; ++p) {
+ v.emplace(p->key.as<K>(), p->val.as<V>());
+ }
+ return v;
+ }
+};
+
+#endif // !defined(MSGPACK_USE_CPP03)
+
+template <typename K, typename V, typename Compare, typename Alloc>
+struct convert<std::multimap<K, V, Compare, Alloc> > {
+ msgpack::object const& operator()(msgpack::object const& o, std::multimap<K, V, Compare, Alloc>& v) const {
+ if (o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ msgpack::object_kv* p(o.via.map.ptr);
+ msgpack::object_kv* const pend(o.via.map.ptr + o.via.map.size);
+ std::multimap<K, V, Compare, Alloc> tmp;
+ for (; p != pend; ++p) {
+ std::pair<K, V> value;
+ p->key.convert(value.first);
+ p->val.convert(value.second);
+#if __cplusplus >= 201103L
+ tmp.insert(std::move(value));
+#else
+ tmp.insert(value);
+#endif
+ }
+#if __cplusplus >= 201103L
+ v = std::move(tmp);
+#else
+ tmp.swap(v);
+#endif
+ return o;
+ }
+};
+
+template <typename K, typename V, typename Compare, typename Alloc>
+struct pack<std::multimap<K, V, Compare, Alloc> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::multimap<K, V, Compare, Alloc>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_map(size);
+ for (typename std::multimap<K, V, Compare, Alloc>::const_iterator it(v.begin()), it_end(v.end());
+ it != it_end; ++it) {
+ o.pack(it->first);
+ o.pack(it->second);
+ }
+ return o;
+ }
+};
+
+template <typename K, typename V, typename Compare, typename Alloc>
+struct object_with_zone<std::multimap<K, V, Compare, Alloc> > {
+ void operator()(msgpack::object::with_zone& o, const std::multimap<K, V, Compare, Alloc>& v) const {
+ o.type = msgpack::type::MAP;
+ if (v.empty()) {
+ o.via.map.ptr = MSGPACK_NULLPTR;
+ o.via.map.size = 0;
+ }
+ else {
+ uint32_t size = checked_get_container_size(v.size());
+ msgpack::object_kv* p = static_cast<msgpack::object_kv*>(o.zone.allocate_align(sizeof(msgpack::object_kv)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
+ msgpack::object_kv* const pend = p + size;
+ o.via.map.ptr = p;
+ o.via.map.size = size;
+ typename std::multimap<K, V, Compare, Alloc>::const_iterator it(v.begin());
+ do {
+ p->key = msgpack::object(it->first, o.zone);
+ p->val = msgpack::object(it->second, o.zone);
+ ++p;
+ ++it;
+ } while(p < pend);
+ }
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_MAP_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/map_decl.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/map_decl.hpp
new file mode 100644
index 0000000000..ad0376c6cc
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/map_decl.hpp
@@ -0,0 +1,36 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_MAP_DECL_HPP
+#define MSGPACK_V1_TYPE_MAP_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+
+#include <algorithm>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace type {
+
+template <typename K, typename V, typename Compare = std::less<K>, typename Alloc = std::allocator<std::pair<K, V> > >
+class assoc_vector;
+
+} //namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_MAP_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/msgpack_tuple.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/msgpack_tuple.hpp
new file mode 100644
index 0000000000..03d5c66e52
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/msgpack_tuple.hpp
@@ -0,0 +1,21 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_MSGPACK_TUPLE_HPP
+#define MSGPACK_V1_MSGPACK_TUPLE_HPP
+
+#include "msgpack/cpp_config.hpp"
+
+#if defined(MSGPACK_USE_CPP03)
+#include "msgpack/v1/adaptor/detail/cpp03_msgpack_tuple.hpp"
+#else // MSGPACK_USE_CPP03
+#include "msgpack/v1/adaptor/detail/cpp11_msgpack_tuple.hpp"
+#endif // MSGPACK_USE_CPP03
+
+#endif // MSGPACK_V1_MSGPACK_TUPLE_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/msgpack_tuple_decl.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/msgpack_tuple_decl.hpp
new file mode 100644
index 0000000000..c13bea756b
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/msgpack_tuple_decl.hpp
@@ -0,0 +1,21 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_MSGPACK_TUPLE_DECL_HPP
+#define MSGPACK_V1_MSGPACK_TUPLE_DECL_HPP
+
+#include "msgpack/cpp_config.hpp"
+
+#if defined(MSGPACK_USE_CPP03)
+#include "msgpack/v1/adaptor/detail/cpp03_msgpack_tuple_decl.hpp"
+#else // MSGPACK_USE_CPP03
+#include "msgpack/v1/adaptor/detail/cpp11_msgpack_tuple_decl.hpp"
+#endif // MSGPACK_USE_CPP03
+
+#endif // MSGPACK_V1_MSGPACK_TUPLE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/nil.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/nil.hpp
new file mode 100644
index 0000000000..f65972ce34
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/nil.hpp
@@ -0,0 +1,76 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_NIL_HPP
+#define MSGPACK_V1_TYPE_NIL_HPP
+
+#include "msgpack/v1/adaptor/nil_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace type {
+
+struct nil_t { };
+
+inline bool operator<(nil_t const& lhs, nil_t const& rhs) {
+ return &lhs < &rhs;
+}
+
+inline bool operator==(nil_t const& lhs, nil_t const& rhs) {
+ return &lhs == &rhs;
+}
+
+} // namespace type
+
+namespace adaptor {
+
+template <>
+struct convert<type::nil_t> {
+ msgpack::object const& operator()(msgpack::object const& o, type::nil_t&) const {
+ if(o.type != msgpack::type::NIL) { throw msgpack::type_error(); }
+ return o;
+ }
+};
+
+template <>
+struct pack<type::nil_t> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const type::nil_t&) const {
+ o.pack_nil();
+ return o;
+ }
+};
+
+template <>
+struct object<type::nil_t> {
+ void operator()(msgpack::object& o, type::nil_t) const {
+ o.type = msgpack::type::NIL;
+ }
+};
+
+template <>
+struct object_with_zone<type::nil_t> {
+ void operator()(msgpack::object::with_zone& o, type::nil_t v) const {
+ static_cast<msgpack::object&>(o) << v;
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_NIL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/nil_decl.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/nil_decl.hpp
new file mode 100644
index 0000000000..4830ff201e
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/nil_decl.hpp
@@ -0,0 +1,44 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_NIL_DECL_HPP
+#define MSGPACK_V1_TYPE_NIL_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace type {
+
+struct nil_t;
+
+#if !defined(MSGPACK_DISABLE_LEGACY_NIL)
+
+typedef nil_t nil;
+
+#endif // !defined(MSGPACK_DISABLE_LEGACY_NIL)
+
+bool operator<(nil_t const& lhs, nil_t const& rhs);
+
+bool operator==(nil_t const& lhs, nil_t const& rhs);
+
+} // namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_NIL_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/pair.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/pair.hpp
new file mode 100644
index 0000000000..890abc2b87
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/pair.hpp
@@ -0,0 +1,83 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2009 FURUHASHI Sadayuki
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_PAIR_HPP
+#define MSGPACK_V1_TYPE_PAIR_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/meta.hpp"
+
+#include <utility>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+#if !defined(MSGPACK_USE_CPP03)
+
+template <typename T1, typename T2>
+struct as<std::pair<T1, T2>,
+ typename std::enable_if<msgpack::any_of<msgpack::has_as, T1, T2>::value>::type> {
+ std::pair<T1, T2> operator()(msgpack::object const& o) const {
+ if (o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ if (o.via.array.size != 2) { throw msgpack::type_error(); }
+ return std::make_pair(o.via.array.ptr[0].as<T1>(), o.via.array.ptr[1].as<T2>());
+ }
+};
+
+#endif // !defined(MSGPACK_USE_CPP03)
+
+template <typename T1, typename T2>
+struct convert<std::pair<T1, T2> > {
+ msgpack::object const& operator()(msgpack::object const& o, std::pair<T1, T2>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ if(o.via.array.size != 2) { throw msgpack::type_error(); }
+ o.via.array.ptr[0].convert(v.first);
+ o.via.array.ptr[1].convert(v.second);
+ return o;
+ }
+};
+
+template <typename T1, typename T2>
+struct pack<std::pair<T1, T2> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::pair<T1, T2>& v) const {
+ o.pack_array(2);
+ o.pack(v.first);
+ o.pack(v.second);
+ return o;
+ }
+};
+
+template <typename T1, typename T2>
+struct object_with_zone<std::pair<T1, T2> > {
+ void operator()(msgpack::object::with_zone& o, const std::pair<T1, T2>& v) const {
+ o.type = msgpack::type::ARRAY;
+ msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*2, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ o.via.array.ptr = p;
+ o.via.array.size = 2;
+ p[0] = msgpack::object(v.first, o.zone);
+ p[1] = msgpack::object(v.second, o.zone);
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_PAIR_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/raw.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/raw.hpp
new file mode 100644
index 0000000000..80efdc78cf
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/raw.hpp
@@ -0,0 +1,106 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2009 FURUHASHI Sadayuki
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_RAW_HPP
+#define MSGPACK_V1_TYPE_RAW_HPP
+
+#include "msgpack/v1/adaptor/raw_decl.hpp"
+
+#include <cstring>
+#include <string>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace type {
+
+struct raw_ref {
+ raw_ref() : size(0), ptr(MSGPACK_NULLPTR) {}
+ raw_ref(const char* p, uint32_t s) : size(s), ptr(p) {}
+
+ uint32_t size;
+ const char* ptr;
+
+ std::string str() const { return std::string(ptr, size); }
+
+ bool operator== (const raw_ref& x) const
+ {
+ return size == x.size && std::memcmp(ptr, x.ptr, size) == 0;
+ }
+
+ bool operator!= (const raw_ref& x) const
+ {
+ return !(*this == x);
+ }
+
+ bool operator< (const raw_ref& x) const
+ {
+ if(size == x.size) { return std::memcmp(ptr, x.ptr, size) < 0; }
+ else { return size < x.size; }
+ }
+
+ bool operator> (const raw_ref& x) const
+ {
+ if(size == x.size) { return std::memcmp(ptr, x.ptr, size) > 0; }
+ else { return size > x.size; }
+ }
+};
+
+} // namespace type
+
+namespace adaptor {
+
+template <>
+struct convert<type::raw_ref> {
+ msgpack::object const& operator()(msgpack::object const& o, type::raw_ref& v) const {
+ if(o.type != msgpack::type::BIN) { throw msgpack::type_error(); }
+ v.ptr = o.via.bin.ptr;
+ v.size = o.via.bin.size;
+ return o;
+ }
+};
+
+template <>
+struct pack<type::raw_ref> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const type::raw_ref& v) const {
+ o.pack_bin(v.size);
+ o.pack_bin_body(v.ptr, v.size);
+ return o;
+ }
+};
+
+template <>
+struct object<type::raw_ref> {
+ void operator()(msgpack::object& o, const type::raw_ref& v) const {
+ o.type = msgpack::type::BIN;
+ o.via.bin.ptr = v.ptr;
+ o.via.bin.size = v.size;
+ }
+};
+
+template <>
+struct object_with_zone<type::raw_ref> {
+ void operator()(msgpack::object::with_zone& o, const type::raw_ref& v) const {
+ static_cast<msgpack::object&>(o) << v;
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_RAW_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/raw_decl.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/raw_decl.hpp
new file mode 100644
index 0000000000..db186d18aa
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/raw_decl.hpp
@@ -0,0 +1,36 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_RAW_DECL_HPP
+#define MSGPACK_V1_TYPE_RAW_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include <cstring>
+#include <string>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace type {
+
+struct raw_ref;
+
+} // namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_RAW_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/set.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/set.hpp
new file mode 100644
index 0000000000..96abe25f02
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/set.hpp
@@ -0,0 +1,188 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2015 FURUHASHI Sadayuki
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_SET_HPP
+#define MSGPACK_V1_TYPE_SET_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+
+#include <set>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+#if !defined(MSGPACK_USE_CPP03)
+
+template <typename T, typename Compare, typename Alloc>
+struct as<std::set<T, Compare, Alloc>, typename std::enable_if<msgpack::has_as<T>::value>::type> {
+ std::set<T, Compare, Alloc> operator()(msgpack::object const& o) const {
+ if (o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ msgpack::object* p = o.via.array.ptr + o.via.array.size;
+ msgpack::object* const pbegin = o.via.array.ptr;
+ std::set<T, Compare, Alloc> v;
+ while (p > pbegin) {
+ --p;
+ v.insert(p->as<T>());
+ }
+ return v;
+ }
+};
+
+#endif // !defined(MSGPACK_USE_CPP03)
+
+template <typename T, typename Compare, typename Alloc>
+struct convert<std::set<T, Compare, Alloc> > {
+ msgpack::object const& operator()(msgpack::object const& o, std::set<T, Compare, Alloc>& v) const {
+ if (o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ msgpack::object* p = o.via.array.ptr + o.via.array.size;
+ msgpack::object* const pbegin = o.via.array.ptr;
+ std::set<T, Compare, Alloc> tmp;
+ while (p > pbegin) {
+ --p;
+ tmp.insert(p->as<T>());
+ }
+#if __cplusplus >= 201103L
+ v = std::move(tmp);
+#else
+ tmp.swap(v);
+#endif
+ return o;
+ }
+};
+
+template <typename T, typename Compare, typename Alloc>
+struct pack<std::set<T, Compare, Alloc> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::set<T, Compare, Alloc>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_array(size);
+ for (typename std::set<T, Compare, Alloc>::const_iterator it(v.begin()), it_end(v.end());
+ it != it_end; ++it) {
+ o.pack(*it);
+ }
+ return o;
+ }
+};
+
+template <typename T, typename Compare, typename Alloc>
+struct object_with_zone<std::set<T, Compare, Alloc> > {
+ void operator()(msgpack::object::with_zone& o, const std::set<T, Compare, Alloc>& v) const {
+ o.type = msgpack::type::ARRAY;
+ if (v.empty()) {
+ o.via.array.ptr = MSGPACK_NULLPTR;
+ o.via.array.size = 0;
+ }
+ else {
+ uint32_t size = checked_get_container_size(v.size());
+ msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ msgpack::object* const pend = p + size;
+ o.via.array.ptr = p;
+ o.via.array.size = size;
+ typename std::set<T, Compare, Alloc>::const_iterator it(v.begin());
+ do {
+ *p = msgpack::object(*it, o.zone);
+ ++p;
+ ++it;
+ } while(p < pend);
+ }
+ }
+};
+
+#if !defined(MSGPACK_USE_CPP03)
+
+template <typename T, typename Compare, typename Alloc>
+struct as<std::multiset<T, Compare, Alloc>, typename std::enable_if<msgpack::has_as<T>::value>::type> {
+ std::multiset<T, Compare, Alloc> operator()(msgpack::object const& o) const {
+ if (o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ msgpack::object* p = o.via.array.ptr + o.via.array.size;
+ msgpack::object* const pbegin = o.via.array.ptr;
+ std::multiset<T, Compare, Alloc> v;
+ while (p > pbegin) {
+ --p;
+ v.insert(p->as<T>());
+ }
+ return v;
+ }
+};
+
+#endif // !defined(MSGPACK_USE_CPP03)
+
+template <typename T, typename Compare, typename Alloc>
+struct convert<std::multiset<T, Compare, Alloc> > {
+ msgpack::object const& operator()(msgpack::object const& o, std::multiset<T, Compare, Alloc>& v) const {
+ if (o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ msgpack::object* p = o.via.array.ptr + o.via.array.size;
+ msgpack::object* const pbegin = o.via.array.ptr;
+ std::multiset<T, Compare, Alloc> tmp;
+ while (p > pbegin) {
+ --p;
+ tmp.insert(p->as<T>());
+ }
+#if __cplusplus >= 201103L
+ v = std::move(tmp);
+#else
+ tmp.swap(v);
+#endif
+ return o;
+ }
+};
+
+template <typename T, typename Compare, typename Alloc>
+struct pack<std::multiset<T, Compare, Alloc> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::multiset<T, Compare, Alloc>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_array(size);
+ for (typename std::multiset<T, Compare, Alloc>::const_iterator it(v.begin()), it_end(v.end());
+ it != it_end; ++it) {
+ o.pack(*it);
+ }
+ return o;
+ }
+};
+
+template <typename T, typename Compare, typename Alloc>
+struct object_with_zone<std::multiset<T, Compare, Alloc> > {
+ void operator()(msgpack::object::with_zone& o, const std::multiset<T, Compare, Alloc>& v) const {
+ o.type = msgpack::type::ARRAY;
+ if (v.empty()) {
+ o.via.array.ptr = MSGPACK_NULLPTR;
+ o.via.array.size = 0;
+ } else {
+ uint32_t size = checked_get_container_size(v.size());
+ msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ msgpack::object* const pend = p + size;
+ o.via.array.ptr = p;
+ o.via.array.size = size;
+ typename std::multiset<T, Compare, Alloc>::const_iterator it(v.begin());
+ do {
+ *p = msgpack::object(*it, o.zone);
+ ++p;
+ ++it;
+ } while(p < pend);
+ }
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_SET_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/size_equal_only.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/size_equal_only.hpp
new file mode 100644
index 0000000000..39f6f3433a
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/size_equal_only.hpp
@@ -0,0 +1,118 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_SIZE_EQUAL_ONLY_HPP
+#define MSGPACK_V1_TYPE_SIZE_EQUAL_ONLY_HPP
+
+#include "msgpack/v1/adaptor/size_equal_only_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace type {
+
+template <typename T>
+inline std::size_t size(T const& t) {
+ return t.size();
+}
+
+template <typename T, std::size_t N>
+inline std::size_t size(const T(&)[N]) {
+ return N;
+}
+
+
+#if !defined(MSGPACK_USE_CPP03)
+
+template <typename... T>
+inline std::size_t size(std::tuple<T...> const&) {
+ return sizeof...(T);
+}
+
+#endif // !defined(MSGPACK_USE_CPP03)
+
+
+template <typename T>
+struct size_equal_only {
+ size_equal_only(T& t):m_t(t) {}
+ T& m_t;
+};
+
+template <typename T>
+inline size_equal_only<T> make_size_equal_only(T& t) {
+ return size_equal_only<T>(t);
+}
+
+template <typename T>
+inline bool operator<(size_equal_only<T> const& lhs, size_equal_only<T> const& rhs) {
+ return lhs.m_t < rhs.m_t;
+}
+
+template <typename T>
+inline bool operator==(size_equal_only<T> const& lhs, size_equal_only<T> const& rhs) {
+ return lhs.m_t == &rhs.m_t;
+}
+
+} // namespace type
+
+namespace adaptor {
+
+template <typename T>
+struct convert<type::size_equal_only<T> > {
+ msgpack::object const& operator()(msgpack::object const& o, type::size_equal_only<T>& v) const {
+ switch(o.type) {
+ case msgpack::type::ARRAY:
+ if (o.via.array.size != msgpack::type::size(v.m_t)) throw msgpack::type_error();
+ break;
+ case msgpack::type::MAP:
+ if (o.via.map.size != msgpack::type::size(v.m_t)) throw msgpack::type_error();
+ break;
+ default:
+ throw msgpack::type_error();
+ }
+ o >> v.m_t;
+ return o;
+ }
+};
+
+template <typename T>
+struct pack<type::size_equal_only<T> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const type::size_equal_only<T>& v) const {
+ o << v.m_t;
+ return o;
+ }
+};
+
+template <typename T>
+struct object<type::size_equal_only<T> > {
+ void operator()(msgpack::object& o, type::size_equal_only<T> const& v) const {
+ o << v.m_t;
+ }
+};
+
+template <typename T>
+struct object_with_zone<type::size_equal_only<T> > {
+ void operator()(msgpack::object::with_zone& o, type::size_equal_only<T> v) const {
+ o << v.m_t;
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_SIZE_EQUAL_ONLY_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/size_equal_only_decl.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/size_equal_only_decl.hpp
new file mode 100644
index 0000000000..6eac047b03
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/size_equal_only_decl.hpp
@@ -0,0 +1,52 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_SIZE_EQUAL_ONLY_DECL_HPP
+#define MSGPACK_V1_TYPE_SIZE_EQUAL_ONLY_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/msgpack_tuple.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace type {
+
+template <typename T>
+struct size_equal_only;
+
+template <typename T>
+size_equal_only<T> make_size_equal_only(T& t);
+
+template <typename T>
+std::size_t size(T const& t);
+
+template <typename T, std::size_t N>
+std::size_t size(const T(&)[N]);
+
+#if !defined(MSGPACK_USE_CPP03)
+
+template <typename... T>
+std::size_t size(std::tuple<T...> const&);
+
+#endif // !defined(MSGPACK_USE_CPP03)
+
+} // namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_SIZE_EQUAL_ONLY_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/string.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/string.hpp
new file mode 100644
index 0000000000..ca7d3e509f
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/string.hpp
@@ -0,0 +1,87 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2015 FURUHASHI Sadayuki
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_STRING_HPP
+#define MSGPACK_V1_TYPE_STRING_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+
+#include <string>
+#include <cstring>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+template <>
+struct convert<std::string> {
+ msgpack::object const& operator()(msgpack::object const& o, std::string& v) const {
+ switch (o.type) {
+ case msgpack::type::BIN:
+ v.assign(o.via.bin.ptr, o.via.bin.size);
+ break;
+ case msgpack::type::STR:
+ v.assign(o.via.str.ptr, o.via.str.size);
+ break;
+ default:
+ throw msgpack::type_error();
+ break;
+ }
+ return o;
+ }
+};
+
+template <>
+struct pack<std::string> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::string& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_str(size);
+ o.pack_str_body(v.data(), size);
+ return o;
+ }
+};
+
+template <>
+struct object<std::string> {
+ void operator()(msgpack::object& o, const std::string& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.type = msgpack::type::STR;
+ o.via.str.ptr = v.data();
+ o.via.str.size = size;
+ }
+};
+
+template <>
+struct object_with_zone<std::string> {
+ void operator()(msgpack::object::with_zone& o, const std::string& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.type = msgpack::type::STR;
+ char* ptr = static_cast<char*>(o.zone.allocate_align(size, MSGPACK_ZONE_ALIGNOF(char)));
+ o.via.str.ptr = ptr;
+ o.via.str.size = size;
+ std::memcpy(ptr, v.data(), v.size());
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_STRING_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/tr1/unordered_map.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/tr1/unordered_map.hpp
new file mode 100644
index 0000000000..9c8190e855
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/tr1/unordered_map.hpp
@@ -0,0 +1,171 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2015 FURUHASHI Sadayuki
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_TR1_UNORDERED_MAP_HPP
+#define MSGPACK_TYPE_TR1_UNORDERED_MAP_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+
+#if defined(_LIBCPP_VERSION) || (_MSC_VER >= 1700)
+
+#define MSGPACK_HAS_STD_UNORDERED_MAP
+#include <unordered_map>
+#define MSGPACK_STD_TR1 std
+
+#else // defined(_LIBCPP_VERSION) || (_MSC_VER >= 1700)
+
+#if __GNUC__ >= 4
+
+#define MSGPACK_HAS_STD_TR1_UNORDERED_MAP
+
+#include <tr1/unordered_map>
+#define MSGPACK_STD_TR1 std::tr1
+
+#endif // __GNUC__ >= 4
+
+#endif // defined(_LIBCPP_VERSION) || (_MSC_VER >= 1700)
+
+#if defined(MSGPACK_STD_TR1)
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+template <typename K, typename V, typename Hash, typename Pred, typename Alloc>
+struct convert<MSGPACK_STD_TR1::unordered_map<K, V, Hash, Pred, Alloc> > {
+ msgpack::object const& operator()(msgpack::object const& o, MSGPACK_STD_TR1::unordered_map<K, V, Hash, Pred, Alloc>& v) const {
+ if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ msgpack::object_kv* p(o.via.map.ptr);
+ msgpack::object_kv* const pend(o.via.map.ptr + o.via.map.size);
+ MSGPACK_STD_TR1::unordered_map<K, V, Hash, Pred, Alloc> tmp;
+ for(; p != pend; ++p) {
+ K key;
+ p->key.convert(key);
+ p->val.convert(tmp[key]);
+ }
+ tmp.swap(v);
+ return o;
+ }
+};
+
+template <typename K, typename V, typename Hash, typename Pred, typename Alloc>
+struct pack<MSGPACK_STD_TR1::unordered_map<K, V, Hash, Pred, Alloc> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const MSGPACK_STD_TR1::unordered_map<K, V, Hash, Pred, Alloc>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_map(size);
+ for(typename MSGPACK_STD_TR1::unordered_map<K, V, Hash, Pred, Alloc>::const_iterator it(v.begin()), it_end(v.end());
+ it != it_end; ++it) {
+ o.pack(it->first);
+ o.pack(it->second);
+ }
+ return o;
+ }
+};
+
+template <typename K, typename V, typename Hash, typename Pred, typename Alloc>
+struct object_with_zone<MSGPACK_STD_TR1::unordered_map<K, V, Hash, Pred, Alloc> > {
+ void operator()(msgpack::object::with_zone& o, const MSGPACK_STD_TR1::unordered_map<K, V, Hash, Pred, Alloc>& v) const {
+ o.type = msgpack::type::MAP;
+ if(v.empty()) {
+ o.via.map.ptr = MSGPACK_NULLPTR;
+ o.via.map.size = 0;
+ } else {
+ uint32_t size = checked_get_container_size(v.size());
+ msgpack::object_kv* p = static_cast<msgpack::object_kv*>(o.zone.allocate_align(sizeof(msgpack::object_kv)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
+ msgpack::object_kv* const pend = p + size;
+ o.via.map.ptr = p;
+ o.via.map.size = size;
+ typename MSGPACK_STD_TR1::unordered_map<K, V, Hash, Pred, Alloc>::const_iterator it(v.begin());
+ do {
+ p->key = msgpack::object(it->first, o.zone);
+ p->val = msgpack::object(it->second, o.zone);
+ ++p;
+ ++it;
+ } while(p < pend);
+ }
+ }
+};
+
+template <typename K, typename V, typename Hash, typename Pred, typename Alloc>
+struct convert<MSGPACK_STD_TR1::unordered_multimap<K, V, Hash, Pred, Alloc> > {
+ msgpack::object const& operator()(msgpack::object const& o, MSGPACK_STD_TR1::unordered_multimap<K, V, Hash, Pred, Alloc>& v) const {
+ if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
+ msgpack::object_kv* p(o.via.map.ptr);
+ msgpack::object_kv* const pend(o.via.map.ptr + o.via.map.size);
+ MSGPACK_STD_TR1::unordered_multimap<K, V, Hash, Pred, Alloc> tmp;
+ for(; p != pend; ++p) {
+ std::pair<K, V> value;
+ p->key.convert(value.first);
+ p->val.convert(value.second);
+ tmp.insert(value);
+ }
+ tmp.swap(v);
+ return o;
+ }
+};
+
+template <typename K, typename V, typename Hash, typename Pred, typename Alloc>
+struct pack<MSGPACK_STD_TR1::unordered_multimap<K, V, Hash, Pred, Alloc> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const MSGPACK_STD_TR1::unordered_multimap<K, V, Hash, Pred, Alloc>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_map(size);
+ for(typename MSGPACK_STD_TR1::unordered_multimap<K, V, Hash, Pred, Alloc>::const_iterator it(v.begin()), it_end(v.end());
+ it != it_end; ++it) {
+ o.pack(it->first);
+ o.pack(it->second);
+ }
+ return o;
+ }
+};
+
+template <typename K, typename V, typename Hash, typename Pred, typename Alloc>
+struct object_with_zone<MSGPACK_STD_TR1::unordered_multimap<K, V, Hash, Pred, Alloc> > {
+ void operator()(msgpack::object::with_zone& o, const MSGPACK_STD_TR1::unordered_multimap<K, V, Hash, Pred, Alloc>& v) const {
+ o.type = msgpack::type::MAP;
+ if(v.empty()) {
+ o.via.map.ptr = MSGPACK_NULLPTR;
+ o.via.map.size = 0;
+ } else {
+ uint32_t size = checked_get_container_size(v.size());
+ msgpack::object_kv* p = static_cast<msgpack::object_kv*>(o.zone.allocate_align(sizeof(msgpack::object_kv)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
+ msgpack::object_kv* const pend = p + size;
+ o.via.map.ptr = p;
+ o.via.map.size = size;
+ typename MSGPACK_STD_TR1::unordered_multimap<K, V, Hash, Pred, Alloc>::const_iterator it(v.begin());
+ do {
+ p->key = msgpack::object(it->first, o.zone);
+ p->val = msgpack::object(it->second, o.zone);
+ ++p;
+ ++it;
+ } while(p < pend);
+ }
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#undef MSGPACK_STD_TR1
+
+#endif // MSGPACK_STD_TR1
+
+#endif // MSGPACK_TYPE_TR1_UNORDERED_MAP_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/tr1/unordered_set.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/tr1/unordered_set.hpp
new file mode 100644
index 0000000000..dd6c0448fc
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/tr1/unordered_set.hpp
@@ -0,0 +1,165 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2015 FURUHASHI Sadayuki
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_TYPE_TR1_UNORDERED_SET_HPP
+#define MSGPACK_TYPE_TR1_UNORDERED_SET_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+
+#if defined(_LIBCPP_VERSION) || (_MSC_VER >= 1700)
+
+#define MSGPACK_HAS_STD_UNORDERED_SET
+#include <unordered_set>
+#define MSGPACK_STD_TR1 std
+
+#else // defined(_LIBCPP_VERSION) || (_MSC_VER >= 1700)
+
+#if __GNUC__ >= 4
+
+#define MSGPACK_HAS_STD_TR1_UNORDERED_SET
+
+#include <tr1/unordered_set>
+#define MSGPACK_STD_TR1 std::tr1
+
+#endif // __GNUC__ >= 4
+
+#endif // defined(_LIBCPP_VERSION) || (_MSC_VER >= 1700)
+
+#if defined(MSGPACK_STD_TR1)
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+template <typename T, typename Hash, typename Compare, typename Alloc>
+struct convert<MSGPACK_STD_TR1::unordered_set<T, Hash, Compare, Alloc> > {
+ msgpack::object const& operator()(msgpack::object const& o, MSGPACK_STD_TR1::unordered_set<T, Hash, Compare, Alloc>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ msgpack::object* p = o.via.array.ptr + o.via.array.size;
+ msgpack::object* const pbegin = o.via.array.ptr;
+ MSGPACK_STD_TR1::unordered_set<T, Hash, Compare, Alloc> tmp;
+ while(p > pbegin) {
+ --p;
+ tmp.insert(p->as<T>());
+ }
+ tmp.swap(v);
+ return o;
+ }
+};
+
+template <typename T, typename Hash, typename Compare, typename Alloc>
+struct pack<MSGPACK_STD_TR1::unordered_set<T, Hash, Compare, Alloc> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const MSGPACK_STD_TR1::unordered_set<T, Hash, Compare, Alloc>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_array(size);
+ for(typename MSGPACK_STD_TR1::unordered_set<T, Hash, Compare, Alloc>::const_iterator it(v.begin()), it_end(v.end());
+ it != it_end; ++it) {
+ o.pack(*it);
+ }
+ return o;
+ }
+};
+
+template <typename T, typename Hash, typename Compare, typename Alloc>
+struct object_with_zone<MSGPACK_STD_TR1::unordered_set<T, Hash, Compare, Alloc> > {
+ void operator()(msgpack::object::with_zone& o, const MSGPACK_STD_TR1::unordered_set<T, Hash, Compare, Alloc>& v) const {
+ o.type = msgpack::type::ARRAY;
+ if(v.empty()) {
+ o.via.array.ptr = MSGPACK_NULLPTR;
+ o.via.array.size = 0;
+ } else {
+ uint32_t size = checked_get_container_size(v.size());
+ msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ msgpack::object* const pend = p + size;
+ o.via.array.ptr = p;
+ o.via.array.size = size;
+ typename MSGPACK_STD_TR1::unordered_set<T, Hash, Compare, Alloc>::const_iterator it(v.begin());
+ do {
+ *p = msgpack::object(*it, o.zone);
+ ++p;
+ ++it;
+ } while(p < pend);
+ }
+ }
+};
+
+
+template <typename T, typename Hash, typename Compare, typename Alloc>
+struct convert<MSGPACK_STD_TR1::unordered_multiset<T, Hash, Compare, Alloc> > {
+ msgpack::object const& operator()(msgpack::object const& o, MSGPACK_STD_TR1::unordered_multiset<T, Hash, Compare, Alloc>& v) const {
+ if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ msgpack::object* p = o.via.array.ptr + o.via.array.size;
+ msgpack::object* const pbegin = o.via.array.ptr;
+ MSGPACK_STD_TR1::unordered_multiset<T, Hash, Compare, Alloc> tmp;
+ while(p > pbegin) {
+ --p;
+ tmp.insert(p->as<T>());
+ }
+ tmp.swap(v);
+ return o;
+ }
+};
+
+template <typename T, typename Hash, typename Compare, typename Alloc>
+struct pack<MSGPACK_STD_TR1::unordered_multiset<T, Hash, Compare, Alloc> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const MSGPACK_STD_TR1::unordered_multiset<T, Hash, Compare, Alloc>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_array(size);
+ for(typename MSGPACK_STD_TR1::unordered_multiset<T, Hash, Compare, Alloc>::const_iterator it(v.begin()), it_end(v.end());
+ it != it_end; ++it) {
+ o.pack(*it);
+ }
+ return o;
+ }
+};
+
+template <typename T, typename Hash, typename Compare, typename Alloc>
+struct object_with_zone<MSGPACK_STD_TR1::unordered_multiset<T, Hash, Compare, Alloc> > {
+ void operator()(msgpack::object::with_zone& o, const MSGPACK_STD_TR1::unordered_multiset<T, Hash, Compare, Alloc>& v) const {
+ o.type = msgpack::type::ARRAY;
+ if(v.empty()) {
+ o.via.array.ptr = MSGPACK_NULLPTR;
+ o.via.array.size = 0;
+ } else {
+ uint32_t size = checked_get_container_size(v.size());
+ msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ msgpack::object* const pend = p + size;
+ o.via.array.ptr = p;
+ o.via.array.size = size;
+ typename MSGPACK_STD_TR1::unordered_multiset<T, Hash, Compare, Alloc>::const_iterator it(v.begin());
+ do {
+ *p = msgpack::object(*it, o.zone);
+ ++p;
+ ++it;
+ } while(p < pend);
+ }
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#undef MSGPACK_STD_TR1
+
+#endif // MSGPACK_STD_TR1
+
+#endif // MSGPACK_TYPE_TR1_UNORDERED_SET_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/v4raw.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/v4raw.hpp
new file mode 100644
index 0000000000..f03f4a068c
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/v4raw.hpp
@@ -0,0 +1,105 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_V4RAW_HPP
+#define MSGPACK_V1_TYPE_V4RAW_HPP
+
+#include "msgpack/v1/adaptor/v4raw_decl.hpp"
+#include <cstring>
+#include <string>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace type {
+
+struct v4raw_ref {
+ v4raw_ref() : size(0), ptr(MSGPACK_NULLPTR) {}
+ v4raw_ref(const char* p, uint32_t s) : size(s), ptr(p) {}
+
+ uint32_t size;
+ const char* ptr;
+
+ std::string str() const { return std::string(ptr, size); }
+
+ bool operator== (const v4raw_ref& x) const
+ {
+ return size == x.size && std::memcmp(ptr, x.ptr, size) == 0;
+ }
+
+ bool operator!= (const v4raw_ref& x) const
+ {
+ return !(*this == x);
+ }
+
+ bool operator< (const v4raw_ref& x) const
+ {
+ if(size == x.size) { return std::memcmp(ptr, x.ptr, size) < 0; }
+ else { return size < x.size; }
+ }
+
+ bool operator> (const v4raw_ref& x) const
+ {
+ if(size == x.size) { return std::memcmp(ptr, x.ptr, size) > 0; }
+ else { return size > x.size; }
+ }
+};
+
+} // namespace type
+
+namespace adaptor {
+
+template <>
+struct convert<type::v4raw_ref> {
+ msgpack::object const& operator()(msgpack::object const& o, type::v4raw_ref& v) const {
+ if(o.type != msgpack::type::STR) { throw msgpack::type_error(); }
+ v.ptr = o.via.str.ptr;
+ v.size = o.via.str.size;
+ return o;
+ }
+};
+
+template <>
+struct pack<type::v4raw_ref> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const type::v4raw_ref& v) const {
+ o.pack_v4raw(v.size);
+ o.pack_v4raw_body(v.ptr, v.size);
+ return o;
+ }
+};
+
+template <>
+struct object<type::v4raw_ref> {
+ void operator()(msgpack::object& o, const type::v4raw_ref& v) const {
+ o.type = msgpack::type::STR;
+ o.via.str.ptr = v.ptr;
+ o.via.str.size = v.size;
+ }
+};
+
+template <>
+struct object_with_zone<type::v4raw_ref> {
+ void operator()(msgpack::object::with_zone& o, const type::v4raw_ref& v) const {
+ static_cast<msgpack::object&>(o) << v;
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_V4RAW_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/v4raw_decl.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/v4raw_decl.hpp
new file mode 100644
index 0000000000..ae213f7e2c
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/v4raw_decl.hpp
@@ -0,0 +1,34 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_V4RAW_DECL_HPP
+#define MSGPACK_V1_TYPE_V4RAW_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace type {
+
+struct v4raw_ref;
+
+} // namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_V4RAW_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/vector.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/vector.hpp
new file mode 100644
index 0000000000..2a0345b129
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/vector.hpp
@@ -0,0 +1,121 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2015 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_VECTOR_HPP
+#define MSGPACK_V1_TYPE_VECTOR_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+
+#include <vector>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+#if !defined(MSGPACK_USE_CPP03)
+
+template <typename T, typename Alloc>
+struct as<std::vector<T, Alloc>, typename std::enable_if<msgpack::has_as<T>::value>::type> {
+ std::vector<T, Alloc> operator()(const msgpack::object& o) const {
+ if (o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ std::vector<T, Alloc> v;
+ v.reserve(o.via.array.size);
+ if (o.via.array.size > 0) {
+ msgpack::object* p = o.via.array.ptr;
+ msgpack::object* const pend = o.via.array.ptr + o.via.array.size;
+ do {
+ v.push_back(p->as<T>());
+ ++p;
+ } while (p < pend);
+ }
+ return v;
+ }
+};
+
+#endif // !defined(MSGPACK_USE_CPP03)
+
+template <typename T, typename Alloc>
+struct convert<std::vector<T, Alloc> > {
+ msgpack::object const& operator()(msgpack::object const& o, std::vector<T, Alloc>& v) const {
+ if (o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ v.resize(o.via.array.size);
+ if (o.via.array.size > 0) {
+ msgpack::object* p = o.via.array.ptr;
+ msgpack::object* const pend = o.via.array.ptr + o.via.array.size;
+ typename std::vector<T, Alloc>::iterator it = v.begin();
+ do {
+ p->convert(*it);
+ ++p;
+ ++it;
+ } while(p < pend);
+ }
+ return o;
+ }
+};
+
+template <typename T, typename Alloc>
+struct pack<std::vector<T, Alloc> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::vector<T, Alloc>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_array(size);
+ for (typename std::vector<T, Alloc>::const_iterator it(v.begin()), it_end(v.end());
+ it != it_end; ++it) {
+ o.pack(*it);
+ }
+ return o;
+ }
+};
+
+template <typename T, typename Alloc>
+struct object_with_zone<std::vector<T, Alloc> > {
+ void operator()(msgpack::object::with_zone& o, const std::vector<T, Alloc>& v) const {
+ o.type = msgpack::type::ARRAY;
+ if (v.empty()) {
+ o.via.array.ptr = MSGPACK_NULLPTR;
+ o.via.array.size = 0;
+ }
+ else {
+ uint32_t size = checked_get_container_size(v.size());
+ msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ msgpack::object* const pend = p + size;
+ o.via.array.ptr = p;
+ o.via.array.size = size;
+ typename std::vector<T, Alloc>::const_iterator it(v.begin());
+ do {
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
+#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+ *p = msgpack::object(*it, o.zone);
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+#pragma GCC diagnostic pop
+#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+ ++p;
+ ++it;
+ } while(p < pend);
+ }
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_VECTOR_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/vector_bool.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/vector_bool.hpp
new file mode 100644
index 0000000000..d6ec245927
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/vector_bool.hpp
@@ -0,0 +1,90 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_VECTOR_BOOL_HPP
+#define MSGPACK_V1_TYPE_VECTOR_BOOL_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/object_fwd.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+
+#include <vector>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+template <typename Alloc>
+struct convert<std::vector<bool, Alloc> > {
+ msgpack::object const& operator()(msgpack::object const& o, std::vector<bool, Alloc>& v) const {
+ if (o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
+ if (o.via.array.size > 0) {
+ v.resize(o.via.array.size);
+ msgpack::object* p = o.via.array.ptr;
+ for (typename std::vector<bool, Alloc>::iterator it = v.begin(), end = v.end();
+ it != end;
+ ++it) {
+ *it = p->as<bool>();
+ ++p;
+ }
+ }
+ return o;
+ }
+};
+
+template <typename Alloc>
+struct pack<std::vector<bool, Alloc> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::vector<bool, Alloc>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_array(size);
+ for(typename std::vector<bool, Alloc>::const_iterator it(v.begin()), it_end(v.end());
+ it != it_end; ++it) {
+ o.pack(static_cast<bool>(*it));
+ }
+ return o;
+ }
+};
+
+template <typename Alloc>
+struct object_with_zone<std::vector<bool, Alloc> > {
+ void operator()(msgpack::object::with_zone& o, const std::vector<bool, Alloc>& v) const {
+ o.type = msgpack::type::ARRAY;
+ if(v.empty()) {
+ o.via.array.ptr = MSGPACK_NULLPTR;
+ o.via.array.size = 0;
+ } else {
+ uint32_t size = checked_get_container_size(v.size());
+ msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ msgpack::object* const pend = p + size;
+ o.via.array.ptr = p;
+ o.via.array.size = size;
+ typename std::vector<bool, Alloc>::const_iterator it(v.begin());
+ do {
+ *p = msgpack::object(static_cast<bool>(*it), o.zone);
+ ++p;
+ ++it;
+ } while(p < pend);
+ }
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_VECTOR_BOOL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/vector_char.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/vector_char.hpp
new file mode 100644
index 0000000000..315dad6785
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/vector_char.hpp
@@ -0,0 +1,114 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2014-2015 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_VECTOR_CHAR_HPP
+#define MSGPACK_V1_TYPE_VECTOR_CHAR_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+
+#include <vector>
+#include <cstring>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+template <typename Alloc>
+struct convert<std::vector<char, Alloc> > {
+ msgpack::object const& operator()(msgpack::object const& o, std::vector<char, Alloc>& v) const {
+ switch (o.type) {
+ case msgpack::type::BIN:
+ v.resize(o.via.bin.size);
+ if (o.via.bin.size != 0) {
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
+#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+ std::memcpy(&v.front(), o.via.bin.ptr, o.via.bin.size);
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+#pragma GCC diagnostic pop
+#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+ }
+ break;
+ case msgpack::type::STR:
+ v.resize(o.via.str.size);
+ if (o.via.str.size != 0) {
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
+#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+ std::memcpy(&v.front(), o.via.str.ptr, o.via.str.size);
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+#pragma GCC diagnostic pop
+#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+ }
+ break;
+ default:
+ throw msgpack::type_error();
+ break;
+ }
+ return o;
+ }
+};
+
+template <typename Alloc>
+struct pack<std::vector<char, Alloc> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::vector<char, Alloc>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_bin(size);
+ if (size != 0) {
+ o.pack_bin_body(&v.front(), size);
+ }
+
+ return o;
+ }
+};
+
+template <typename Alloc>
+struct object<std::vector<char, Alloc> > {
+ void operator()(msgpack::object& o, const std::vector<char, Alloc>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.type = msgpack::type::BIN;
+ if (size != 0) {
+ o.via.bin.ptr = &v.front();
+ }
+ o.via.bin.size = size;
+ }
+};
+
+template <typename Alloc>
+struct object_with_zone<std::vector<char, Alloc> > {
+ void operator()(msgpack::object::with_zone& o, const std::vector<char, Alloc>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.type = msgpack::type::BIN;
+ o.via.bin.size = size;
+ if (size != 0) {
+ char* ptr = static_cast<char*>(o.zone.allocate_align(size, MSGPACK_ZONE_ALIGNOF(char)));
+ o.via.bin.ptr = ptr;
+ std::memcpy(ptr, &v.front(), size);
+ }
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_VECTOR_CHAR_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/adaptor/vector_unsigned_char.hpp b/third_party/msgpack/include/msgpack/v1/adaptor/vector_unsigned_char.hpp
new file mode 100644
index 0000000000..9db72fe7df
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/adaptor/vector_unsigned_char.hpp
@@ -0,0 +1,114 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2014-2015 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_TYPE_VECTOR_UNSIGNED_CHAR_HPP
+#define MSGPACK_V1_TYPE_VECTOR_UNSIGNED_CHAR_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+
+#include <vector>
+#include <cstring>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace adaptor {
+
+template <typename Alloc>
+struct convert<std::vector<unsigned char, Alloc> > {
+ msgpack::object const& operator()(msgpack::object const& o, std::vector<unsigned char, Alloc>& v) const {
+ switch (o.type) {
+ case msgpack::type::BIN:
+ v.resize(o.via.bin.size);
+ if (o.via.bin.size != 0) {
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
+#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+ std::memcpy(&v.front(), o.via.bin.ptr, o.via.bin.size);
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+#pragma GCC diagnostic pop
+#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+ }
+ break;
+ case msgpack::type::STR:
+ v.resize(o.via.str.size);
+ if (o.via.str.size != 0) {
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
+#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+ std::memcpy(&v.front(), o.via.str.ptr, o.via.str.size);
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+#pragma GCC diagnostic pop
+#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
+ }
+ break;
+ default:
+ throw msgpack::type_error();
+ break;
+ }
+ return o;
+ }
+};
+
+template <typename Alloc>
+struct pack<std::vector<unsigned char, Alloc> > {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::vector<unsigned char, Alloc>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.pack_bin(size);
+ if (size != 0) {
+ o.pack_bin_body(reinterpret_cast<char const*>(&v.front()), size);
+ }
+
+ return o;
+ }
+};
+
+template <typename Alloc>
+struct object<std::vector<unsigned char, Alloc> > {
+ void operator()(msgpack::object& o, const std::vector<unsigned char, Alloc>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.type = msgpack::type::BIN;
+ if (size != 0) {
+ o.via.bin.ptr = reinterpret_cast<char const*>(&v.front());
+ }
+ o.via.bin.size = size;
+ }
+};
+
+template <typename Alloc>
+struct object_with_zone<std::vector<unsigned char, Alloc> > {
+ void operator()(msgpack::object::with_zone& o, const std::vector<unsigned char, Alloc>& v) const {
+ uint32_t size = checked_get_container_size(v.size());
+ o.type = msgpack::type::BIN;
+ o.via.bin.size = size;
+ if (size != 0) {
+ char* ptr = static_cast<char*>(o.zone.allocate_align(size, MSGPACK_ZONE_ALIGNOF(char)));
+ o.via.bin.ptr = ptr;
+ std::memcpy(ptr, &v.front(), size);
+ }
+ }
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_TYPE_VECTOR_UNSIGNED_CHAR_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/cpp_config.hpp b/third_party/msgpack/include/msgpack/v1/cpp_config.hpp
new file mode 100644
index 0000000000..0eb518d833
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/cpp_config.hpp
@@ -0,0 +1,139 @@
+//
+// MessagePack for C++ C++03/C++11 Adaptation
+//
+// Copyright (C) 2013-2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_CPP_CONFIG_HPP
+#define MSGPACK_V1_CPP_CONFIG_HPP
+
+#include "msgpack/cpp_config_decl.hpp"
+
+#if defined(MSGPACK_USE_CPP03)
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+template <typename T>
+struct unique_ptr : std::auto_ptr<T> {
+ explicit unique_ptr(T* p = 0) throw() : std::auto_ptr<T>(p) {}
+ unique_ptr(unique_ptr& a) throw() : std::auto_ptr<T>(a) {}
+ template<class Y>
+ unique_ptr (unique_ptr<Y>& a) throw() : std::auto_ptr<T>(a) {}
+};
+
+template <typename T>
+T& move(T& t)
+{
+ return t;
+}
+
+template <typename T>
+T const& move(T const& t)
+{
+ return t;
+}
+
+template <bool P, typename T>
+struct enable_if {
+ typedef T type;
+};
+
+template <typename T>
+struct enable_if<false, T> {
+};
+
+template<typename T, T val>
+struct integral_constant {
+ static T const value = val;
+ typedef T value_type;
+ typedef integral_constant<T, val> type;
+};
+
+typedef integral_constant<bool, true> true_type;
+typedef integral_constant<bool, false> false_type;
+
+template<class T, class U>
+struct is_same : false_type {};
+
+template<class T>
+struct is_same<T, T> : true_type {};
+
+template<typename T>
+struct underlying_type {
+ typedef int type;
+};
+
+template<class T>
+struct is_array : false_type {};
+
+template<class T>
+struct is_array<T[]> : true_type {};
+
+template<class T, std::size_t N>
+struct is_array<T[N]> : true_type {};
+
+
+template<class T>
+struct remove_const {
+ typedef T type;
+};
+template<class T>
+struct remove_const<const T> {
+ typedef T type;
+};
+
+template<class T>
+struct remove_volatile {
+ typedef T type;
+};
+template<class T>
+struct remove_volatile<volatile T> {
+ typedef T type;
+};
+
+template<class T>
+struct remove_cv {
+ typedef typename msgpack::remove_volatile<
+ typename msgpack::remove_const<T>::type
+ >::type type;
+};
+
+namespace detail {
+
+template<class T>
+struct is_pointer_helper : false_type {};
+
+template<class T>
+struct is_pointer_helper<T*> : true_type {};
+
+} // namespace detail
+
+template<class T> struct is_pointer : detail::is_pointer_helper<typename remove_cv<T>::type> {};
+
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_USE_CPP03
+
+#if __cplusplus >= 201402L
+#if defined(_MSC_VER)
+#define MSGPACK_DEPRECATED(msg) __declspec(deprecated(msg))
+#else // _MSC_VER 1914+ with /Zc:__cplusplus, @see https://docs.microsoft.com/cpp/build/reference/zc-cplusplus
+#define MSGPACK_DEPRECATED(msg) [[deprecated(msg)]]
+#endif
+#else // __cplusplus >= 201402L
+#define MSGPACK_DEPRECATED(msg)
+#endif // __cplusplus >= 201402L
+
+#endif // MSGPACK_V1_CPP_CONFIG_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/cpp_config_decl.hpp b/third_party/msgpack/include/msgpack/v1/cpp_config_decl.hpp
new file mode 100644
index 0000000000..c9752f237c
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/cpp_config_decl.hpp
@@ -0,0 +1,137 @@
+//
+// MessagePack for C++ C++03/C++11 Adaptation
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_CPP_CONFIG_DECL_HPP
+#define MSGPACK_V1_CPP_CONFIG_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+
+#if !defined(MSGPACK_USE_CPP03)
+# if defined(_MSC_VER)
+# if _MSC_VER < 1900
+# define MSGPACK_USE_CPP03
+# endif
+# elif (__cplusplus < 201103L)
+# define MSGPACK_USE_CPP03
+# endif
+#endif // MSGPACK_USE_CPP03
+
+
+#if defined(MSGPACK_USE_CPP03)
+
+#if defined(nullptr)
+# if defined (__cplusplus_cli)
+# define MSGPACK_NULLPTR __nullptr
+# else // defined (__cplusplus_cli)
+# define MSGPACK_NULLPTR nullptr
+# endif // defined (__cplusplus_cli)
+#else // defined(nullptr)
+# define MSGPACK_NULLPTR (0)
+#endif // defined(nullptr)
+
+#include <memory>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+template <typename T>
+struct unique_ptr;
+
+template <typename T>
+T& move(T& t);
+
+template <typename T>
+T const& move(T const& t);
+
+template <bool P, typename T = void>
+struct enable_if;
+
+template<typename T, T val>
+struct integral_constant;
+
+typedef integral_constant<bool, true> true_type;
+typedef integral_constant<bool, false> false_type;
+
+template<class T, class U>
+struct is_same;
+
+template<typename T>
+struct underlying_type;
+
+template<class T>
+struct is_array;
+
+template<class T>
+struct remove_const;
+template<class T>
+struct remove_volatile;
+template<class T>
+struct remove_cv;
+
+template<class T>
+struct is_pointer;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+
+#else // MSGPACK_USE_CPP03
+
+#if defined (__cplusplus_cli)
+# define MSGPACK_NULLPTR __nullptr
+#else // defined (__cplusplus_cli)
+# define MSGPACK_NULLPTR nullptr
+#endif // defined (__cplusplus_cli)
+
+#include <memory>
+#include <tuple>
+
+namespace msgpack {
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+ // unique_ptr
+ using std::unique_ptr;
+ // using std::make_unique; // since C++14
+ using std::hash;
+
+ // utility
+ using std::move;
+ using std::swap;
+ using std::enable_if;
+ using std::is_same;
+ using std::underlying_type;
+ using std::is_array;
+ using std::remove_const;
+ using std::remove_volatile;
+ using std::remove_cv;
+ using std::is_pointer;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+} // namespace msgpack
+
+
+#endif // MSGPACK_USE_CPP03
+
+#if defined(__has_include)
+#define MSGPACK_HAS_INCLUDE __has_include
+#else // defined(__has_include)
+#define MSGPACK_HAS_INCLUDE(header) 0
+#endif // defined(__has_include)
+
+#endif // MSGPACK_V1_CPP_CONFIG_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/detail/cpp03_zone.hpp b/third_party/msgpack/include/msgpack/v1/detail/cpp03_zone.hpp
new file mode 100644
index 0000000000..73abe69416
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/detail/cpp03_zone.hpp
@@ -0,0 +1,664 @@
+//
+// MessagePack for C++ memory pool
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_CPP03_ZONE_HPP
+#define MSGPACK_V1_CPP03_ZONE_HPP
+
+#include "msgpack/zone_decl.hpp"
+
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+class zone {
+ struct finalizer {
+ finalizer(void (*func)(void*), void* data):m_func(func), m_data(data) {}
+ void operator()() { m_func(m_data); }
+ void (*m_func)(void*);
+ void* m_data;
+ };
+ struct finalizer_array {
+ finalizer_array():m_tail(MSGPACK_NULLPTR), m_end(MSGPACK_NULLPTR), m_array(MSGPACK_NULLPTR) {}
+ void call() {
+ finalizer* fin = m_tail;
+ for(; fin != m_array; --fin) (*(fin-1))();
+ }
+ ~finalizer_array() {
+ call();
+ ::free(m_array);
+ }
+ void clear() {
+ call();
+ m_tail = m_array;
+ }
+ void push(void (*func)(void* data), void* data)
+ {
+ finalizer* fin = m_tail;
+
+ if(fin == m_end) {
+ push_expand(func, data);
+ return;
+ }
+
+ fin->m_func = func;
+ fin->m_data = data;
+
+ ++m_tail;
+ }
+ void push_expand(void (*func)(void*), void* data) {
+ const size_t nused = m_end - m_array;
+ size_t nnext;
+ if(nused == 0) {
+ nnext = (sizeof(finalizer) < 72/2) ?
+ 72 / sizeof(finalizer) : 8;
+ } else {
+ nnext = nused * 2;
+ }
+ finalizer* tmp =
+ static_cast<finalizer*>(::realloc(m_array, sizeof(finalizer) * nnext));
+ if(!tmp) {
+ throw std::bad_alloc();
+ }
+ m_array = tmp;
+ m_end = tmp + nnext;
+ m_tail = tmp + nused;
+ new (m_tail) finalizer(func, data);
+
+ ++m_tail;
+ }
+ finalizer* m_tail;
+ finalizer* m_end;
+ finalizer* m_array;
+ };
+ struct chunk {
+ chunk* m_next;
+ };
+ struct chunk_list {
+ chunk_list(size_t chunk_size)
+ {
+ chunk* c = static_cast<chunk*>(::malloc(sizeof(chunk) + chunk_size));
+ if(!c) {
+ throw std::bad_alloc();
+ }
+
+ m_head = c;
+ m_free = chunk_size;
+ m_ptr = reinterpret_cast<char*>(c) + sizeof(chunk);
+ c->m_next = MSGPACK_NULLPTR;
+ }
+ ~chunk_list()
+ {
+ chunk* c = m_head;
+ while(c) {
+ chunk* n = c->m_next;
+ ::free(c);
+ c = n;
+ }
+ }
+ void clear(size_t chunk_size)
+ {
+ chunk* c = m_head;
+ while(true) {
+ chunk* n = c->m_next;
+ if(n) {
+ ::free(c);
+ c = n;
+ } else {
+ m_head = c;
+ break;
+ }
+ }
+ m_head->m_next = MSGPACK_NULLPTR;
+ m_free = chunk_size;
+ m_ptr = reinterpret_cast<char*>(m_head) + sizeof(chunk);
+ }
+ size_t m_free;
+ char* m_ptr;
+ chunk* m_head;
+ };
+ size_t m_chunk_size;
+ chunk_list m_chunk_list;
+ finalizer_array m_finalizer_array;
+
+public:
+ zone(size_t chunk_size = MSGPACK_ZONE_CHUNK_SIZE) /* throw() */;
+
+public:
+ void* allocate_align(size_t size, size_t align = MSGPACK_ZONE_ALIGN);
+ void* allocate_no_align(size_t size);
+
+ void push_finalizer(void (*func)(void*), void* data);
+
+ template <typename T>
+ void push_finalizer(msgpack::unique_ptr<T> obj);
+
+ void clear();
+
+ void swap(zone& o);
+ static void* operator new(std::size_t size)
+ {
+ void* p = ::malloc(size);
+ if (!p) throw std::bad_alloc();
+ return p;
+ }
+ static void operator delete(void *p) /* throw() */
+ {
+ ::free(p);
+ }
+ static void* operator new(std::size_t size, void* place) /* throw() */
+ {
+ return ::operator new(size, place);
+ }
+ static void operator delete(void* p, void* place) /* throw() */
+ {
+ ::operator delete(p, place);
+ }
+ /// @cond
+
+ template <typename T>
+ T* allocate();
+
+ template <typename T, typename A1>
+ T* allocate(A1 a1);
+
+ template <typename T, typename A1, typename A2>
+ T* allocate(A1 a1, A2 a2);
+
+ template <typename T, typename A1, typename A2, typename A3>
+ T* allocate(A1 a1, A2 a2, A3 a3);
+
+ template <typename T, typename A1, typename A2, typename A3, typename A4>
+ T* allocate(A1 a1, A2 a2, A3 a3, A4 a4);
+
+ template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5>
+ T* allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5);
+
+ template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+ T* allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6);
+
+ template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+ T* allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7);
+
+ template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+ T* allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8);
+
+ template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+ T* allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9);
+
+ template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+ T* allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10);
+
+ template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+ T* allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11);
+
+ template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+ T* allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12);
+
+ template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+ T* allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13);
+
+ template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+ T* allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14);
+
+ template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+ T* allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15);
+
+ /// @endcond
+
+private:
+ void undo_allocate(size_t size);
+
+ template <typename T>
+ static void object_destruct(void* obj);
+
+ template <typename T>
+ static void object_delete(void* obj);
+
+ static char* get_aligned(char* ptr, size_t align);
+
+ char* allocate_expand(size_t size);
+private:
+ zone(const zone&);
+ zone& operator=(const zone&);
+};
+
+inline zone::zone(size_t chunk_size) /* throw() */ :m_chunk_size(chunk_size), m_chunk_list(m_chunk_size)
+{
+}
+
+inline char* zone::get_aligned(char* ptr, size_t align)
+{
+ return
+ reinterpret_cast<char*>(
+ reinterpret_cast<size_t>(
+ (ptr + (align - 1))) / align * align);
+}
+
+inline void* zone::allocate_align(size_t size, size_t align)
+{
+ char* aligned = get_aligned(m_chunk_list.m_ptr, align);
+ size_t adjusted_size = size + (aligned - m_chunk_list.m_ptr);
+ if (m_chunk_list.m_free < adjusted_size) {
+ size_t enough_size = size + align - 1;
+ char* ptr = allocate_expand(enough_size);
+ aligned = get_aligned(ptr, align);
+ adjusted_size = size + (aligned - m_chunk_list.m_ptr);
+ }
+ m_chunk_list.m_free -= adjusted_size;
+ m_chunk_list.m_ptr += adjusted_size;
+ return aligned;
+}
+
+inline void* zone::allocate_no_align(size_t size)
+{
+ char* ptr = m_chunk_list.m_ptr;
+ if(m_chunk_list.m_free < size) {
+ ptr = allocate_expand(size);
+ }
+ m_chunk_list.m_free -= size;
+ m_chunk_list.m_ptr += size;
+
+ return ptr;
+}
+
+inline char* zone::allocate_expand(size_t size)
+{
+ chunk_list* const cl = &m_chunk_list;
+
+ size_t sz = m_chunk_size;
+
+ while(sz < size) {
+ size_t tmp_sz = sz * 2;
+ if (tmp_sz <= sz) {
+ sz = size;
+ break;
+ }
+ sz = tmp_sz;
+ }
+
+ chunk* c = static_cast<chunk*>(::malloc(sizeof(chunk) + sz));
+ if (!c) throw std::bad_alloc();
+
+ char* ptr = reinterpret_cast<char*>(c) + sizeof(chunk);
+
+ c->m_next = cl->m_head;
+ cl->m_head = c;
+ cl->m_free = sz;
+ cl->m_ptr = ptr;
+
+ return ptr;
+}
+
+inline void zone::push_finalizer(void (*func)(void*), void* data)
+{
+ m_finalizer_array.push(func, data);
+}
+
+template <typename T>
+inline void zone::push_finalizer(msgpack::unique_ptr<T> obj)
+{
+ m_finalizer_array.push(&zone::object_delete<T>, obj.release());
+}
+
+inline void zone::clear()
+{
+ m_finalizer_array.clear();
+ m_chunk_list.clear(m_chunk_size);
+}
+
+inline void zone::swap(zone& o)
+{
+ using std::swap;
+ swap(m_chunk_size, o.m_chunk_size);
+ swap(m_chunk_list, o.m_chunk_list);
+ swap(m_finalizer_array, o.m_finalizer_array);
+}
+
+template <typename T>
+void zone::object_destruct(void* obj)
+{
+ static_cast<T*>(obj)->~T();
+}
+
+template <typename T>
+void zone::object_delete(void* obj)
+{
+ delete static_cast<T*>(obj);
+}
+
+inline void zone::undo_allocate(size_t size)
+{
+ m_chunk_list.m_ptr -= size;
+ m_chunk_list.m_free += size;
+}
+
+inline std::size_t aligned_size(
+ std::size_t size,
+ std::size_t align) {
+ return (size + align - 1) / align * align;
+}
+
+/// @cond
+
+template <typename T>
+T* zone::allocate()
+{
+ void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
+ try {
+ m_finalizer_array.push(&zone::object_destruct<T>, x);
+ } catch (...) {
+ undo_allocate(sizeof(T));
+ throw;
+ }
+ try {
+ return new (x) T();
+ } catch (...) {
+ --m_finalizer_array.m_tail;
+ undo_allocate(sizeof(T));
+ throw;
+ }
+}
+
+template <typename T, typename A1>
+T* zone::allocate(A1 a1)
+{
+ void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
+ try {
+ m_finalizer_array.push(&zone::object_destruct<T>, x);
+ } catch (...) {
+ undo_allocate(sizeof(T));
+ throw;
+ }
+ try {
+ return new (x) T(a1);
+ } catch (...) {
+ --m_finalizer_array.m_tail;
+ undo_allocate(sizeof(T));
+ throw;
+ }
+}
+
+template <typename T, typename A1, typename A2>
+T* zone::allocate(A1 a1, A2 a2)
+{
+ void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
+ try {
+ m_finalizer_array.push(&zone::object_destruct<T>, x);
+ } catch (...) {
+ undo_allocate(sizeof(T));
+ throw;
+ }
+ try {
+ return new (x) T(a1, a2);
+ } catch (...) {
+ --m_finalizer_array.m_tail;
+ undo_allocate(sizeof(T));
+ throw;
+ }
+}
+
+template <typename T, typename A1, typename A2, typename A3>
+T* zone::allocate(A1 a1, A2 a2, A3 a3)
+{
+ void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
+ try {
+ m_finalizer_array.push(&zone::object_destruct<T>, x);
+ } catch (...) {
+ undo_allocate(sizeof(T));
+ throw;
+ }
+ try {
+ return new (x) T(a1, a2, a3);
+ } catch (...) {
+ --m_finalizer_array.m_tail;
+ undo_allocate(sizeof(T));
+ throw;
+ }
+}
+
+template <typename T, typename A1, typename A2, typename A3, typename A4>
+T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4)
+{
+ void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
+ try {
+ m_finalizer_array.push(&zone::object_destruct<T>, x);
+ } catch (...) {
+ undo_allocate(sizeof(T));
+ throw;
+ }
+ try {
+ return new (x) T(a1, a2, a3, a4);
+ } catch (...) {
+ --m_finalizer_array.m_tail;
+ undo_allocate(sizeof(T));
+ throw;
+ }
+}
+
+template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5>
+T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
+{
+ void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
+ try {
+ m_finalizer_array.push(&zone::object_destruct<T>, x);
+ } catch (...) {
+ undo_allocate(sizeof(T));
+ throw;
+ }
+ try {
+ return new (x) T(a1, a2, a3, a4, a5);
+ } catch (...) {
+ --m_finalizer_array.m_tail;
+ undo_allocate(sizeof(T));
+ throw;
+ }
+}
+
+template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
+{
+ void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
+ try {
+ m_finalizer_array.push(&zone::object_destruct<T>, x);
+ } catch (...) {
+ undo_allocate(sizeof(T));
+ throw;
+ }
+ try {
+ return new (x) T(a1, a2, a3, a4, a5, a6);
+ } catch (...) {
+ --m_finalizer_array.m_tail;
+ undo_allocate(sizeof(T));
+ throw;
+ }
+}
+
+template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
+{
+ void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
+ try {
+ m_finalizer_array.push(&zone::object_destruct<T>, x);
+ } catch (...) {
+ undo_allocate(sizeof(T));
+ throw;
+ }
+ try {
+ return new (x) T(a1, a2, a3, a4, a5, a6, a7);
+ } catch (...) {
+ --m_finalizer_array.m_tail;
+ undo_allocate(sizeof(T));
+ throw;
+ }
+}
+
+template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
+{
+ void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
+ try {
+ m_finalizer_array.push(&zone::object_destruct<T>, x);
+ } catch (...) {
+ undo_allocate(sizeof(T));
+ throw;
+ }
+ try {
+ return new (x) T(a1, a2, a3, a4, a5, a6, a7, a8);
+ } catch (...) {
+ --m_finalizer_array.m_tail;
+ undo_allocate(sizeof(T));
+ throw;
+ }
+}
+
+template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
+{
+ void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
+ try {
+ m_finalizer_array.push(&zone::object_destruct<T>, x);
+ } catch (...) {
+ undo_allocate(sizeof(T));
+ throw;
+ }
+ try {
+ return new (x) T(a1, a2, a3, a4, a5, a6, a7, a8, a9);
+ } catch (...) {
+ --m_finalizer_array.m_tail;
+ undo_allocate(sizeof(T));
+ throw;
+ }
+}
+
+template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10)
+{
+ void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
+ try {
+ m_finalizer_array.push(&zone::object_destruct<T>, x);
+ } catch (...) {
+ undo_allocate(sizeof(T));
+ throw;
+ }
+ try {
+ return new (x) T(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
+ } catch (...) {
+ --m_finalizer_array.m_tail;
+ undo_allocate(sizeof(T));
+ throw;
+ }
+}
+
+template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11)
+{
+ void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
+ try {
+ m_finalizer_array.push(&zone::object_destruct<T>, x);
+ } catch (...) {
+ undo_allocate(sizeof(T));
+ throw;
+ }
+ try {
+ return new (x) T(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
+ } catch (...) {
+ --m_finalizer_array.m_tail;
+ undo_allocate(sizeof(T));
+ throw;
+ }
+}
+
+template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12)
+{
+ void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
+ try {
+ m_finalizer_array.push(&zone::object_destruct<T>, x);
+ } catch (...) {
+ undo_allocate(sizeof(T));
+ throw;
+ }
+ try {
+ return new (x) T(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12);
+ } catch (...) {
+ --m_finalizer_array.m_tail;
+ undo_allocate(sizeof(T));
+ throw;
+ }
+}
+
+template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13)
+{
+ void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
+ try {
+ m_finalizer_array.push(&zone::object_destruct<T>, x);
+ } catch (...) {
+ undo_allocate(sizeof(T));
+ throw;
+ }
+ try {
+ return new (x) T(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13);
+ } catch (...) {
+ --m_finalizer_array.m_tail;
+ undo_allocate(sizeof(T));
+ throw;
+ }
+}
+
+template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
+T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14)
+{
+ void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
+ try {
+ m_finalizer_array.push(&zone::object_destruct<T>, x);
+ } catch (...) {
+ undo_allocate(sizeof(T));
+ throw;
+ }
+ try {
+ return new (x) T(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14);
+ } catch (...) {
+ --m_finalizer_array.m_tail;
+ undo_allocate(sizeof(T));
+ throw;
+ }
+}
+
+template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
+T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15)
+{
+ void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
+ try {
+ m_finalizer_array.push(&zone::object_destruct<T>, x);
+ } catch (...) {
+ undo_allocate(sizeof(T));
+ throw;
+ }
+ try {
+ return new (x) T(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15);
+ } catch (...) {
+ --m_finalizer_array.m_tail;
+ undo_allocate(sizeof(T));
+ throw;
+ }
+}
+
+/// @endcond
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_CPP03_ZONE_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/detail/cpp03_zone_decl.hpp b/third_party/msgpack/include/msgpack/v1/detail/cpp03_zone_decl.hpp
new file mode 100644
index 0000000000..66d4cac0a5
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/detail/cpp03_zone_decl.hpp
@@ -0,0 +1,54 @@
+//
+// MessagePack for C++ memory pool
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_CPP03_ZONE_DECL_HPP
+#define MSGPACK_V1_CPP03_ZONE_DECL_HPP
+
+#include <cstdlib>
+#include <memory>
+#include <vector>
+
+#include "msgpack/versioning.hpp"
+
+#ifndef MSGPACK_ZONE_CHUNK_SIZE
+#define MSGPACK_ZONE_CHUNK_SIZE 8192
+#endif
+
+#ifndef MSGPACK_ZONE_ALIGN
+#define MSGPACK_ZONE_ALIGN sizeof(void*)
+#endif
+
+#if defined(_MSC_VER)
+#define MSGPACK_ZONE_ALIGNOF(type) __alignof(type)
+#else
+#define MSGPACK_ZONE_ALIGNOF(type) __alignof__(type)
+#endif
+// For a compiler that doesn't support __alignof__:
+// #define MSGPACK_ZONE_ALIGNOF(type) MSGPACK_ZONE_ALIGN
+
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+class zone;
+
+std::size_t aligned_size(
+ std::size_t size,
+ std::size_t align = MSGPACK_ZONE_ALIGN);
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_CPP03_ZONE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/detail/cpp11_zone.hpp b/third_party/msgpack/include/msgpack/v1/detail/cpp11_zone.hpp
new file mode 100644
index 0000000000..04659ba60b
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/detail/cpp11_zone.hpp
@@ -0,0 +1,366 @@
+//
+// MessagePack for C++ memory pool
+//
+// Copyright (C) 2008-2013 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_CPP11_ZONE_HPP
+#define MSGPACK_CPP11_ZONE_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/cpp_config.hpp"
+#include "msgpack/zone_decl.hpp"
+
+#include <cstdlib>
+#include <memory>
+#include <vector>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+class zone {
+private:
+ struct finalizer {
+ finalizer(void (*func)(void*), void* data):m_func(func), m_data(data) {}
+ void operator()() { m_func(m_data); }
+ void (*m_func)(void*);
+ void* m_data;
+ };
+ struct finalizer_array {
+ finalizer_array():m_tail(MSGPACK_NULLPTR), m_end(MSGPACK_NULLPTR), m_array(MSGPACK_NULLPTR) {}
+ void call() {
+ finalizer* fin = m_tail;
+ for(; fin != m_array; --fin) (*(fin-1))();
+ }
+ ~finalizer_array() {
+ call();
+ ::free(m_array);
+ }
+ void clear() {
+ call();
+ m_tail = m_array;
+ }
+ void push(void (*func)(void* data), void* data)
+ {
+ finalizer* fin = m_tail;
+
+ if(fin == m_end) {
+ push_expand(func, data);
+ return;
+ }
+
+ fin->m_func = func;
+ fin->m_data = data;
+
+ ++m_tail;
+ }
+ void push_expand(void (*func)(void*), void* data) {
+ const size_t nused = m_end - m_array;
+ size_t nnext;
+ if(nused == 0) {
+ nnext = (sizeof(finalizer) < 72/2) ?
+ 72 / sizeof(finalizer) : 8;
+ } else {
+ nnext = nused * 2;
+ }
+ finalizer* tmp =
+ static_cast<finalizer*>(::realloc(m_array, sizeof(finalizer) * nnext));
+ if(!tmp) {
+ throw std::bad_alloc();
+ }
+ m_array = tmp;
+ m_end = tmp + nnext;
+ m_tail = tmp + nused;
+ new (m_tail) finalizer(func, data);
+
+ ++m_tail;
+ }
+ finalizer_array(finalizer_array&& other) noexcept
+ :m_tail(other.m_tail), m_end(other.m_end), m_array(other.m_array)
+ {
+ other.m_tail = MSGPACK_NULLPTR;
+ other.m_end = MSGPACK_NULLPTR;
+ other.m_array = MSGPACK_NULLPTR;
+ }
+ finalizer_array& operator=(finalizer_array&& other) noexcept
+ {
+ this->~finalizer_array();
+ new (this) finalizer_array(std::move(other));
+ return *this;
+ }
+
+ finalizer* m_tail;
+ finalizer* m_end;
+ finalizer* m_array;
+
+ private:
+ finalizer_array(const finalizer_array&);
+ finalizer_array& operator=(const finalizer_array&);
+ };
+ struct chunk {
+ chunk* m_next;
+ };
+ struct chunk_list {
+ chunk_list(size_t chunk_size)
+ {
+ chunk* c = static_cast<chunk*>(::malloc(sizeof(chunk) + chunk_size));
+ if(!c) {
+ throw std::bad_alloc();
+ }
+
+ m_head = c;
+ m_free = chunk_size;
+ m_ptr = reinterpret_cast<char*>(c) + sizeof(chunk);
+ c->m_next = MSGPACK_NULLPTR;
+ }
+ ~chunk_list()
+ {
+ chunk* c = m_head;
+ while(c) {
+ chunk* n = c->m_next;
+ ::free(c);
+ c = n;
+ }
+ }
+ void clear(size_t chunk_size)
+ {
+ chunk* c = m_head;
+ while(true) {
+ chunk* n = c->m_next;
+ if(n) {
+ ::free(c);
+ c = n;
+ } else {
+ m_head = c;
+ break;
+ }
+ }
+ m_head->m_next = MSGPACK_NULLPTR;
+ m_free = chunk_size;
+ m_ptr = reinterpret_cast<char*>(m_head) + sizeof(chunk);
+ }
+ chunk_list(chunk_list&& other) noexcept
+ :m_free(other.m_free), m_ptr(other.m_ptr), m_head(other.m_head)
+ {
+ other.m_head = MSGPACK_NULLPTR;
+ }
+ chunk_list& operator=(chunk_list&& other) noexcept
+ {
+ this->~chunk_list();
+ new (this) chunk_list(std::move(other));
+ return *this;
+ }
+
+ size_t m_free;
+ char* m_ptr;
+ chunk* m_head;
+ private:
+ chunk_list(const chunk_list&);
+ chunk_list& operator=(const chunk_list&);
+ };
+ size_t m_chunk_size;
+ chunk_list m_chunk_list;
+ finalizer_array m_finalizer_array;
+
+public:
+ zone(size_t chunk_size = MSGPACK_ZONE_CHUNK_SIZE) noexcept;
+
+public:
+ void* allocate_align(size_t size, size_t align = MSGPACK_ZONE_ALIGN);
+ void* allocate_no_align(size_t size);
+
+ void push_finalizer(void (*func)(void*), void* data);
+
+ template <typename T>
+ void push_finalizer(msgpack::unique_ptr<T> obj);
+
+ void clear();
+
+ void swap(zone& o);
+
+ static void* operator new(std::size_t size)
+ {
+ void* p = ::malloc(size);
+ if (!p) throw std::bad_alloc();
+ return p;
+ }
+ static void operator delete(void *p) noexcept
+ {
+ ::free(p);
+ }
+ static void* operator new(std::size_t /*size*/, void* mem) noexcept
+ {
+ return mem;
+ }
+ static void operator delete(void * /*p*/, void* /*mem*/) noexcept
+ {
+ }
+
+ template <typename T, typename... Args>
+ T* allocate(Args... args);
+
+ zone(zone&&) = default;
+ zone& operator=(zone&&) = default;
+ zone(const zone&) = delete;
+ zone& operator=(const zone&) = delete;
+
+private:
+ void undo_allocate(size_t size);
+
+ template <typename T>
+ static void object_destruct(void* obj);
+
+ template <typename T>
+ static void object_delete(void* obj);
+
+ static char* get_aligned(char* ptr, size_t align);
+
+ char* allocate_expand(size_t size);
+};
+
+inline zone::zone(size_t chunk_size) noexcept:m_chunk_size(chunk_size), m_chunk_list(m_chunk_size)
+{
+}
+
+inline char* zone::get_aligned(char* ptr, size_t align)
+{
+ return
+ reinterpret_cast<char*>(
+ reinterpret_cast<size_t>(
+ (ptr + (align - 1))) / align * align);
+}
+
+inline void* zone::allocate_align(size_t size, size_t align)
+{
+ char* aligned = get_aligned(m_chunk_list.m_ptr, align);
+ size_t adjusted_size = size + (aligned - m_chunk_list.m_ptr);
+ if (m_chunk_list.m_free < adjusted_size) {
+ size_t enough_size = size + align - 1;
+ char* ptr = allocate_expand(enough_size);
+ aligned = get_aligned(ptr, align);
+ adjusted_size = size + (aligned - m_chunk_list.m_ptr);
+ }
+ m_chunk_list.m_free -= adjusted_size;
+ m_chunk_list.m_ptr += adjusted_size;
+ return aligned;
+}
+
+inline void* zone::allocate_no_align(size_t size)
+{
+ char* ptr = m_chunk_list.m_ptr;
+ if(m_chunk_list.m_free < size) {
+ ptr = allocate_expand(size);
+ }
+ m_chunk_list.m_free -= size;
+ m_chunk_list.m_ptr += size;
+
+ return ptr;
+}
+
+inline char* zone::allocate_expand(size_t size)
+{
+ chunk_list* const cl = &m_chunk_list;
+
+ size_t sz = m_chunk_size;
+
+ while(sz < size) {
+ size_t tmp_sz = sz * 2;
+ if (tmp_sz <= sz) {
+ sz = size;
+ break;
+ }
+ sz = tmp_sz;
+ }
+
+ chunk* c = static_cast<chunk*>(::malloc(sizeof(chunk) + sz));
+ if (!c) throw std::bad_alloc();
+
+ char* ptr = reinterpret_cast<char*>(c) + sizeof(chunk);
+
+ c->m_next = cl->m_head;
+ cl->m_head = c;
+ cl->m_free = sz;
+ cl->m_ptr = ptr;
+
+ return ptr;
+}
+
+inline void zone::push_finalizer(void (*func)(void*), void* data)
+{
+ m_finalizer_array.push(func, data);
+}
+
+template <typename T>
+inline void zone::push_finalizer(msgpack::unique_ptr<T> obj)
+{
+ m_finalizer_array.push(&zone::object_delete<T>, obj.release());
+}
+
+inline void zone::clear()
+{
+ m_finalizer_array.clear();
+ m_chunk_list.clear(m_chunk_size);
+}
+
+inline void zone::swap(zone& o)
+{
+ std::swap(*this, o);
+}
+
+template <typename T>
+void zone::object_delete(void* obj)
+{
+ delete static_cast<T*>(obj);
+}
+
+template <typename T>
+void zone::object_destruct(void* obj)
+{
+ static_cast<T*>(obj)->~T();
+}
+
+inline void zone::undo_allocate(size_t size)
+{
+ m_chunk_list.m_ptr -= size;
+ m_chunk_list.m_free += size;
+}
+
+
+template <typename T, typename... Args>
+T* zone::allocate(Args... args)
+{
+ void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
+ try {
+ m_finalizer_array.push(&zone::object_destruct<T>, x);
+ } catch (...) {
+ undo_allocate(sizeof(T));
+ throw;
+ }
+ try {
+ return new (x) T(args...);
+ } catch (...) {
+ --m_finalizer_array.m_tail;
+ undo_allocate(sizeof(T));
+ throw;
+ }
+}
+
+inline std::size_t aligned_size(
+ std::size_t size,
+ std::size_t align) {
+ return (size + align - 1) / align * align;
+}
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_CPP11_ZONE_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/detail/cpp11_zone_decl.hpp b/third_party/msgpack/include/msgpack/v1/detail/cpp11_zone_decl.hpp
new file mode 100644
index 0000000000..3675018448
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/detail/cpp11_zone_decl.hpp
@@ -0,0 +1,55 @@
+//
+// MessagePack for C++ memory pool
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_CPP11_ZONE_DECL_HPP
+#define MSGPACK_V1_CPP11_ZONE_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+
+#include <cstdlib>
+#include <memory>
+#include <vector>
+
+#include "msgpack/cpp_config.hpp"
+
+#ifndef MSGPACK_ZONE_CHUNK_SIZE
+#define MSGPACK_ZONE_CHUNK_SIZE 8192
+#endif
+
+#ifndef MSGPACK_ZONE_ALIGN
+#define MSGPACK_ZONE_ALIGN sizeof(void*)
+#endif
+
+#if defined(_MSC_VER)
+#define MSGPACK_ZONE_ALIGNOF(type) __alignof(type)
+#else
+#define MSGPACK_ZONE_ALIGNOF(type) __alignof__(type)
+#endif
+// For a compiler that doesn't support __alignof__:
+// #define MSGPACK_ZONE_ALIGNOF(type) MSGPACK_ZONE_ALIGN
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+class zone;
+
+std::size_t aligned_size(
+ std::size_t size,
+ std::size_t align = MSGPACK_ZONE_ALIGN);
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_CPP11_ZONE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/fbuffer.hpp b/third_party/msgpack/include/msgpack/v1/fbuffer.hpp
new file mode 100644
index 0000000000..265af19baf
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/fbuffer.hpp
@@ -0,0 +1,60 @@
+//
+// MessagePack for C++ FILE* buffer adaptor
+//
+// Copyright (C) 2013 Vladimir Volodko
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_FBUFFER_HPP
+#define MSGPACK_V1_FBUFFER_HPP
+
+#include "msgpack/v1/fbuffer_decl.hpp"
+
+#include <cstdio>
+#include <stdexcept>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+class fbuffer {
+public:
+ explicit fbuffer(FILE* file) : m_file(file) { }
+
+public:
+ void write(const char* buf, unsigned int len)
+ {
+ if (1 != fwrite(buf, len, 1, m_file)) {
+ throw std::runtime_error("fwrite() failed");
+ }
+ }
+
+ FILE* file() const
+ {
+ return m_file;
+ }
+
+#if defined(MSGPACK_USE_CPP03)
+private:
+ fbuffer(const fbuffer&);
+ fbuffer& operator=(const fbuffer&);
+#else // defined(MSGPACK_USE_CPP03)
+ fbuffer(const fbuffer&) = delete;
+ fbuffer& operator=(const fbuffer&) = delete;
+#endif // defined(MSGPACK_USE_CPP03)
+
+private:
+ FILE* m_file;
+};
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_FBUFFER_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/fbuffer_decl.hpp b/third_party/msgpack/include/msgpack/v1/fbuffer_decl.hpp
new file mode 100644
index 0000000000..1e9726a6a3
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/fbuffer_decl.hpp
@@ -0,0 +1,32 @@
+//
+// MessagePack for C++ FILE* buffer adaptor
+//
+// Copyright (C) 2013-2016 Vladimir Volodko and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_FBUFFER_DECL_HPP
+#define MSGPACK_V1_FBUFFER_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+
+#include <cstdio>
+#include <stdexcept>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+class fbuffer;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_FBUFFER_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/iterator.hpp b/third_party/msgpack/include/msgpack/v1/iterator.hpp
new file mode 100644
index 0000000000..fac5937525
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/iterator.hpp
@@ -0,0 +1,40 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015-2016 MIZUKI Hirata
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_V1_ITERATOR_HPP
+#define MSGPACK_V1_ITERATOR_HPP
+#if !defined(MSGPACK_USE_CPP03)
+
+#include "msgpack/v1/fbuffer_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+inline msgpack::object_kv* begin(msgpack::object_map &map) { return map.ptr; }
+inline const msgpack::object_kv* begin(const msgpack::object_map &map) { return map.ptr; }
+inline msgpack::object_kv* end(msgpack::object_map &map) { return map.ptr + map.size; }
+inline const msgpack::object_kv* end(const msgpack::object_map &map) { return map.ptr + map.size; }
+
+inline msgpack::object* begin(msgpack::object_array &array) { return array.ptr; }
+inline const msgpack::object* begin(const msgpack::object_array &array) { return array.ptr; }
+inline msgpack::object* end(msgpack::object_array &array) { return array.ptr + array.size; }
+inline const msgpack::object* end(const msgpack::object_array &array) { return array.ptr + array.size; }
+
+/// @cond
+}
+/// @endcond
+
+}
+
+#endif // !defined(MSGPACK_USE_CPP03)
+#endif // MSGPACK_V1_ITERATOR_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/iterator_decl.hpp b/third_party/msgpack/include/msgpack/v1/iterator_decl.hpp
new file mode 100644
index 0000000000..1bec2e380d
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/iterator_decl.hpp
@@ -0,0 +1,40 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015-2016 MIZUKI Hirata
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_V1_ITERATOR_DECL_HPP
+#define MSGPACK_V1_ITERATOR_DECL_HPP
+#if !defined(MSGPACK_USE_CPP03)
+
+#include <msgpack/object_fwd.hpp>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+msgpack::object_kv* begin(msgpack::object_map &map);
+const msgpack::object_kv* begin(const msgpack::object_map &map);
+msgpack::object_kv* end(msgpack::object_map &map);
+const msgpack::object_kv* end(const msgpack::object_map &map);
+
+msgpack::object* begin(msgpack::object_array &array);
+const msgpack::object* begin(const msgpack::object_array &array);
+msgpack::object* end(msgpack::object_array &array);
+const msgpack::object* end(const msgpack::object_array &array);
+
+/// @cond
+}
+/// @endcond
+
+}
+
+#endif // !defined(MSGPACK_USE_CPP03)
+#endif // MSGPACK_V1_ITERATOR_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/meta.hpp b/third_party/msgpack/include/msgpack/v1/meta.hpp
new file mode 100644
index 0000000000..75ab7978d0
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/meta.hpp
@@ -0,0 +1,53 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_V1_META_HPP
+#define MSGPACK_V1_META_HPP
+
+#if !defined(MSGPACK_USE_CPP03)
+
+#include "msgpack/v1/meta_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+
+
+namespace detail {
+
+template<bool...values> struct all_of_imp
+ : std::is_same<bool_pack<values..., true>, bool_pack<true, values...>>{};
+
+template<bool...values> struct any_of_imp {
+ static const bool value = !std::is_same<bool_pack<values..., false>, bool_pack<false, values...>>::value;
+};
+
+} // namespace detail
+
+template<std::size_t... Is> struct seq {};
+
+template<std::size_t N, std::size_t... Is>
+struct gen_seq : gen_seq<N-1, N-1, Is...> {};
+
+template<std::size_t... Is>
+struct gen_seq<0, Is...> : seq<Is...> {};
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // !defined(MSGPACK_USE_CPP03)
+
+#endif // MSGPACK_V1_META_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/meta_decl.hpp b/third_party/msgpack/include/msgpack/v1/meta_decl.hpp
new file mode 100644
index 0000000000..c3254e7607
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/meta_decl.hpp
@@ -0,0 +1,57 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015-2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_V1_META_DECL_HPP
+#define MSGPACK_V1_META_DECL_HPP
+
+#if !defined(MSGPACK_USE_CPP03)
+
+#include "msgpack/versioning.hpp"
+#include <type_traits>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace detail {
+
+template<bool...> struct bool_pack;
+
+template<bool...values> struct all_of_imp;
+
+template<bool...values> struct any_of_imp;
+
+} // namespace detail
+
+template<template <class> class T, class... U>
+using all_of = detail::all_of_imp<T<U>::value...>;
+
+template<template <class> class T, class... U>
+using any_of = detail::any_of_imp<(T<U>::value)...>;
+
+template<std::size_t... Is> struct seq;
+
+template<std::size_t N, std::size_t... Is>
+struct gen_seq;
+
+template <typename T>
+struct is_non_const_pointer;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // !defined(MSGPACK_USE_CPP03)
+
+#endif // MSGPACK_V1_META_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/object.hpp b/third_party/msgpack/include/msgpack/v1/object.hpp
new file mode 100644
index 0000000000..23f1ab1fcf
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/object.hpp
@@ -0,0 +1,1240 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2014 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_OBJECT_HPP
+#define MSGPACK_V1_OBJECT_HPP
+
+#include "msgpack/object_decl.hpp"
+#include "msgpack/adaptor/check_container_size.hpp"
+
+#include <cstring>
+#include <stdexcept>
+#include <typeinfo>
+#include <limits>
+#include <ostream>
+#include <typeinfo>
+#include <iomanip>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+struct object_kv {
+ msgpack::object key;
+ msgpack::object val;
+};
+
+struct object::with_zone : msgpack::object {
+ with_zone(msgpack::zone& z) : zone(z) { }
+ msgpack::zone& zone;
+private:
+ with_zone();
+};
+
+
+/// The class holds object and zone
+class object_handle {
+public:
+ /// Constructor that creates nil object and null zone.
+ object_handle() {}
+
+ /// Constructor that creates an object_handle holding object `obj` and zone `z`.
+ /**
+ * @param obj object
+ * @param z zone
+ */
+ object_handle(
+ msgpack::object const& obj,
+#if defined(MSGPACK_USE_CPP03)
+ msgpack::unique_ptr<msgpack::zone> z
+#else // defined(MSGPACK_USE_CPP03)
+ msgpack::unique_ptr<msgpack::zone>&& z
+#endif // defined(MSGPACK_USE_CPP03)
+ ) :
+ m_obj(obj), m_zone(msgpack::move(z)) { }
+
+ void set(msgpack::object const& obj)
+ { m_obj = obj; }
+
+ /// Get object reference
+ /**
+ * @return object
+ */
+ const msgpack::object& get() const
+ { return m_obj; }
+
+ /**
+ * @return object (to mimic smart pointers).
+ */
+ const msgpack::object& operator*() const
+ { return get(); }
+
+ /**
+ * @return the address of the object (to mimic smart pointers).
+ */
+ const msgpack::object* operator->() const
+ { return &get(); }
+
+ /// Get unique_ptr reference of zone.
+ /**
+ * @return unique_ptr reference of zone
+ */
+ msgpack::unique_ptr<msgpack::zone>& zone()
+ { return m_zone; }
+
+ /// Get unique_ptr const reference of zone.
+ /**
+ * @return unique_ptr const reference of zone
+ */
+ const msgpack::unique_ptr<msgpack::zone>& zone() const
+ { return m_zone; }
+
+#if defined(MSGPACK_USE_CPP03)
+ struct object_handle_ref {
+ object_handle_ref(object_handle* oh):m_oh(oh) {}
+ object_handle* m_oh;
+ };
+
+ object_handle(object_handle& other):
+ m_obj(other.m_obj),
+ m_zone(msgpack::move(other.m_zone)) {
+ }
+
+ object_handle(object_handle_ref ref):
+ m_obj(ref.m_oh->m_obj),
+ m_zone(msgpack::move(ref.m_oh->m_zone)) {
+ }
+
+ object_handle& operator=(object_handle& other) {
+ m_obj = other.m_obj;
+ m_zone = msgpack::move(other.m_zone);
+ return *this;
+ }
+
+ object_handle& operator=(object_handle_ref ref) {
+ m_obj = ref.m_oh->m_obj;
+ m_zone = msgpack::move(ref.m_oh->m_zone);
+ return *this;
+ }
+
+ operator object_handle_ref() {
+ return object_handle_ref(this);
+ }
+#endif // defined(MSGPACK_USE_CPP03)
+
+private:
+ msgpack::object m_obj;
+ msgpack::unique_ptr<msgpack::zone> m_zone;
+};
+
+namespace detail {
+
+template <std::size_t N>
+inline std::size_t add_ext_type_size(std::size_t size) {
+ return size + 1;
+}
+
+template <>
+inline std::size_t add_ext_type_size<4>(std::size_t size) {
+ return size == 0xffffffff ? size : size + 1;
+}
+
+} // namespace detail
+class object_parser {
+private:
+ enum next_ret {
+ cont,
+ finish,
+ abort
+ };
+ struct elem {
+ elem(msgpack::object const* p, std::size_t r)
+ : rest(r), is_map(false), is_key(false) {
+ as.obj_ptr = p;
+ }
+
+ elem(msgpack::object_kv const* p, std::size_t r)
+ : rest(r), is_map(true), is_key(true) {
+ as.kv_ptr = p;
+ }
+
+ msgpack::object const& get() const {
+ if (is_map) {
+ if (is_key) {
+ return as.kv_ptr->key;
+ }
+ else {
+ return as.kv_ptr->val;
+ }
+ }
+ else {
+ return *as.obj_ptr;
+ }
+ }
+
+ template <typename Visitor>
+ next_ret next(Visitor& v) {
+ if (rest == 0) {
+ if (is_map) {
+ if (!v.end_map()) return abort;
+ }
+ else {
+ if (!v.end_array()) return abort;
+ }
+ return finish;
+ }
+ else {
+ if (is_map) {
+ if (is_key) {
+ if (!v.end_map_key()) return abort;
+ if (!v.start_map_value()) return abort;
+ is_key = false;
+ }
+ else {
+ if (!v.end_map_value()) return abort;
+ --rest;
+ if (rest == 0) {
+ if (!v.end_map()) return abort;
+ return finish;
+ }
+ if (!v.start_map_key()) return abort;
+ ++as.kv_ptr;
+ is_key = true;
+ }
+ }
+ else {
+ if (!v.end_array_item()) return abort;
+ --rest;
+ if (rest == 0) {
+ if (!v.end_array()) return abort;
+ return finish;
+ }
+ if (!v.start_array_item()) return abort;
+ ++as.obj_ptr;
+ }
+ return cont;
+ }
+ }
+
+ union {
+ msgpack::object const* obj_ptr;
+ msgpack::object_kv const* kv_ptr;
+ } as;
+ std::size_t rest;
+ bool is_map;
+ bool is_key;
+ };
+public:
+ explicit object_parser(msgpack::object const& obj):m_current(&obj) {}
+ template <typename Visitor>
+ void parse(Visitor& v) {
+ while (true) {
+ bool start_collection = false;
+ switch(m_current->type) {
+ case msgpack::type::NIL:
+ if (!v.visit_nil()) return;
+ break;
+ case msgpack::type::BOOLEAN:
+ if (!v.visit_boolean(m_current->via.boolean)) return;
+ break;
+ case msgpack::type::POSITIVE_INTEGER:
+ if (!v.visit_positive_integer(m_current->via.u64)) return;
+ break;
+ case msgpack::type::NEGATIVE_INTEGER:
+ if (!v.visit_negative_integer(m_current->via.i64)) return;
+ break;
+ case msgpack::type::FLOAT32:
+ if (!v.visit_float32(static_cast<float>(m_current->via.f64))) return;
+ break;
+ case msgpack::type::FLOAT64:
+ if (!v.visit_float64(m_current->via.f64)) return;
+ break;
+ case msgpack::type::STR:
+ if (!v.visit_str(m_current->via.str.ptr, m_current->via.str.size)) return;
+ break;
+ case msgpack::type::BIN:
+ if (!v.visit_bin(m_current->via.bin.ptr, m_current->via.bin.size)) return;
+ break;
+ case msgpack::type::EXT:
+ msgpack::detail::check_container_size<sizeof(std::size_t)>(m_current->via.ext.size);
+ if (!v.visit_ext(m_current->via.ext.ptr, m_current->via.ext.size + 1)) return;
+ break;
+ case msgpack::type::ARRAY:
+ if (!v.start_array(m_current->via.array.size)) return;
+ m_ctx.push_back(elem(m_current->via.array.ptr, m_current->via.array.size));
+ start_collection = m_current->via.array.size != 0;
+ if (start_collection) {
+ if (!v.start_array_item()) return;
+ }
+ break;
+ case msgpack::type::MAP:
+ if (!v.start_map(m_current->via.map.size)) return;
+ m_ctx.push_back(elem(m_current->via.map.ptr, m_current->via.map.size));
+ start_collection = m_current->via.map.size != 0;
+ if (start_collection) {
+ if (!v.start_map_key()) return;
+ }
+ break;
+ default:
+ throw msgpack::type_error();
+ break;
+ }
+ if (m_ctx.empty()) return;
+ if (!start_collection) {
+ while (true) {
+ next_ret r = m_ctx.back().next(v);
+ if (r == finish) {
+ m_ctx.pop_back();
+ if (m_ctx.empty()) return;
+ }
+ else if (r == cont) {
+ break;
+ }
+ else {
+ // abort
+ return;
+ }
+ }
+ }
+ m_current = &m_ctx.back().get();
+ }
+ }
+private:
+ msgpack::object const* m_current;
+ std::vector<elem> m_ctx;
+};
+
+template <typename Stream>
+struct object_pack_visitor {
+ explicit object_pack_visitor(msgpack::packer<Stream>& pk)
+ :m_packer(pk) {}
+ bool visit_nil() {
+ m_packer.pack_nil();
+ return true;
+ }
+ bool visit_boolean(bool v) {
+ if (v) m_packer.pack_true();
+ else m_packer.pack_false();
+ return true;
+ }
+ bool visit_positive_integer(uint64_t v) {
+ m_packer.pack_uint64(v);
+ return true;
+ }
+ bool visit_negative_integer(int64_t v) {
+ m_packer.pack_int64(v);
+ return true;
+ }
+ bool visit_float32(float v) {
+ m_packer.pack_float(v);
+ return true;
+ }
+ bool visit_float64(double v) {
+ m_packer.pack_double(v);
+ return true;
+ }
+ bool visit_str(const char* v, uint32_t size) {
+ m_packer.pack_str(size);
+ m_packer.pack_str_body(v, size);
+ return true;
+ }
+ bool visit_bin(const char* v, uint32_t size) {
+ m_packer.pack_bin(size);
+ m_packer.pack_bin_body(v, size);
+ return true;
+ }
+ bool visit_ext(const char* v, uint32_t size) {
+ m_packer.pack_ext(size, *v);
+ m_packer.pack_ext_body(v, size);
+ return true;
+ }
+ bool start_array(uint32_t num_elements) {
+ m_packer.pack_array(num_elements);
+ return true;
+ }
+ bool start_array_item() {
+ return true;
+ }
+ bool end_array_item() {
+ return true;
+ }
+ bool end_array() {
+ return true;
+ }
+ bool start_map(uint32_t num_kv_pairs) {
+ m_packer.pack_map(num_kv_pairs);
+ return true;
+ }
+ bool start_map_key() {
+ return true;
+ }
+ bool end_map_key() {
+ return true;
+ }
+ bool start_map_value() {
+ return true;
+ }
+ bool end_map_value() {
+ return true;
+ }
+ bool end_map() {
+ return true;
+ }
+private:
+ msgpack::packer<Stream>& m_packer;
+};
+
+
+struct object_stringize_visitor {
+ explicit object_stringize_visitor(std::ostream& os)
+ :m_os(os) {}
+ bool visit_nil() {
+ m_os << "null";
+ return true;
+ }
+ bool visit_boolean(bool v) {
+ if (v) m_os << "true";
+ else m_os << "false";
+ return true;
+ }
+ bool visit_positive_integer(uint64_t v) {
+ m_os << v;
+ return true;
+ }
+ bool visit_negative_integer(int64_t v) {
+ m_os << v;
+ return true;
+ }
+ bool visit_float32(float v) {
+ m_os << v;
+ return true;
+ }
+ bool visit_float64(double v) {
+ m_os << v;
+ return true;
+ }
+ bool visit_str(const char* v, uint32_t size) {
+ m_os << '"';
+ for (uint32_t i = 0; i < size; ++i) {
+ char c = v[i];
+ switch (c) {
+ case '\\':
+ m_os << "\\\\";
+ break;
+ case '"':
+ m_os << "\\\"";
+ break;
+ case '/':
+ m_os << "\\/";
+ break;
+ case '\b':
+ m_os << "\\b";
+ break;
+ case '\f':
+ m_os << "\\f";
+ break;
+ case '\n':
+ m_os << "\\n";
+ break;
+ case '\r':
+ m_os << "\\r";
+ break;
+ case '\t':
+ m_os << "\\t";
+ break;
+ default: {
+ unsigned int code = static_cast<unsigned int>(c);
+ if (code < 0x20 || code == 0x7f) {
+ std::ios::fmtflags flags(m_os.flags());
+ m_os << "\\u" << std::hex << std::setw(4) << std::setfill('0') << (code & 0xff);
+ m_os.flags(flags);
+ }
+ else {
+ m_os << c;
+ }
+ } break;
+ }
+ }
+ m_os << '"';
+ return true;
+ }
+ bool visit_bin(const char* v, uint32_t size) {
+ (m_os << '"').write(v, size) << '"';
+ return true;
+ }
+ bool visit_ext(const char* /*v*/, uint32_t /*size*/) {
+ m_os << "EXT";
+ return true;
+ }
+ bool start_array(uint32_t num_elements) {
+ m_current_size.push_back(num_elements);
+ m_os << "[";
+ return true;
+ }
+ bool start_array_item() {
+ return true;
+ }
+ bool end_array_item() {
+ --m_current_size.back();
+ if (m_current_size.back() != 0) {
+ m_os << ",";
+ }
+ return true;
+ }
+ bool end_array() {
+ m_current_size.pop_back();
+ m_os << "]";
+ return true;
+ }
+ bool start_map(uint32_t num_kv_pairs) {
+ m_current_size.push_back(num_kv_pairs);
+ m_os << "{";
+ return true;
+ }
+ bool start_map_key() {
+ return true;
+ }
+ bool end_map_key() {
+ m_os << ":";
+ return true;
+ }
+ bool start_map_value() {
+ return true;
+ }
+ bool end_map_value() {
+ --m_current_size.back();
+ if (m_current_size.back() != 0) {
+ m_os << ",";
+ }
+ return true;
+ }
+ bool end_map() {
+ m_current_size.pop_back();
+ m_os << "}";
+ return true;
+ }
+private:
+ std::ostream& m_os;
+ std::vector<uint32_t> m_current_size;
+};
+
+struct aligned_zone_size_visitor {
+ explicit aligned_zone_size_visitor(std::size_t s)
+ :m_size(s) {}
+ bool visit_nil() {
+ return true;
+ }
+ bool visit_boolean(bool) {
+ return true;
+ }
+ bool visit_positive_integer(uint64_t) {
+ return true;
+ }
+ bool visit_negative_integer(int64_t) {
+ return true;
+ }
+ bool visit_float32(float) {
+ return true;
+ }
+ bool visit_float64(double) {
+ return true;
+ }
+ bool visit_str(const char*, uint32_t size) {
+ m_size += msgpack::aligned_size(size, MSGPACK_ZONE_ALIGNOF(char));
+ return true;
+ }
+ bool visit_bin(const char*, uint32_t size) {
+ m_size += msgpack::aligned_size(size, MSGPACK_ZONE_ALIGNOF(char));
+ return true;
+ }
+ bool visit_ext(const char*, uint32_t size) {
+ m_size += msgpack::aligned_size(size, MSGPACK_ZONE_ALIGNOF(char));
+ return true;
+ }
+ bool start_array(uint32_t num_elements) {
+ m_size += msgpack::aligned_size(
+ sizeof(msgpack::object) * num_elements,
+ MSGPACK_ZONE_ALIGNOF(msgpack::object));
+ return true;
+ }
+ bool start_array_item() {
+ return true;
+ }
+ bool end_array_item() {
+ return true;
+ }
+ bool end_array() {
+ return true;
+ }
+ bool start_map(uint32_t num_kv_pairs) {
+ m_size += msgpack::aligned_size(
+ sizeof(msgpack::object_kv) * num_kv_pairs,
+ MSGPACK_ZONE_ALIGNOF(msgpack::object_kv));
+ return true;
+ }
+ bool start_map_key() {
+ return true;
+ }
+ bool end_map_key() {
+ return true;
+ }
+ bool start_map_value() {
+ return true;
+ }
+ bool end_map_value() {
+ return true;
+ }
+ bool end_map() {
+ return true;
+ }
+private:
+ std::size_t m_size;
+};
+
+inline std::size_t aligned_zone_size(msgpack::object const& obj) {
+ std::size_t s = 0;
+ aligned_zone_size_visitor vis(s);
+ msgpack::object_parser(obj).parse(vis);
+ return s;
+}
+
+/// clone object
+/**
+ * Clone (deep copy) object.
+ * The copied object is located on newly allocated zone.
+ * @param obj copy source object
+ *
+ * @return object_handle that holds deep copied object and zone.
+ */
+inline object_handle clone(msgpack::object const& obj) {
+ std::size_t size = msgpack::aligned_zone_size(obj);
+ msgpack::unique_ptr<msgpack::zone> z(size == 0 ? MSGPACK_NULLPTR : new msgpack::zone(size));
+ msgpack::object newobj = z.get() ? msgpack::object(obj, *z) : obj;
+ return object_handle(newobj, msgpack::move(z));
+}
+
+template <typename T>
+inline object::implicit_type::operator T() { return obj.as<T>(); }
+
+namespace detail {
+template <typename Stream, typename T>
+struct packer_serializer {
+ static msgpack::packer<Stream>& pack(msgpack::packer<Stream>& o, const T& v) {
+ v.msgpack_pack(o);
+ return o;
+ }
+};
+} // namespace detail
+
+// Adaptor functors' member functions definitions.
+template <typename T, typename Enabler>
+inline
+msgpack::object const&
+adaptor::convert<T, Enabler>::operator()(msgpack::object const& o, T& v) const {
+ v.msgpack_unpack(o.convert());
+ return o;
+}
+
+template <typename T, typename Enabler>
+template <typename Stream>
+inline
+msgpack::packer<Stream>&
+adaptor::pack<T, Enabler>::operator()(msgpack::packer<Stream>& o, T const& v) const {
+ return msgpack::detail::packer_serializer<Stream, T>::pack(o, v);
+}
+
+template <typename T, typename Enabler>
+inline
+void
+adaptor::object_with_zone<T, Enabler>::operator()(msgpack::object::with_zone& o, T const& v) const {
+ v.msgpack_object(static_cast<msgpack::object*>(&o), o.zone);
+}
+
+// Adaptor functor specialization to object
+namespace adaptor {
+
+template <>
+struct convert<msgpack::object> {
+ msgpack::object const& operator()(msgpack::object const& o, msgpack::object& v) const {
+ v = o;
+ return o;
+ }
+};
+
+template <>
+struct pack<msgpack::object> {
+ template <typename Stream>
+ msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, msgpack::object const& v) const {
+ object_pack_visitor<Stream> vis(o);
+ msgpack::object_parser(v).parse(vis);
+ return o;
+ }
+};
+
+template <>
+struct object_with_zone<msgpack::object> {
+ void operator()(msgpack::object::with_zone& o, msgpack::object const& v) const {
+ object_with_zone_visitor vis(o);
+ msgpack::object_parser(v).parse(vis);
+ }
+private:
+ struct object_with_zone_visitor {
+ explicit object_with_zone_visitor(msgpack::object::with_zone& owz)
+ :m_zone(owz.zone), m_ptr(&owz) {
+ m_objs.push_back(&owz);
+ }
+ bool visit_nil() {
+ m_ptr->type = msgpack::type::NIL;
+ return true;
+ }
+ bool visit_boolean(bool v) {
+ m_ptr->type = msgpack::type::BOOLEAN;
+ m_ptr->via.boolean = v;
+ return true;
+ }
+ bool visit_positive_integer(uint64_t v) {
+ m_ptr->type = msgpack::type::POSITIVE_INTEGER;
+ m_ptr->via.u64 = v;
+ return true;
+ }
+ bool visit_negative_integer(int64_t v) {
+ m_ptr->type = msgpack::type::NEGATIVE_INTEGER;
+ m_ptr->via.i64 = v;
+ return true;
+ }
+ bool visit_float32(float v) {
+ m_ptr->type = msgpack::type::FLOAT32;
+ m_ptr->via.f64 = v;
+ return true;
+ }
+ bool visit_float64(double v) {
+ m_ptr->type = msgpack::type::FLOAT64;
+ m_ptr->via.f64 = v;
+ return true;
+ }
+ bool visit_str(const char* v, uint32_t size) {
+ m_ptr->type = msgpack::type::STR;
+ m_ptr->via.str.size = size;
+ char* ptr = static_cast<char*>(m_zone.allocate_align(size, MSGPACK_ZONE_ALIGNOF(char)));
+ m_ptr->via.str.ptr = ptr;
+ std::memcpy(ptr, v, size);
+ return true;
+ }
+ bool visit_bin(const char* v, uint32_t size) {
+ m_ptr->type = msgpack::type::BIN;
+ m_ptr->via.bin.size = size;
+ char* ptr = static_cast<char*>(m_zone.allocate_align(size, MSGPACK_ZONE_ALIGNOF(char)));
+ m_ptr->via.bin.ptr = ptr;
+ std::memcpy(ptr, v, size);
+ return true;
+ }
+ bool visit_ext(const char* v, uint32_t size) {
+ m_ptr->type = msgpack::type::EXT;
+
+ // v contains type but length(size) doesn't count the type byte.
+ // See https://github.com/msgpack/msgpack/blob/master/spec.md#ext-format-family
+ m_ptr->via.ext.size = size - 1;
+
+ char* ptr = static_cast<char*>(m_zone.allocate_align(size, MSGPACK_ZONE_ALIGNOF(char)));
+ m_ptr->via.ext.ptr = ptr;
+ std::memcpy(ptr, v, size);
+ return true;
+ }
+ bool start_array(uint32_t num_elements) {
+ m_ptr->type = msgpack::type::ARRAY;
+ m_ptr->via.array.ptr = static_cast<msgpack::object*>(
+ m_zone.allocate_align(
+ sizeof(msgpack::object) * num_elements, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ m_ptr->via.array.size = num_elements;
+ m_objs.push_back(elem(m_ptr->via.array.ptr));
+ return true;
+ }
+ bool start_array_item() {
+ m_ptr = m_objs.back().get_item();
+ return true;
+ }
+ bool end_array_item() {
+ ++m_objs.back().as.obj;
+ return true;
+ }
+ bool end_array() {
+ m_objs.pop_back();
+ return true;
+ }
+ bool start_map(uint32_t num_kv_pairs) {
+ m_ptr->type = msgpack::type::MAP;
+ m_ptr->via.map.ptr = (msgpack::object_kv*)m_zone.allocate_align(
+ sizeof(msgpack::object_kv) * num_kv_pairs, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv));
+ m_ptr->via.map.size = num_kv_pairs;
+ m_objs.push_back(elem(m_ptr->via.map.ptr));
+ return true;
+ }
+ bool start_map_key() {
+ m_ptr = m_objs.back().get_key();
+ return true;
+ }
+ bool end_map_key() {
+ return true;
+ }
+ bool start_map_value() {
+ m_ptr = m_objs.back().get_val();
+ return true;
+ }
+ bool end_map_value() {
+ ++m_objs.back().as.kv;
+ return true;
+ }
+ bool end_map() {
+ m_objs.pop_back();
+ return true;
+ }
+ private:
+ struct elem {
+ elem(msgpack::object* obj)
+ :is_obj(true) {
+ as.obj = obj;
+ }
+ elem(msgpack::object_kv* kv)
+ :is_obj(false) {
+ as.kv = kv;
+ }
+ msgpack::object* get_item() {
+ return as.obj;
+ }
+ msgpack::object* get_key() {
+ return &as.kv->key;
+ }
+ msgpack::object* get_val() {
+ return &as.kv->val;
+ }
+ union {
+ msgpack::object* obj;
+ msgpack::object_kv* kv;
+ } as;
+ bool is_obj;
+ };
+ std::vector<elem> m_objs;
+ msgpack::zone& m_zone;
+ msgpack::object* m_ptr;
+ };
+};
+
+// Adaptor functor specialization to object::with_zone
+
+template <>
+struct object_with_zone<msgpack::object::with_zone> {
+ void operator()(
+ msgpack::object::with_zone& o,
+ msgpack::object::with_zone const& v) const {
+ o << static_cast<msgpack::object const&>(v);
+ }
+};
+
+
+} // namespace adaptor
+
+
+// obsolete
+template <typename Type>
+class define : public Type {
+public:
+ typedef Type msgpack_type;
+ typedef define<Type> define_type;
+ define() {}
+ define(const msgpack_type& v) : msgpack_type(v) {}
+
+ template <typename Packer>
+ void msgpack_pack(Packer& o) const
+ {
+ msgpack::operator<<(o, static_cast<const msgpack_type&>(*this));
+ }
+
+ void msgpack_unpack(object const& o)
+ {
+ msgpack::operator>>(o, static_cast<msgpack_type&>(*this));
+ }
+};
+
+// deconvert operator
+
+template <typename Stream>
+template <typename T>
+inline msgpack::packer<Stream>& packer<Stream>::pack(const T& v)
+{
+ msgpack::operator<<(*this, v);
+ return *this;
+}
+
+struct object_equal_visitor {
+ object_equal_visitor(msgpack::object const& obj, bool& result)
+ :m_ptr(&obj), m_result(result) {}
+ bool visit_nil() {
+ if (m_ptr->type != msgpack::type::NIL) {
+ m_result = false;
+ return false;
+ }
+ return true;
+ }
+ bool visit_boolean(bool v) {
+ if (m_ptr->type != msgpack::type::BOOLEAN || m_ptr->via.boolean != v) {
+ m_result = false;
+ return false;
+ }
+ return true;
+ }
+ bool visit_positive_integer(uint64_t v) {
+ if (m_ptr->type != msgpack::type::POSITIVE_INTEGER || m_ptr->via.u64 != v) {
+ m_result = false;
+ return false;
+ }
+ return true;
+ }
+ bool visit_negative_integer(int64_t v) {
+ if (m_ptr->type != msgpack::type::NEGATIVE_INTEGER || m_ptr->via.i64 != v) {
+ m_result = false;
+ return false;
+ }
+ return true;
+ }
+ bool visit_float32(float v) {
+ if (m_ptr->type != msgpack::type::FLOAT32 || m_ptr->via.f64 != v) {
+ m_result = false;
+ return false;
+ }
+ return true;
+ }
+ bool visit_float64(double v) {
+ if (m_ptr->type != msgpack::type::FLOAT64 || m_ptr->via.f64 != v) {
+ m_result = false;
+ return false;
+ }
+ return true;
+ }
+ bool visit_str(const char* v, uint32_t size) {
+ if (m_ptr->type != msgpack::type::STR ||
+ m_ptr->via.str.size != size ||
+ std::memcmp(m_ptr->via.str.ptr, v, size) != 0) {
+ m_result = false;
+ return false;
+ }
+ return true;
+ }
+ bool visit_bin(const char* v, uint32_t size) {
+ if (m_ptr->type != msgpack::type::BIN ||
+ m_ptr->via.bin.size != size ||
+ std::memcmp(m_ptr->via.bin.ptr, v, size) != 0) {
+ m_result = false;
+ return false;
+ }
+ return true;
+ }
+ bool visit_ext(const char* v, uint32_t size) {
+ if (m_ptr->type != msgpack::type::EXT ||
+ m_ptr->via.ext.size != size ||
+ std::memcmp(m_ptr->via.ext.ptr, v, size) != 0) {
+ m_result = false;
+ return false;
+ }
+ return true;
+ }
+ bool start_array(uint32_t num_elements) {
+ if (m_ptr->type != msgpack::type::ARRAY ||
+ m_ptr->via.array.size != num_elements) {
+ m_result = false;
+ return false;
+ }
+ m_objs.push_back(elem(m_ptr->via.array.ptr));
+ return true;
+ }
+ bool start_array_item() {
+ m_ptr = m_objs.back().get_item();
+ return true;
+ }
+ bool end_array_item() {
+ ++m_objs.back().as.obj;
+ return true;
+ }
+ bool end_array() {
+ m_objs.pop_back();
+ return true;
+ }
+ bool start_map(uint32_t num_kv_pairs) {
+ if (m_ptr->type != msgpack::type::MAP ||
+ m_ptr->via.array.size != num_kv_pairs) {
+ m_result = false;
+ return false;
+ }
+ m_objs.push_back(elem(m_ptr->via.map.ptr));
+ return true;
+ }
+ bool start_map_key() {
+ m_ptr = m_objs.back().get_key();
+ return true;
+ }
+ bool end_map_key() {
+ return true;
+ }
+ bool start_map_value() {
+ m_ptr = m_objs.back().get_val();
+ return true;
+ }
+ bool end_map_value() {
+ ++m_objs.back().as.kv;
+ return true;
+ }
+ bool end_map() {
+ m_objs.pop_back();
+ return true;
+ }
+private:
+ struct elem {
+ elem(msgpack::object const* obj)
+ :is_obj(true) {
+ as.obj = obj;
+ }
+ elem(msgpack::object_kv const* kv)
+ :is_obj(false) {
+ as.kv = kv;
+ }
+ msgpack::object const* get_item() {
+ return as.obj;
+ }
+ msgpack::object const* get_key() {
+ return &as.kv->key;
+ }
+ msgpack::object const* get_val() {
+ return &as.kv->val;
+ }
+ union {
+ msgpack::object const* obj;
+ msgpack::object_kv const* kv;
+ } as;
+ bool is_obj;
+ };
+ std::vector<elem> m_objs;
+ msgpack::object const* m_ptr;
+ bool& m_result;
+};
+
+inline bool operator==(const msgpack::object& x, const msgpack::object& y)
+{
+ if(x.type != y.type) { return false; }
+ bool b = true;
+ object_equal_visitor vis(y, b);
+ msgpack::object_parser(x).parse(vis);
+ return b;
+}
+
+template <typename T>
+inline bool operator==(const msgpack::object& x, const T& y)
+try {
+ return x == msgpack::object(y);
+} catch (msgpack::type_error&) {
+ return false;
+}
+
+inline bool operator!=(const msgpack::object& x, const msgpack::object& y)
+{ return !(x == y); }
+
+template <typename T>
+inline bool operator==(const T& y, const msgpack::object& x)
+{ return x == y; }
+
+template <typename T>
+inline bool operator!=(const msgpack::object& x, const T& y)
+{ return !(x == y); }
+
+template <typename T>
+inline bool operator!=(const T& y, const msgpack::object& x)
+{ return x != y; }
+
+
+inline object::implicit_type object::convert() const
+{
+ return object::implicit_type(*this);
+}
+
+template <typename T>
+inline
+typename msgpack::enable_if<
+ !msgpack::is_array<T>::value && !msgpack::is_pointer<T>::value,
+ T&
+>::type
+object::convert(T& v) const
+{
+ msgpack::operator>>(*this, v);
+ return v;
+}
+
+template <typename T, std::size_t N>
+inline T(&object::convert(T(&v)[N]) const)[N]
+{
+ msgpack::operator>>(*this, v);
+ return v;
+}
+
+#if !defined(MSGPACK_DISABLE_LEGACY_CONVERT)
+template <typename T>
+inline
+typename msgpack::enable_if<
+ msgpack::is_pointer<T>::value,
+ T
+>::type
+object::convert(T v) const
+{
+ convert(*v);
+ return v;
+}
+#endif // !defined(MSGPACK_DISABLE_LEGACY_CONVERT)
+
+template <typename T>
+inline bool object::convert_if_not_nil(T& v) const
+{
+ if (is_nil()) {
+ return false;
+ }
+ convert(v);
+ return true;
+}
+
+#if defined(MSGPACK_USE_CPP03)
+
+template <typename T>
+inline T object::as() const
+{
+ T v;
+ convert(v);
+ return v;
+}
+
+#else // defined(MSGPACK_USE_CPP03)
+
+template <typename T>
+inline typename std::enable_if<msgpack::has_as<T>::value, T>::type object::as() const {
+ return msgpack::adaptor::as<T>()(*this);
+}
+
+template <typename T>
+inline typename std::enable_if<!msgpack::has_as<T>::value, T>::type object::as() const {
+ T v;
+ convert(v);
+ return v;
+}
+
+#endif // defined(MSGPACK_USE_CPP03)
+
+inline object::object()
+{
+ type = msgpack::type::NIL;
+}
+
+template <typename T>
+inline object::object(const T& v)
+{
+ *this << v;
+}
+
+template <typename T>
+inline object& object::operator=(const T& v)
+{
+ *this = object(v);
+ return *this;
+}
+
+template <typename T>
+inline object::object(const T& v, msgpack::zone& z)
+{
+ with_zone oz(z);
+ msgpack::operator<<(oz, v);
+ type = oz.type;
+ via = oz.via;
+}
+
+template <typename T>
+inline object::object(const T& v, msgpack::zone* z)
+{
+ with_zone oz(*z);
+ msgpack::operator<<(oz, v);
+ type = oz.type;
+ via = oz.via;
+}
+
+
+inline object::object(const msgpack_object& o)
+{
+ // FIXME beter way?
+ std::memcpy(this, &o, sizeof(o));
+}
+
+inline void operator<< (msgpack::object& o, const msgpack_object& v)
+{
+ // FIXME beter way?
+ std::memcpy(static_cast<void*>(&o), &v, sizeof(v));
+}
+
+inline object::operator msgpack_object() const
+{
+ // FIXME beter way?
+ msgpack_object obj;
+ std::memcpy(&obj, this, sizeof(obj));
+ return obj;
+}
+
+
+// obsolete
+template <typename T>
+inline void convert(T& v, msgpack::object const& o)
+{
+ o.convert(v);
+}
+
+// obsolete
+template <typename Stream, typename T>
+inline void pack(msgpack::packer<Stream>& o, const T& v)
+{
+ o.pack(v);
+}
+
+// obsolete
+template <typename Stream, typename T>
+inline void pack_copy(msgpack::packer<Stream>& o, T v)
+{
+ pack(o, v);
+}
+
+template <typename Stream>
+inline msgpack::packer<Stream>& operator<< (msgpack::packer<Stream>& o, const msgpack::object& v)
+{
+ object_pack_visitor<Stream> vis(o);
+ msgpack::object_parser(v).parse(vis);
+ return o;
+}
+
+template <typename Stream>
+inline msgpack::packer<Stream>& operator<< (msgpack::packer<Stream>& o, const msgpack::object::with_zone& v)
+{
+ return o << static_cast<msgpack::object>(v);
+}
+
+inline std::ostream& operator<< (std::ostream& s, const msgpack::object& v)
+{
+ object_stringize_visitor vis(s);
+ msgpack::object_parser(v).parse(vis);
+ return s;
+}
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_OBJECT_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/object_decl.hpp b/third_party/msgpack/include/msgpack/v1/object_decl.hpp
new file mode 100644
index 0000000000..7f04a543aa
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/object_decl.hpp
@@ -0,0 +1,122 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2014 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_OBJECT_DECL_HPP
+#define MSGPACK_V1_OBJECT_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/pack.hpp"
+#include "msgpack/zone.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+
+#include <cstring>
+#include <stdexcept>
+#include <typeinfo>
+#include <limits>
+#include <ostream>
+#include <typeinfo>
+#include <iomanip>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+/// The class holds object and zone
+class object_handle;
+
+namespace detail {
+
+template <std::size_t N>
+std::size_t add_ext_type_size(std::size_t size);
+
+template <>
+std::size_t add_ext_type_size<4>(std::size_t size);
+
+} // namespace detail
+
+std::size_t aligned_zone_size(msgpack::object const& obj);
+
+/// clone object
+/**
+ * Clone (deep copy) object.
+ * The copied object is located on newly allocated zone.
+ * @param obj copy source object
+ *
+ * @return object_handle that holds deep copied object and zone.
+ */
+object_handle clone(msgpack::object const& obj);
+
+namespace detail {
+
+template <typename Stream, typename T>
+struct packer_serializer;
+
+} // namespace detail
+
+// obsolete
+template <typename Type>
+class define;
+
+bool operator==(const msgpack::object& x, const msgpack::object& y);
+
+template <typename T>
+bool operator==(const msgpack::object& x, const T& y);
+
+bool operator!=(const msgpack::object& x, const msgpack::object& y);
+
+template <typename T>
+bool operator==(const T& y, const msgpack::object& x);
+
+template <typename T>
+bool operator!=(const msgpack::object& x, const T& y);
+
+template <typename T>
+bool operator!=(const T& y, const msgpack::object& x);
+
+void operator<< (msgpack::object& o, const msgpack_object& v);
+
+class object_parser;
+
+template <typename Stream>
+struct object_pack_visitor;
+
+struct object_stringize_visitor;
+
+// obsolete
+template <typename T>
+MSGPACK_DEPRECATED("please use member function version of object::convert(T&)")
+void convert(T& v, msgpack::object const& o);
+
+// obsolete
+template <typename Stream, typename T>
+MSGPACK_DEPRECATED("please use member function version of packer::pack(const T&)")
+void pack(msgpack::packer<Stream>& o, const T& v);
+
+// obsolete
+template <typename Stream, typename T>
+MSGPACK_DEPRECATED("please use member function version of packer::pack(const T&)")
+void pack_copy(msgpack::packer<Stream>& o, T v);
+
+template <typename Stream>
+msgpack::packer<Stream>& operator<< (msgpack::packer<Stream>& o, const msgpack::object& v);
+
+template <typename Stream>
+msgpack::packer<Stream>& operator<< (msgpack::packer<Stream>& o, const msgpack::object::with_zone& v);
+
+std::ostream& operator<< (std::ostream& s, const msgpack::object& v);
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_OBJECT_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/object_fwd.hpp b/third_party/msgpack/include/msgpack/v1/object_fwd.hpp
new file mode 100644
index 0000000000..a932226a3c
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/object_fwd.hpp
@@ -0,0 +1,255 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2014 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_V1_OBJECT_FWD_HPP
+#define MSGPACK_V1_OBJECT_FWD_HPP
+
+#include "msgpack/object_fwd_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+struct object_array {
+ uint32_t size;
+ msgpack::object* ptr;
+};
+
+struct object_map {
+ uint32_t size;
+ msgpack::object_kv* ptr;
+};
+
+struct object_str {
+ uint32_t size;
+ const char* ptr;
+};
+
+struct object_bin {
+ uint32_t size;
+ const char* ptr;
+};
+
+struct object_ext {
+ int8_t type() const { return ptr[0]; }
+ const char* data() const { return &ptr[1]; }
+ uint32_t size;
+ const char* ptr;
+};
+
+
+#if !defined(MSGPACK_USE_CPP03)
+
+template <typename T>
+struct has_as {
+private:
+ template <typename U>
+ static auto check(U*) ->
+ // Check v1 specialization
+ typename std::is_same<
+ decltype(adaptor::as<U>()(std::declval<msgpack::object>())),
+ T
+ >::type;
+ template <typename...>
+ static std::false_type check(...);
+public:
+ using type = decltype(check<T>(MSGPACK_NULLPTR));
+ static constexpr bool value = type::value;
+};
+
+#endif // !defined(MSGPACK_USE_CPP03)
+
+/// Object class that corresponding to MessagePack format object
+/**
+ * See https://github.com/msgpack/msgpack-c/wiki/v1_1_cpp_object
+ */
+struct object {
+ union union_type {
+ bool boolean;
+ uint64_t u64;
+ int64_t i64;
+#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
+ MSGPACK_DEPRECATED("please use f64 instead")
+ double dec; // obsolete
+#endif // MSGPACK_USE_LEGACY_NAME_AS_FLOAT
+ double f64;
+ msgpack::object_array array;
+ msgpack::object_map map;
+ msgpack::object_str str;
+ msgpack::object_bin bin;
+ msgpack::object_ext ext;
+ };
+
+ msgpack::type::object_type type;
+ union_type via;
+
+ /// Cheking nil
+ /**
+ * @return If the object is nil, then return true, else return false.
+ */
+ bool is_nil() const { return type == msgpack::type::NIL; }
+
+#if defined(MSGPACK_USE_CPP03)
+
+ /// Get value as T
+ /**
+ * If the object can't be converted to T, msgpack::type_error would be thrown.
+ * @tparam T The type you want to get.
+ * @return The converted object.
+ */
+ template <typename T>
+ T as() const;
+
+#else // defined(MSGPACK_USE_CPP03)
+
+ /// Get value as T
+ /**
+ * If the object can't be converted to T, msgpack::type_error would be thrown.
+ * @tparam T The type you want to get.
+ * @return The converted object.
+ */
+ template <typename T>
+ typename std::enable_if<msgpack::has_as<T>::value, T>::type as() const;
+
+ /// Get value as T
+ /**
+ * If the object can't be converted to T, msgpack::type_error would be thrown.
+ * @tparam T The type you want to get.
+ * @return The converted object.
+ */
+ template <typename T>
+ typename std::enable_if<!msgpack::has_as<T>::value, T>::type as() const;
+
+#endif // defined(MSGPACK_USE_CPP03)
+
+ /// Convert the object
+ /**
+ * If the object can't be converted to T, msgpack::type_error would be thrown.
+ * @tparam T The type of v.
+ * @param v The value you want to get. `v` is output parameter. `v` is overwritten by converted value from the object.
+ * @return The reference of `v`.
+ */
+ template <typename T>
+ typename msgpack::enable_if<
+ !msgpack::is_array<T>::value && !msgpack::is_pointer<T>::value,
+ T&
+ >::type
+ convert(T& v) const;
+
+ template <typename T, std::size_t N>
+ T (&convert(T(&v)[N]) const)[N];
+
+
+#if !defined(MSGPACK_DISABLE_LEGACY_CONVERT)
+ /// Convert the object (obsolete)
+ /**
+ * If the object can't be converted to T, msgpack::type_error would be thrown.
+ * @tparam T The type of v.
+ * @param v The pointer of the value you want to get. `v` is output parameter. `*v` is overwritten by converted value from the object.
+ * @return The pointer of `v`.
+ */
+ template <typename T>
+ MSGPACK_DEPRECATED("please use reference version instead")
+ typename msgpack::enable_if<
+ msgpack::is_pointer<T>::value,
+ T
+ >::type
+ convert(T v) const;
+#endif // !defined(MSGPACK_DISABLE_LEGACY_CONVERT)
+
+ /// Convert the object if not nil
+ /**
+ * If the object is not nil and can't be converted to T, msgpack::type_error would be thrown.
+ * @tparam T The type of v.
+ * @param v The value you want to get. `v` is output parameter. `v` is overwritten by converted value from the object if the object is not nil.
+ * @return If the object is nil, then return false, else return true.
+ */
+ template <typename T>
+ bool convert_if_not_nil(T& v) const;
+
+ /// Default constructor. The object is set to nil.
+ object();
+
+ /// Copy constructor. Object is shallow copied.
+ object(const msgpack_object& o);
+
+ /// Construct object from T
+ /**
+ * If `v` is the type that is corresponding to MessegePack format str, bin, ext, array, or map,
+ * you need to call `object(const T& v, msgpack::zone& z)` instead of this constructor.
+ *
+ * @tparam T The type of `v`.
+ * @param v The value you want to convert.
+ */
+ template <typename T>
+ explicit object(const T& v);
+
+ /// Construct object from T
+ /**
+ * The object is constructed on the zone `z`.
+ * See https://github.com/msgpack/msgpack-c/wiki/v1_1_cpp_object
+ *
+ * @tparam T The type of `v`.
+ * @param v The value you want to convert.
+ * @param z The zone that is used by the object.
+ */
+ template <typename T>
+ object(const T& v, msgpack::zone& z);
+
+ /// Construct object from T (obsolete)
+ /**
+ * The object is constructed on the zone `z`.
+ * Use `object(const T& v, msgpack::zone& z)` instead of this constructor.
+ * See https://github.com/msgpack/msgpack-c/wiki/v1_1_cpp_object
+ *
+ * @tparam T The type of `v`.
+ * @param v The value you want to convert.
+ * @param z The pointer to the zone that is used by the object.
+ */
+ template <typename T>
+ MSGPACK_DEPRECATED("please use zone reference version instead of the pointer version")
+ object(const T& v, msgpack::zone* z);
+
+ template <typename T>
+ object& operator=(const T& v);
+
+ operator msgpack_object() const;
+
+ struct with_zone;
+
+protected:
+ struct implicit_type;
+
+public:
+ implicit_type convert() const;
+};
+
+class type_error : public std::bad_cast { };
+
+struct object::implicit_type {
+ implicit_type(object const& o) : obj(o) { }
+ ~implicit_type() { }
+
+ template <typename T>
+ operator T();
+
+private:
+ object const& obj;
+};
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_OBJECT_FWD_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/object_fwd_decl.hpp b/third_party/msgpack/include/msgpack/v1/object_fwd_decl.hpp
new file mode 100644
index 0000000000..5bf303377c
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/object_fwd_decl.hpp
@@ -0,0 +1,78 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_V1_OBJECT_FWD_DECL_HPP
+#define MSGPACK_V1_OBJECT_FWD_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/zone.hpp"
+#include "msgpack/object.h"
+
+#include <typeinfo>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+
+namespace type {
+ enum object_type {
+ NIL = MSGPACK_OBJECT_NIL,
+ BOOLEAN = MSGPACK_OBJECT_BOOLEAN,
+ POSITIVE_INTEGER = MSGPACK_OBJECT_POSITIVE_INTEGER,
+ NEGATIVE_INTEGER = MSGPACK_OBJECT_NEGATIVE_INTEGER,
+ FLOAT32 = MSGPACK_OBJECT_FLOAT32,
+ FLOAT64 = MSGPACK_OBJECT_FLOAT64,
+ FLOAT = MSGPACK_OBJECT_FLOAT,
+#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
+ DOUBLE = MSGPACK_DEPRECATED("please use FLOAT64 instead") MSGPACK_OBJECT_DOUBLE, // obsolete
+#endif // MSGPACK_USE_LEGACY_NAME_AS_FLOAT
+ STR = MSGPACK_OBJECT_STR,
+ BIN = MSGPACK_OBJECT_BIN,
+ ARRAY = MSGPACK_OBJECT_ARRAY,
+ MAP = MSGPACK_OBJECT_MAP,
+ EXT = MSGPACK_OBJECT_EXT
+ };
+}
+
+
+struct object;
+struct object_kv;
+
+struct object_array;
+struct object_map;
+struct object_str;
+struct object_bin;
+struct object_ext;
+
+
+#if !defined(MSGPACK_USE_CPP03)
+
+namespace adaptor {
+template <typename T, typename Enabler = void>
+struct as;
+} // namespace adaptor
+
+template <typename T>
+struct has_as;
+
+#endif // !defined(MSGPACK_USE_CPP03)
+
+class type_error;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_OBJECT_FWD_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/pack.hpp b/third_party/msgpack/include/msgpack/v1/pack.hpp
new file mode 100644
index 0000000000..109334cf41
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/pack.hpp
@@ -0,0 +1,1602 @@
+//
+// MessagePack for C++ serializing routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_PACK_HPP
+#define MSGPACK_V1_PACK_HPP
+
+#include "msgpack/v1/pack_decl.hpp"
+
+#include <stdexcept>
+#include <limits>
+#include <cstring>
+#include <climits>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+/// The class template that supports continuous packing.
+/**
+ * @tparam Stream Any type that have a member function `Stream write(const char*, size_t s)`
+ *
+ */
+template <typename Stream>
+class packer {
+public:
+ /// Constructor
+ /**
+ * This constructor is left for compatibility.
+ * Use `packer(Stream& s)` instead of the constructor.
+ *
+ * @param s A pointer to packing destination stream object.
+ */
+ packer(Stream* s);
+ /// Constructor
+ /**
+ * @param s Packing destination stream object.
+ */
+ packer(Stream& s);
+
+public:
+ /// Packing function template
+ /**
+ * @tparam T The type of packing object.
+ *
+ * @param v a packing object.
+ *
+ * @return The reference of `*this`.
+ */
+ template <typename T>
+ packer<Stream>& pack(const T& v);
+
+ /// Packing uint8
+ /**
+ * The byte size of the packed data depends on `d`.
+ * The packed type is positive fixnum or uint8.
+ * The minimum byte size expression is used.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-int
+ *
+ * @param d a packing object.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_uint8(uint8_t d);
+
+ /// Packing uint16
+ /**
+ * The byte size of the packed data depends on `d`.
+ * The packed type is positive fixnum, uint8 or uint16.
+ * The minimum byte size expression is used.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-int
+ *
+ * @param d a packing object.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_uint16(uint16_t d);
+
+ /// Packing uint32
+ /**
+ * The byte size of the packed data depends on `d`.
+ * The packed type is positive fixnum, uint8, uint16 or uint32.
+ * The minimum byte size expression is used.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-int
+ *
+ * @param d a packing object.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_uint32(uint32_t d);
+
+ /// Packing uint16
+ /**
+ * The byte size of the packed data depends on `d`.
+ * The packed type is positive fixnum, uint8, uint16, uint32 or uint64.
+ * The minimum byte size expression is used.
+ * positive fixnum, uint8, uint16, or uint32 is used.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-int
+ *
+ * @param d a packing object.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_uint64(uint64_t d);
+
+ /// Packing int8
+ /**
+ * The byte size of the packed data depends on `d`.
+ * If `d` is zero or positive, the packed type is positive fixnum, or uint8,
+ * else the packed type is negative fixnum, or int8
+ * The minimum byte size expression is used.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-int
+ *
+ * @param d a packing object.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_int8(int8_t d);
+
+ /// Packing int16
+ /**
+ * The byte size of the packed data depends on `d`.
+ * If `d` is zero or positive, the packed type is positive fixnum, uint8, or uint16,
+ * else the packed type is negative fixnum, int8, or int16.
+ * The minimum byte size expression is used.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-int
+ *
+ * @param d a packing object.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_int16(int16_t d);
+
+ /// Packing int32
+ /**
+ * The byte size of the packed data depends on `d`.
+ * If `d` is zero or positive, the packed type is positive fixnum, uint8, uint16, or uint32,
+ * else the packed type is negative fixnum, int8, int16, or int32.
+ * The minimum byte size expression is used.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-int
+ *
+ * @param d a packing object.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_int32(int32_t d);
+
+ /// Packing int32
+ /**
+ * The byte size of the packed data depends on `d`.
+ * If `d` is zero or positive, the packed type is positive fixnum, uint8, uint16, uint32, or uint64,
+ * else the packed type is negative fixnum, int8, int16, int32, or int64.
+ * The minimum byte size expression is used.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-int
+ *
+ * @param d a packing object.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_int64(int64_t d);
+
+
+
+ /// Packing uint8 (fixed packed type).
+ /**
+ * The packed type is always uint8.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-int
+ *
+ * @param d a packing object.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_fix_uint8(uint8_t d);
+
+ /// Packing uint8 (fixed packed type).
+ /**
+ * The packed type is always uint16.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-int
+ *
+ * @param d a packing object.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_fix_uint16(uint16_t d);
+
+ /// Packing uint8 (fixed packed type).
+ /**
+ * The packed type is always uint32.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-int
+ *
+ * @param d a packing object.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_fix_uint32(uint32_t d);
+
+ /// Packing uint8 (fixed packed type).
+ /**
+ * The packed type is always uint64.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-int
+ *
+ * @param d a packing object.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_fix_uint64(uint64_t d);
+
+ /// Packing uint8 (fixed packed type).
+ /**
+ * The packed type is always int8.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-int
+ *
+ * @param d a packing object.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_fix_int8(int8_t d);
+
+ /// Packing uint8 (fixed packed type).
+ /**
+ * The packed type is always int16.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-int
+ *
+ * @param d a packing object.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_fix_int16(int16_t d);
+
+ /// Packing uint8 (fixed packed type).
+ /**
+ * The packed type is always int32.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-int
+ *
+ * @param d a packing object.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_fix_int32(int32_t d);
+
+ /// Packing uint8 (fixed packed type).
+ /**
+ * The packed type is always int64.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-int
+ *
+ * @param d a packing object.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_fix_int64(int64_t d);
+
+
+ /// Packing char
+ /**
+ * The byte size of the packed data depends on `d`.
+ * If `d` is zero or positive, the packed type is positive fixnum, or uint*,
+ * else the packed type is negative fixnum, or int*
+ * The minimum byte size expression is used.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-int
+ *
+ * @param d a packing object.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_char(char d);
+
+ /// Packing signed char
+ /**
+ * The byte size of the packed data depends on `d`.
+ * If `d` is zero or positive, the packed type is positive fixnum, or uint*,
+ * else the packed type is negative fixnum, or int*
+ * The minimum byte size expression is used.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-int
+ *
+ * @param d a packing object.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_signed_char(signed char d);
+
+ /// Packing short
+ /**
+ * The byte size of the packed data depends on `d`.
+ * If `d` is zero or positive, the packed type is positive fixnum, or uint*,
+ * else the packed type is negative fixnum, or int*
+ * The minimum byte size expression is used.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-int
+ *
+ * @param d a packing object.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_short(short d);
+
+ /// Packing int
+ /**
+ * The byte size of the packed data depends on `d`.
+ * If `d` is zero or positive, the packed type is positive fixnum, or uint*,
+ * else the packed type is negative fixnum, or int*
+ * The minimum byte size expression is used.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-int
+ *
+ * @param d a packing object.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_int(int d);
+
+ /// Packing long
+ /**
+ * The byte size of the packed data depends on `d`.
+ * If `d` is zero or positive, the packed type is positive fixnum, or uint*,
+ * else the packed type is negative fixnum, or int*
+ * The minimum byte size expression is used.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-int
+ *
+ * @param d a packing object.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_long(long d);
+
+ /// Packing long long
+ /**
+ * The byte size of the packed data depends on `d`.
+ * If `d` is zero or positive, the packed type is positive fixnum, or uint*,
+ * else the packed type is negative fixnum, or int*
+ * The minimum byte size expression is used.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-int
+ *
+ * @param d a packing object.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_long_long(long long d);
+
+
+ /// Packing unsigned char
+ /**
+ * The byte size of the packed data depends on `d`.
+ * The packed type is positive fixnum, or uint*.
+ * The minimum byte size expression is used.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-int
+ *
+ * @param d a packing object.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_unsigned_char(unsigned char d);
+
+ /// Packing unsigned short
+ /**
+ * The byte size of the packed data depends on `d`.
+ * The packed type is positive fixnum, or uint*.
+ * The minimum byte size expression is used.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-int
+ *
+ * @param d a packing object.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_unsigned_short(unsigned short d);
+
+ /// Packing unsigned int
+ /**
+ * The byte size of the packed data depends on `d`.
+ * The packed type is positive fixnum, or uint*.
+ * The minimum byte size expression is used.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-int
+ *
+ * @param d a packing object.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_unsigned_int(unsigned int d);
+
+ /// Packing unsigned long
+ /**
+ * The byte size of the packed data depends on `d`.
+ * The packed type is positive fixnum, or uint*.
+ * The minimum byte size expression is used.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-int
+ *
+ * @param d a packing object.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_unsigned_long(unsigned long d);
+
+ /// Packing unsigned long long
+ /**
+ * The byte size of the packed data depends on `d`.
+ * The packed type is positive fixnum, or uint*.
+ * The minimum byte size expression is used.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-int
+ *
+ * @param d a packing object.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_unsigned_long_long(unsigned long long d);
+
+ /// Packing float
+ /**
+ * The packed type is float32.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-float
+ *
+ * @param d a packing object.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_float(float d);
+
+ /// Packing double
+ /**
+ * The packed type is float64.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-float
+ *
+ * @param d a packing object.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_double(double d);
+
+
+ /// Packing nil
+ /**
+ * The packed type is nil.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-nil
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_nil();
+
+ /// Packing true
+ /**
+ * The packed type is bool, value is true.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#bool-format-family
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_true();
+
+ /// Packing false
+ /**
+ * The packed type is bool, value is false.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#bool-format-family
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_false();
+
+ /// Packing array header and size
+ /**
+ * The packed type is array header and array size.
+ * You need to pack `n` msgpack objects following this header and size.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#array-format-family
+ *
+ * @param n The number of array elements (array size).
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_array(uint32_t n);
+
+ /// Packing map header and size
+ /**
+ * The packed type is map header and map size.
+ * You need to pack `n` pairs of msgpack objects following this header and size.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#map-format-family
+ *
+ * @param n The number of array elements (array size).
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_map(uint32_t n);
+
+
+ /// Packing str header and length
+ /**
+ * The packed type is str header and length.
+ * The minimum byte size length expression is used.
+ * You need to call `pack_str_body(const char* b, uint32_t l)` after this function calling with the same `l` value.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-str
+ *
+ * @param l The length of string.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_str(uint32_t l);
+
+ /// Packing str body
+ /**
+ * You need to call this function just after `pack_str(uint32_t l)` calling.
+ * The value `l` should be the same as `pack_str(uint32_t l)` argument `l`.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-str
+ *
+ * @param l The length of string.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_str_body(const char* b, uint32_t l);
+
+ /// Packing raw (v4) header and length
+ /**
+ * The packed type is raw header and length.
+ * The minimum byte size length expression is used.
+ * The format raw (v4) is old MessagePack version4 format.
+ * You need to call `pack_v4raw_body(const char* b, uint32_t l)` after this function calling with the same `l` value.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-str
+ *
+ * @param l The length of string.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_v4raw(uint32_t l);
+
+ /// Packing raw (v4) body
+ /**
+ * The format raw (v4) is old MessagePack version4 format.
+ * You need to call this function just after `pack_v4raw(uint32_t l)` calling.
+ * The value `l` should be the same as `pack_v4raw(uint32_t l)` argument `l`.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-str
+ *
+ * @param l The length of string.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_v4raw_body(const char* b, uint32_t l);
+
+ /// Packing bin header and length
+ /**
+ * The packed type is bin header and length.
+ * The minimum byte size length expression is used.
+ * You need to call `pack_bin_body(const char* b, uint32_t l)` after this function calling with the same `l` value.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#bin-format-family
+ *
+ * @param l The length of string.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_bin(uint32_t l);
+
+ /// Packing bin body
+ /**
+ * You need to call this function just after `pack_bin(uint32_t l)` calling.
+ * The value `l` should be the same as `pack_bin(uint32_t l)` argument `l`.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#bin-format-family
+ *
+ * @param l The length of string.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_bin_body(const char* b, uint32_t l);
+
+ /// Packing ext header, type, and length
+ /**
+ * The packed type is ext.
+ * The minimum byte size length expression is used.
+ * The length 1, 2, 4, 8, and 16 can be encoded in the header.
+ * You need to call `pack_ext_body(const char* b, uint32_t l)` after this function calling with the same `l` value.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#formats-ext
+ *
+ * @param l The length of string.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_ext(size_t l, int8_t type);
+
+ /// Packing ext body
+ /**
+ * You need to call this function just after `pack_ext(size_t l, int8_t type)` calling.
+ * The value `l` should be the same as `pack_ext(size_t l, int8_t type)` argument `l`.
+ * See https://github.com/msgpack/msgpack/blob/master/spec.md#bin-format-family
+ *
+ * @param l The length of string.
+ *
+ * @return The reference of `*this`.
+ */
+ packer<Stream>& pack_ext_body(const char* b, uint32_t l);
+
+private:
+ template <typename T>
+ void pack_imp_uint8(T d);
+ template <typename T>
+ void pack_imp_uint16(T d);
+ template <typename T>
+ void pack_imp_uint32(T d);
+ template <typename T>
+ void pack_imp_uint64(T d);
+ template <typename T>
+ void pack_imp_int8(T d);
+ template <typename T>
+ void pack_imp_int16(T d);
+ template <typename T>
+ void pack_imp_int32(T d);
+ template <typename T>
+ void pack_imp_int64(T d);
+
+ void append_buffer(const char* buf, size_t len)
+ { m_stream.write(buf, len); }
+
+private:
+ Stream& m_stream;
+
+#if defined(MSGPACK_USE_CPP03)
+private:
+ packer(const packer&);
+ packer& operator=(const packer&);
+ packer();
+#else // defined(MSGPACK_USE_CPP03)
+public:
+ packer(const packer&) = delete;
+ packer& operator=(const packer&) = delete;
+ packer() = delete;
+#endif // defined(MSGPACK_USE_CPP03)
+};
+
+
+/// Pack the value as MessagePack format into the stream
+/**
+ * This function template is left for compatibility.
+ * Use `void pack(Stream& s, const T& v)` instead of the function template.
+ *
+ * @tparam Stream Any type that have a member function `Stream write(const char*, size_t s)`
+ * @tparam T Any type that is adapted to MessagePack
+ * @param s The pointer to packing destination stream
+ * @param v Packing value
+ */
+template <typename Stream, typename T>
+inline void pack(Stream* s, const T& v)
+{
+ packer<Stream>(*s).pack(v);
+}
+
+/// Pack the value as MessagePack format into the stream
+/**
+ * @tparam Stream Any type that have a member function `Stream write(const char*, size_t s)`
+ * @tparam T Any type that is adapted to MessagePack
+ * @param s Packing destination stream
+ * @param v Packing value
+ */
+template <typename Stream, typename T>
+inline void pack(Stream& s, const T& v)
+{
+ packer<Stream>(s).pack(v);
+}
+
+
+#if MSGPACK_ENDIAN_LITTLE_BYTE
+template <typename T>
+inline char take8_8(T d) {
+ return static_cast<char>(reinterpret_cast<uint8_t*>(&d)[0]);
+}
+template <typename T>
+inline char take8_16(T d) {
+ return static_cast<char>(reinterpret_cast<uint8_t*>(&d)[0]);
+}
+template <typename T>
+inline char take8_32(T d) {
+ return static_cast<char>(reinterpret_cast<uint8_t*>(&d)[0]);
+}
+template <typename T>
+inline char take8_64(T d) {
+ return static_cast<char>(reinterpret_cast<uint8_t*>(&d)[0]);
+}
+
+#elif MSGPACK_ENDIAN_BIG_BYTE
+
+template <typename T>
+inline char take8_8(T d) {
+ return static_cast<char>(reinterpret_cast<uint8_t*>(&d)[0]);
+}
+template <typename T>
+inline char take8_16(T d) {
+ return static_cast<char>(reinterpret_cast<uint8_t*>(&d)[1]);
+}
+template <typename T>
+inline char take8_32(T d) {
+ return static_cast<char>(reinterpret_cast<uint8_t*>(&d)[3]);
+}
+template <typename T>
+inline char take8_64(T d) {
+ return static_cast<char>(reinterpret_cast<uint8_t*>(&d)[7]);
+}
+
+#else
+#error msgpack-c supports only big endian and little endian
+#endif
+
+template <typename Stream>
+inline packer<Stream>::packer(Stream* s) : m_stream(*s) { }
+
+template <typename Stream>
+inline packer<Stream>::packer(Stream& s) : m_stream(s) { }
+
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_uint8(uint8_t d)
+{ pack_imp_uint8(d); return *this; }
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_uint16(uint16_t d)
+{ pack_imp_uint16(d); return *this; }
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_uint32(uint32_t d)
+{ pack_imp_uint32(d); return *this; }
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_uint64(uint64_t d)
+{ pack_imp_uint64(d); return *this; }
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_int8(int8_t d)
+{ pack_imp_int8(d); return *this; }
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_int16(int16_t d)
+{ pack_imp_int16(d); return *this; }
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_int32(int32_t d)
+{ pack_imp_int32(d); return *this; }
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_int64(int64_t d)
+{ pack_imp_int64(d); return *this;}
+
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_fix_uint8(uint8_t d)
+{
+ char buf[2] = {static_cast<char>(0xccu), take8_8(d)};
+ append_buffer(buf, 2);
+ return *this;
+}
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_fix_uint16(uint16_t d)
+{
+ char buf[3];
+ buf[0] = static_cast<char>(0xcdu); _msgpack_store16(&buf[1], d);
+ append_buffer(buf, 3);
+ return *this;
+}
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_fix_uint32(uint32_t d)
+{
+ char buf[5];
+ buf[0] = static_cast<char>(0xceu); _msgpack_store32(&buf[1], d);
+ append_buffer(buf, 5);
+ return *this;
+}
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_fix_uint64(uint64_t d)
+{
+ char buf[9];
+ buf[0] = static_cast<char>(0xcfu); _msgpack_store64(&buf[1], d);
+ append_buffer(buf, 9);
+ return *this;
+}
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_fix_int8(int8_t d)
+{
+ char buf[2] = {static_cast<char>(0xd0u), take8_8(d)};
+ append_buffer(buf, 2);
+ return *this;
+}
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_fix_int16(int16_t d)
+{
+ char buf[3];
+ buf[0] = static_cast<char>(0xd1u); _msgpack_store16(&buf[1], d);
+ append_buffer(buf, 3);
+ return *this;
+}
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_fix_int32(int32_t d)
+{
+ char buf[5];
+ buf[0] = static_cast<char>(0xd2u); _msgpack_store32(&buf[1], d);
+ append_buffer(buf, 5);
+ return *this;
+}
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_fix_int64(int64_t d)
+{
+ char buf[9];
+ buf[0] = static_cast<char>(0xd3u); _msgpack_store64(&buf[1], d);
+ append_buffer(buf, 9);
+ return *this;
+}
+
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_char(char d)
+{
+#if defined(CHAR_MIN)
+#if CHAR_MIN < 0
+ pack_imp_int8(d);
+#else
+ pack_imp_uint8(d);
+#endif
+#else
+#error CHAR_MIN is not defined
+#endif
+ return *this;
+}
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_signed_char(signed char d)
+{
+ pack_imp_int8(d);
+ return *this;
+}
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_short(short d)
+{
+#if defined(SIZEOF_SHORT)
+#if SIZEOF_SHORT == 2
+ pack_imp_int16(d);
+#elif SIZEOF_SHORT == 4
+ pack_imp_int32(d);
+#else
+ pack_imp_int64(d);
+#endif
+
+#elif defined(SHRT_MAX)
+#if SHRT_MAX == 0x7fff
+ pack_imp_int16(d);
+#elif SHRT_MAX == 0x7fffffff
+ pack_imp_int32(d);
+#else
+ pack_imp_int64(d);
+#endif
+
+#else
+ if(sizeof(short) == 2) {
+ pack_imp_int16(d);
+ } else if(sizeof(short) == 4) {
+ pack_imp_int32(d);
+ } else {
+ pack_imp_int64(d);
+ }
+#endif
+ return *this;
+}
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_int(int d)
+{
+#if defined(SIZEOF_INT)
+#if SIZEOF_INT == 2
+ pack_imp_int16(d);
+#elif SIZEOF_INT == 4
+ pack_imp_int32(d);
+#else
+ pack_imp_int64(d);
+#endif
+
+#elif defined(INT_MAX)
+#if INT_MAX == 0x7fff
+ pack_imp_int16(d);
+#elif INT_MAX == 0x7fffffff
+ pack_imp_int32(d);
+#else
+ pack_imp_int64(d);
+#endif
+
+#else
+ if(sizeof(int) == 2) {
+ pack_imp_int16(d);
+ } else if(sizeof(int) == 4) {
+ pack_imp_int32(d);
+ } else {
+ pack_imp_int64(d);
+ }
+#endif
+ return *this;
+}
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_long(long d)
+{
+#if defined(SIZEOF_LONG)
+#if SIZEOF_LONG == 2
+ pack_imp_int16(d);
+#elif SIZEOF_LONG == 4
+ pack_imp_int32(d);
+#else
+ pack_imp_int64(d);
+#endif
+
+#elif defined(LONG_MAX)
+#if LONG_MAX == 0x7fffL
+ pack_imp_int16(d);
+#elif LONG_MAX == 0x7fffffffL
+ pack_imp_int32(d);
+#else
+ pack_imp_int64(d);
+#endif
+
+#else
+ if(sizeof(long) == 2) {
+ pack_imp_int16(d);
+ } else if(sizeof(long) == 4) {
+ pack_imp_int32(d);
+ } else {
+ pack_imp_int64(d);
+ }
+#endif
+ return *this;
+}
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_long_long(long long d)
+{
+#if defined(SIZEOF_LONG_LONG)
+#if SIZEOF_LONG_LONG == 2
+ pack_imp_int16(d);
+#elif SIZEOF_LONG_LONG == 4
+ pack_imp_int32(d);
+#else
+ pack_imp_int64(d);
+#endif
+
+#elif defined(LLONG_MAX)
+#if LLONG_MAX == 0x7fffL
+ pack_imp_int16(d);
+#elif LLONG_MAX == 0x7fffffffL
+ pack_imp_int32(d);
+#else
+ pack_imp_int64(d);
+#endif
+
+#else
+ if(sizeof(long long) == 2) {
+ pack_imp_int16(d);
+ } else if(sizeof(long long) == 4) {
+ pack_imp_int32(d);
+ } else {
+ pack_imp_int64(d);
+ }
+#endif
+ return *this;
+}
+
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_unsigned_char(unsigned char d)
+{
+ pack_imp_uint8(d);
+ return *this;
+}
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_unsigned_short(unsigned short d)
+{
+#if defined(SIZEOF_SHORT)
+#if SIZEOF_SHORT == 2
+ pack_imp_uint16(d);
+#elif SIZEOF_SHORT == 4
+ pack_imp_uint32(d);
+#else
+ pack_imp_uint64(d);
+#endif
+
+#elif defined(USHRT_MAX)
+#if USHRT_MAX == 0xffffU
+ pack_imp_uint16(d);
+#elif USHRT_MAX == 0xffffffffU
+ pack_imp_uint32(d);
+#else
+ pack_imp_uint64(d);
+#endif
+
+#else
+ if(sizeof(unsigned short) == 2) {
+ pack_imp_uint16(d);
+ } else if(sizeof(unsigned short) == 4) {
+ pack_imp_uint32(d);
+ } else {
+ pack_imp_uint64(d);
+ }
+#endif
+ return *this;
+}
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_unsigned_int(unsigned int d)
+{
+#if defined(SIZEOF_INT)
+#if SIZEOF_INT == 2
+ pack_imp_uint16(d);
+#elif SIZEOF_INT == 4
+ pack_imp_uint32(d);
+#else
+ pack_imp_uint64(d);
+#endif
+
+#elif defined(UINT_MAX)
+#if UINT_MAX == 0xffffU
+ pack_imp_uint16(d);
+#elif UINT_MAX == 0xffffffffU
+ pack_imp_uint32(d);
+#else
+ pack_imp_uint64(d);
+#endif
+
+#else
+ if(sizeof(unsigned int) == 2) {
+ pack_imp_uint16(d);
+ } else if(sizeof(unsigned int) == 4) {
+ pack_imp_uint32(d);
+ } else {
+ pack_imp_uint64(d);
+ }
+#endif
+ return *this;
+}
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_unsigned_long(unsigned long d)
+{
+#if defined(SIZEOF_LONG)
+#if SIZEOF_LONG == 2
+ pack_imp_uint16(d);
+#elif SIZEOF_LONG == 4
+ pack_imp_uint32(d);
+#else
+ pack_imp_uint64(d);
+#endif
+
+#elif defined(ULONG_MAX)
+#if ULONG_MAX == 0xffffUL
+ pack_imp_uint16(d);
+#elif ULONG_MAX == 0xffffffffUL
+ pack_imp_uint32(d);
+#else
+ pack_imp_uint64(d);
+#endif
+
+#else
+ if(sizeof(unsigned long) == 2) {
+ pack_imp_uint16(d);
+ } else if(sizeof(unsigned long) == 4) {
+ pack_imp_uint32(d);
+ } else {
+ pack_imp_uint64(d);
+ }
+#endif
+ return *this;
+}
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_unsigned_long_long(unsigned long long d)
+{
+#if defined(SIZEOF_LONG_LONG)
+#if SIZEOF_LONG_LONG == 2
+ pack_imp_uint16(d);
+#elif SIZEOF_LONG_LONG == 4
+ pack_imp_uint32(d);
+#else
+ pack_imp_uint64(d);
+#endif
+
+#elif defined(ULLONG_MAX)
+#if ULLONG_MAX == 0xffffUL
+ pack_imp_uint16(d);
+#elif ULLONG_MAX == 0xffffffffUL
+ pack_imp_uint32(d);
+#else
+ pack_imp_uint64(d);
+#endif
+
+#else
+ if(sizeof(unsigned long long) == 2) {
+ pack_imp_uint16(d);
+ } else if(sizeof(unsigned long long) == 4) {
+ pack_imp_uint32(d);
+ } else {
+ pack_imp_uint64(d);
+ }
+#endif
+ return *this;
+}
+
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_float(float d)
+{
+ union { float f; uint32_t i; } mem;
+ mem.f = d;
+ char buf[5];
+ buf[0] = static_cast<char>(0xcau); _msgpack_store32(&buf[1], mem.i);
+ append_buffer(buf, 5);
+ return *this;
+}
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_double(double d)
+{
+ union { double f; uint64_t i; } mem;
+ mem.f = d;
+ char buf[9];
+ buf[0] = static_cast<char>(0xcbu);
+
+#if defined(TARGET_OS_IPHONE)
+ // ok
+#elif defined(__arm__) && !(__ARM_EABI__) // arm-oabi
+ // https://github.com/msgpack/msgpack-perl/pull/1
+ mem.i = (mem.i & 0xFFFFFFFFUL) << 32UL | (mem.i >> 32UL);
+#endif
+ _msgpack_store64(&buf[1], mem.i);
+ append_buffer(buf, 9);
+ return *this;
+}
+
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_nil()
+{
+ const char d = static_cast<char>(0xc0u);
+ append_buffer(&d, 1);
+ return *this;
+}
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_true()
+{
+ const char d = static_cast<char>(0xc3u);
+ append_buffer(&d, 1);
+ return *this;
+}
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_false()
+{
+ const char d = static_cast<char>(0xc2u);
+ append_buffer(&d, 1);
+ return *this;
+}
+
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_array(uint32_t n)
+{
+ if(n < 16) {
+ char d = static_cast<char>(0x90u | n);
+ append_buffer(&d, 1);
+ } else if(n < 65536) {
+ char buf[3];
+ buf[0] = static_cast<char>(0xdcu); _msgpack_store16(&buf[1], static_cast<uint16_t>(n));
+ append_buffer(buf, 3);
+ } else {
+ char buf[5];
+ buf[0] = static_cast<char>(0xddu); _msgpack_store32(&buf[1], static_cast<uint32_t>(n));
+ append_buffer(buf, 5);
+ }
+ return *this;
+}
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_map(uint32_t n)
+{
+ if(n < 16) {
+ unsigned char d = static_cast<unsigned char>(0x80u | n);
+ char buf = take8_8(d);
+ append_buffer(&buf, 1);
+ } else if(n < 65536) {
+ char buf[3];
+ buf[0] = static_cast<char>(0xdeu); _msgpack_store16(&buf[1], static_cast<uint16_t>(n));
+ append_buffer(buf, 3);
+ } else {
+ char buf[5];
+ buf[0] = static_cast<char>(0xdfu); _msgpack_store32(&buf[1], static_cast<uint32_t>(n));
+ append_buffer(buf, 5);
+ }
+ return *this;
+}
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_str(uint32_t l)
+{
+ if(l < 32) {
+ unsigned char d = static_cast<uint8_t>(0xa0u | l);
+ char buf = take8_8(d);
+ append_buffer(&buf, 1);
+ } else if(l < 256) {
+ char buf[2];
+ buf[0] = static_cast<char>(0xd9u); buf[1] = static_cast<uint8_t>(l);
+ append_buffer(buf, 2);
+ } else if(l < 65536) {
+ char buf[3];
+ buf[0] = static_cast<char>(0xdau); _msgpack_store16(&buf[1], static_cast<uint16_t>(l));
+ append_buffer(buf, 3);
+ } else {
+ char buf[5];
+ buf[0] = static_cast<char>(0xdbu); _msgpack_store32(&buf[1], static_cast<uint32_t>(l));
+ append_buffer(buf, 5);
+ }
+ return *this;
+}
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_str_body(const char* b, uint32_t l)
+{
+ append_buffer(b, l);
+ return *this;
+}
+
+// Raw (V4)
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_v4raw(uint32_t l)
+{
+ if(l < 32) {
+ unsigned char d = static_cast<uint8_t>(0xa0u | l);
+ char buf = take8_8(d);
+ append_buffer(&buf, 1);
+ } else if(l < 65536) {
+ char buf[3];
+ buf[0] = static_cast<char>(0xdau); _msgpack_store16(&buf[1], static_cast<uint16_t>(l));
+ append_buffer(buf, 3);
+ } else {
+ char buf[5];
+ buf[0] = static_cast<char>(0xdbu); _msgpack_store32(&buf[1], static_cast<uint32_t>(l));
+ append_buffer(buf, 5);
+ }
+ return *this;
+}
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_v4raw_body(const char* b, uint32_t l)
+{
+ append_buffer(b, l);
+ return *this;
+}
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_bin(uint32_t l)
+{
+ if(l < 256) {
+ char buf[2];
+ buf[0] = static_cast<char>(0xc4u); buf[1] = static_cast<uint8_t>(l);
+ append_buffer(buf, 2);
+ } else if(l < 65536) {
+ char buf[3];
+ buf[0] = static_cast<char>(0xc5u); _msgpack_store16(&buf[1], static_cast<uint16_t>(l));
+ append_buffer(buf, 3);
+ } else {
+ char buf[5];
+ buf[0] = static_cast<char>(0xc6u); _msgpack_store32(&buf[1], static_cast<uint32_t>(l));
+ append_buffer(buf, 5);
+ }
+ return *this;
+}
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_bin_body(const char* b, uint32_t l)
+{
+ append_buffer(b, l);
+ return *this;
+}
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_ext(size_t l, int8_t type)
+{
+ switch(l) {
+ case 1: {
+ char buf[2];
+ buf[0] = static_cast<char>(0xd4u);
+ buf[1] = static_cast<char>(type);
+ append_buffer(buf, 2);
+ } break;
+ case 2: {
+ char buf[2];
+ buf[0] = static_cast<char>(0xd5u);
+ buf[1] = static_cast<char>(type);
+ append_buffer(buf, 2);
+ } break;
+ case 4: {
+ char buf[2];
+ buf[0] = static_cast<char>(0xd6u);
+ buf[1] = static_cast<char>(type);
+ append_buffer(buf, 2);
+ } break;
+ case 8: {
+ char buf[2];
+ buf[0] = static_cast<char>(0xd7u);
+ buf[1] = static_cast<char>(type);
+ append_buffer(buf, 2);
+ } break;
+ case 16: {
+ char buf[2];
+ buf[0] = static_cast<char>(0xd8u);
+ buf[1] = static_cast<char>(type);
+ append_buffer(buf, 2);
+ } break;
+ default:
+ if(l < 256) {
+ char buf[3];
+ buf[0] = static_cast<char>(0xc7u);
+ buf[1] = static_cast<char>(l);
+ buf[2] = static_cast<char>(type);
+ append_buffer(buf, 3);
+ } else if(l < 65536) {
+ char buf[4];
+ buf[0] = static_cast<char>(0xc8u);
+ _msgpack_store16(&buf[1], static_cast<uint16_t>(l));
+ buf[3] = static_cast<char>(type);
+ append_buffer(buf, 4);
+ } else {
+ char buf[6];
+ buf[0] = static_cast<char>(0xc9u);
+ _msgpack_store32(&buf[1], static_cast<uint32_t>(l));
+ buf[5] = static_cast<char>(type);
+ append_buffer(buf, 6);
+ }
+ break;
+ }
+ return *this;
+}
+
+template <typename Stream>
+inline packer<Stream>& packer<Stream>::pack_ext_body(const char* b, uint32_t l)
+{
+ append_buffer(b, l);
+ return *this;
+}
+
+template <typename Stream>
+template <typename T>
+inline void packer<Stream>::pack_imp_uint8(T d)
+{
+ if(d < (1<<7)) {
+ /* fixnum */
+ char buf = take8_8(d);
+ append_buffer(&buf, 1);
+ } else {
+ /* unsigned 8 */
+ char buf[2] = {static_cast<char>(0xccu), take8_8(d)};
+ append_buffer(buf, 2);
+ }
+}
+
+template <typename Stream>
+template <typename T>
+inline void packer<Stream>::pack_imp_uint16(T d)
+{
+ if(d < (1<<7)) {
+ /* fixnum */
+ char buf = take8_16(d);
+ append_buffer(&buf, 1);
+ } else if(d < (1<<8)) {
+ /* unsigned 8 */
+ char buf[2] = {static_cast<char>(0xccu), take8_16(d)};
+ append_buffer(buf, 2);
+ } else {
+ /* unsigned 16 */
+ char buf[3];
+ buf[0] = static_cast<char>(0xcdu); _msgpack_store16(&buf[1], static_cast<uint16_t>(d));
+ append_buffer(buf, 3);
+ }
+}
+
+template <typename Stream>
+template <typename T>
+inline void packer<Stream>::pack_imp_uint32(T d)
+{
+ if(d < (1<<8)) {
+ if(d < (1<<7)) {
+ /* fixnum */
+ char buf = take8_32(d);
+ append_buffer(&buf, 1);
+ } else {
+ /* unsigned 8 */
+ char buf[2] = {static_cast<char>(0xccu), take8_32(d)};
+ append_buffer(buf, 2);
+ }
+ } else {
+ if(d < (1<<16)) {
+ /* unsigned 16 */
+ char buf[3];
+ buf[0] = static_cast<char>(0xcdu); _msgpack_store16(&buf[1], static_cast<uint16_t>(d));
+ append_buffer(buf, 3);
+ } else {
+ /* unsigned 32 */
+ char buf[5];
+ buf[0] = static_cast<char>(0xceu); _msgpack_store32(&buf[1], static_cast<uint32_t>(d));
+ append_buffer(buf, 5);
+ }
+ }
+}
+
+template <typename Stream>
+template <typename T>
+inline void packer<Stream>::pack_imp_uint64(T d)
+{
+ if(d < (1ULL<<8)) {
+ if(d < (1ULL<<7)) {
+ /* fixnum */
+ char buf = take8_64(d);
+ append_buffer(&buf, 1);
+ } else {
+ /* unsigned 8 */
+ char buf[2] = {static_cast<char>(0xccu), take8_64(d)};
+ append_buffer(buf, 2);
+ }
+ } else {
+ if(d < (1ULL<<16)) {
+ /* unsigned 16 */
+ char buf[3];
+ buf[0] = static_cast<char>(0xcdu); _msgpack_store16(&buf[1], static_cast<uint16_t>(d));
+ append_buffer(buf, 3);
+ } else if(d < (1ULL<<32)) {
+ /* unsigned 32 */
+ char buf[5];
+ buf[0] = static_cast<char>(0xceu); _msgpack_store32(&buf[1], static_cast<uint32_t>(d));
+ append_buffer(buf, 5);
+ } else {
+ /* unsigned 64 */
+ char buf[9];
+ buf[0] = static_cast<char>(0xcfu); _msgpack_store64(&buf[1], d);
+ append_buffer(buf, 9);
+ }
+ }
+}
+
+template <typename Stream>
+template <typename T>
+inline void packer<Stream>::pack_imp_int8(T d)
+{
+ if(d < -(1<<5)) {
+ /* signed 8 */
+ char buf[2] = {static_cast<char>(0xd0u), take8_8(d)};
+ append_buffer(buf, 2);
+ } else {
+ /* fixnum */
+ char buf = take8_8(d);
+ append_buffer(&buf, 1);
+ }
+}
+
+template <typename Stream>
+template <typename T>
+inline void packer<Stream>::pack_imp_int16(T d)
+{
+ if(d < -(1<<5)) {
+ if(d < -(1<<7)) {
+ /* signed 16 */
+ char buf[3];
+ buf[0] = static_cast<char>(0xd1u); _msgpack_store16(&buf[1], static_cast<int16_t>(d));
+ append_buffer(buf, 3);
+ } else {
+ /* signed 8 */
+ char buf[2] = {static_cast<char>(0xd0u), take8_16(d)};
+ append_buffer(buf, 2);
+ }
+ } else if(d < (1<<7)) {
+ /* fixnum */
+ char buf = take8_16(d);
+ append_buffer(&buf, 1);
+ } else {
+ if(d < (1<<8)) {
+ /* unsigned 8 */
+ char buf[2] = {static_cast<char>(0xccu), take8_16(d)};
+ append_buffer(buf, 2);
+ } else {
+ /* unsigned 16 */
+ char buf[3];
+ buf[0] = static_cast<char>(0xcdu); _msgpack_store16(&buf[1], static_cast<uint16_t>(d));
+ append_buffer(buf, 3);
+ }
+ }
+}
+
+template <typename Stream>
+template <typename T>
+inline void packer<Stream>::pack_imp_int32(T d)
+{
+ if(d < -(1<<5)) {
+ if(d < -(1<<15)) {
+ /* signed 32 */
+ char buf[5];
+ buf[0] = static_cast<char>(0xd2u); _msgpack_store32(&buf[1], static_cast<int32_t>(d));
+ append_buffer(buf, 5);
+ } else if(d < -(1<<7)) {
+ /* signed 16 */
+ char buf[3];
+ buf[0] = static_cast<char>(0xd1u); _msgpack_store16(&buf[1], static_cast<int16_t>(d));
+ append_buffer(buf, 3);
+ } else {
+ /* signed 8 */
+ char buf[2] = { static_cast<char>(0xd0u), take8_32(d)};
+ append_buffer(buf, 2);
+ }
+ } else if(d < (1<<7)) {
+ /* fixnum */
+ char buf = take8_32(d);
+ append_buffer(&buf, 1);
+ } else {
+ if(d < (1<<8)) {
+ /* unsigned 8 */
+ char buf[2] = { static_cast<char>(0xccu), take8_32(d)};
+ append_buffer(buf, 2);
+ } else if(d < (1<<16)) {
+ /* unsigned 16 */
+ char buf[3];
+ buf[0] = static_cast<char>(0xcdu); _msgpack_store16(&buf[1], static_cast<uint16_t>(d));
+ append_buffer(buf, 3);
+ } else {
+ /* unsigned 32 */
+ char buf[5];
+ buf[0] = static_cast<char>(0xceu); _msgpack_store32(&buf[1], static_cast<uint32_t>(d));
+ append_buffer(buf, 5);
+ }
+ }
+}
+
+template <typename Stream>
+template <typename T>
+inline void packer<Stream>::pack_imp_int64(T d)
+{
+ if(d < -(1LL<<5)) {
+ if(d < -(1LL<<15)) {
+ if(d < -(1LL<<31)) {
+ /* signed 64 */
+ char buf[9];
+ buf[0] = static_cast<char>(0xd3u); _msgpack_store64(&buf[1], d);
+ append_buffer(buf, 9);
+ } else {
+ /* signed 32 */
+ char buf[5];
+ buf[0] = static_cast<char>(0xd2u); _msgpack_store32(&buf[1], static_cast<int32_t>(d));
+ append_buffer(buf, 5);
+ }
+ } else {
+ if(d < -(1<<7)) {
+ /* signed 16 */
+ char buf[3];
+ buf[0] = static_cast<char>(0xd1u); _msgpack_store16(&buf[1], static_cast<int16_t>(d));
+ append_buffer(buf, 3);
+ } else {
+ /* signed 8 */
+ char buf[2] = {static_cast<char>(0xd0u), take8_64(d)};
+ append_buffer(buf, 2);
+ }
+ }
+ } else if(d < (1<<7)) {
+ /* fixnum */
+ char buf = take8_64(d);
+ append_buffer(&buf, 1);
+ } else {
+ if(d < (1LL<<16)) {
+ if(d < (1<<8)) {
+ /* unsigned 8 */
+ char buf[2] = {static_cast<char>(0xccu), take8_64(d)};
+ append_buffer(buf, 2);
+ } else {
+ /* unsigned 16 */
+ char buf[3];
+ buf[0] = static_cast<char>(0xcdu); _msgpack_store16(&buf[1], static_cast<uint16_t>(d));
+ append_buffer(buf, 3);
+ }
+ } else {
+ if(d < (1LL<<32)) {
+ /* unsigned 32 */
+ char buf[5];
+ buf[0] = static_cast<char>(0xceu); _msgpack_store32(&buf[1], static_cast<uint32_t>(d));
+ append_buffer(buf, 5);
+ } else {
+ /* unsigned 64 */
+ char buf[9];
+ buf[0] = static_cast<char>(0xcfu); _msgpack_store64(&buf[1], d);
+ append_buffer(buf, 9);
+ }
+ }
+ }
+}
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_PACK_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/pack_decl.hpp b/third_party/msgpack/include/msgpack/v1/pack_decl.hpp
new file mode 100644
index 0000000000..519afe9828
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/pack_decl.hpp
@@ -0,0 +1,91 @@
+//
+// MessagePack for C++ serializing routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_PACK_DECL_HPP
+#define MSGPACK_V1_PACK_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/cpp_config.hpp"
+#include "msgpack/sysdep.h"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+/// The class template that supports continuous packing.
+/**
+ * @tparam Stream Any type that have a member function `Stream write(const char*, size_t s)`
+ *
+ */
+template <typename Stream>
+class packer;
+
+/// Pack the value as MessagePack format into the stream
+/**
+ * This function template is left for compatibility.
+ * Use `void pack(Stream& s, const T& v)` instead of the function template.
+ *
+ * @tparam Stream Any type that have a member function `Stream write(const char*, size_t s)`
+ * @tparam T Any type that is adapted to MessagePack
+ * @param s The pointer to packing destination stream
+ * @param v Packing value
+ */
+template <typename Stream, typename T>
+void pack(Stream* s, const T& v);
+
+/// Pack the value as MessagePack format into the stream
+/**
+ * @tparam Stream Any type that have a member function `Stream write(const char*, size_t s)`
+ * @tparam T Any type that is adapted to MessagePack
+ * @param s Packing destination stream
+ * @param v Packing value
+ */
+template <typename Stream, typename T>
+void pack(Stream& s, const T& v);
+
+#if MSGPACK_ENDIAN_LITTLE_BYTE
+template <typename T>
+char take8_8(T d);
+
+template <typename T>
+char take8_16(T d);
+
+template <typename T>
+char take8_32(T d);
+
+template <typename T>
+char take8_64(T d);
+
+#elif MSGPACK_ENDIAN_BIG_BYTE
+
+template <typename T>
+char take8_8(T d);
+
+template <typename T>
+char take8_16(T d);
+
+template <typename T>
+char take8_32(T d);
+
+template <typename T>
+char take8_64(T d);
+
+#else
+#error msgpack-c supports only big endian and little endian
+#endif
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_PACK_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/parse_return.hpp b/third_party/msgpack/include/msgpack/v1/parse_return.hpp
new file mode 100644
index 0000000000..4fb0249aa7
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/parse_return.hpp
@@ -0,0 +1,36 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_PARSE_RETURN_HPP
+#define MSGPACK_V1_PARSE_RETURN_HPP
+
+#include "msgpack/versioning.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+
+// for internal use
+typedef enum {
+ PARSE_SUCCESS = 2,
+ PARSE_EXTRA_BYTES = 1,
+ PARSE_CONTINUE = 0,
+ PARSE_PARSE_ERROR = -1
+} parse_return;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_PARSE_RETURN_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/preprocessor.hpp b/third_party/msgpack/include/msgpack/v1/preprocessor.hpp
new file mode 100644
index 0000000000..d2ba938756
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/preprocessor.hpp
@@ -0,0 +1,19 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org/libs/preprocessor for documentation. */
+#
+# ifndef MSGPACK_PREPROCESSOR_HPP
+# define MSGPACK_PREPROCESSOR_HPP
+#
+# include <msgpack/preprocessor/library.hpp>
+#
+# endif
diff --git a/third_party/msgpack/include/msgpack/v1/sbuffer.hpp b/third_party/msgpack/include/msgpack/v1/sbuffer.hpp
new file mode 100644
index 0000000000..387bdce2fa
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/sbuffer.hpp
@@ -0,0 +1,149 @@
+//
+// MessagePack for C++ simple buffer implementation
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_SBUFFER_HPP
+#define MSGPACK_V1_SBUFFER_HPP
+
+#include "msgpack/v1/sbuffer_decl.hpp"
+
+#include <stdexcept>
+#include <cstring>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+class sbuffer {
+public:
+ sbuffer(size_t initsz = MSGPACK_SBUFFER_INIT_SIZE):m_size(0), m_alloc(initsz)
+ {
+ if(initsz == 0) {
+ m_data = MSGPACK_NULLPTR;
+ } else {
+ m_data = (char*)::malloc(initsz);
+ if(!m_data) {
+ throw std::bad_alloc();
+ }
+ }
+ }
+
+ ~sbuffer()
+ {
+ ::free(m_data);
+ }
+
+#if !defined(MSGPACK_USE_CPP03)
+ sbuffer(const sbuffer&) = delete;
+ sbuffer& operator=(const sbuffer&) = delete;
+
+ sbuffer(sbuffer&& other) :
+ m_size(other.m_size), m_data(other.m_data), m_alloc(other.m_alloc)
+ {
+ other.m_size = other.m_alloc = 0;
+ other.m_data = MSGPACK_NULLPTR;
+ }
+
+ sbuffer& operator=(sbuffer&& other)
+ {
+ ::free(m_data);
+
+ m_size = other.m_size;
+ m_alloc = other.m_alloc;
+ m_data = other.m_data;
+
+ other.m_size = other.m_alloc = 0;
+ other.m_data = MSGPACK_NULLPTR;
+
+ return *this;
+ }
+#endif // !defined(MSGPACK_USE_CPP03)
+
+ void write(const char* buf, size_t len)
+ {
+ if(m_alloc - m_size < len) {
+ expand_buffer(len);
+ }
+ std::memcpy(m_data + m_size, buf, len);
+ m_size += len;
+ }
+
+ char* data()
+ {
+ return m_data;
+ }
+
+ const char* data() const
+ {
+ return m_data;
+ }
+
+ size_t size() const
+ {
+ return m_size;
+ }
+
+ char* release()
+ {
+ char* tmp = m_data;
+ m_size = 0;
+ m_data = MSGPACK_NULLPTR;
+ m_alloc = 0;
+ return tmp;
+ }
+
+ void clear()
+ {
+ m_size = 0;
+ }
+
+private:
+ void expand_buffer(size_t len)
+ {
+ size_t nsize = (m_alloc > 0) ?
+ m_alloc * 2 : MSGPACK_SBUFFER_INIT_SIZE;
+
+ while(nsize < m_size + len) {
+ size_t tmp_nsize = nsize * 2;
+ if (tmp_nsize <= nsize) {
+ nsize = m_size + len;
+ break;
+ }
+ nsize = tmp_nsize;
+ }
+
+ void* tmp = ::realloc(m_data, nsize);
+ if(!tmp) {
+ throw std::bad_alloc();
+ }
+
+ m_data = static_cast<char*>(tmp);
+ m_alloc = nsize;
+ }
+
+#if defined(MSGPACK_USE_CPP03)
+private:
+ sbuffer(const sbuffer&);
+ sbuffer& operator=(const sbuffer&);
+#endif // defined(MSGPACK_USE_CPP03)
+
+private:
+ size_t m_size;
+ char* m_data;
+ size_t m_alloc;
+};
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_SBUFFER_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/sbuffer_decl.hpp b/third_party/msgpack/include/msgpack/v1/sbuffer_decl.hpp
new file mode 100644
index 0000000000..76e924449d
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/sbuffer_decl.hpp
@@ -0,0 +1,33 @@
+//
+// MessagePack for C++ simple buffer implementation
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_SBUFFER_DECL_HPP
+#define MSGPACK_V1_SBUFFER_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+
+#ifndef MSGPACK_SBUFFER_INIT_SIZE
+#define MSGPACK_SBUFFER_INIT_SIZE 8192
+#endif
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+class sbuffer;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_SBUFFER_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/unpack.hpp b/third_party/msgpack/include/msgpack/v1/unpack.hpp
new file mode 100644
index 0000000000..74836bd381
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/unpack.hpp
@@ -0,0 +1,1591 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_UNPACK_HPP
+#define MSGPACK_V1_UNPACK_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/unpack_decl.hpp"
+#include "msgpack/object.hpp"
+#include "msgpack/zone.hpp"
+#include "msgpack/unpack_exception.hpp"
+#include "msgpack/unpack_define.h"
+#include "msgpack/cpp_config.hpp"
+#include "msgpack/sysdep.h"
+
+#include <memory>
+
+#if !defined(MSGPACK_USE_CPP03)
+#include <atomic>
+#endif
+
+
+#if defined(_MSC_VER)
+// avoiding confliction std::max, std::min, and macro in windows.h
+#ifndef NOMINMAX
+#define NOMINMAX
+#endif
+#endif // defined(_MSC_VER)
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace detail {
+
+class unpack_user {
+public:
+ unpack_user(unpack_reference_func f = MSGPACK_NULLPTR,
+ void* user_data = MSGPACK_NULLPTR,
+ unpack_limit const& limit = unpack_limit())
+ :m_func(f), m_user_data(user_data), m_limit(limit) {}
+ msgpack::zone const& zone() const { return *m_zone; }
+ msgpack::zone& zone() { return *m_zone; }
+ void set_zone(msgpack::zone& zone) { m_zone = &zone; }
+ bool referenced() const { return m_referenced; }
+ void set_referenced(bool referenced) { m_referenced = referenced; }
+ unpack_reference_func reference_func() const { return m_func; }
+ void* user_data() const { return m_user_data; }
+ unpack_limit const& limit() const { return m_limit; }
+ unpack_limit& limit() { return m_limit; }
+
+private:
+ msgpack::zone* m_zone;
+ bool m_referenced;
+ unpack_reference_func m_func;
+ void* m_user_data;
+ unpack_limit m_limit;
+};
+
+inline void unpack_uint8(uint8_t d, msgpack::object& o)
+{ o.type = msgpack::type::POSITIVE_INTEGER; o.via.u64 = d; }
+
+inline void unpack_uint16(uint16_t d, msgpack::object& o)
+{ o.type = msgpack::type::POSITIVE_INTEGER; o.via.u64 = d; }
+
+inline void unpack_uint32(uint32_t d, msgpack::object& o)
+{ o.type = msgpack::type::POSITIVE_INTEGER; o.via.u64 = d; }
+
+inline void unpack_uint64(uint64_t d, msgpack::object& o)
+{ o.type = msgpack::type::POSITIVE_INTEGER; o.via.u64 = d; }
+
+inline void unpack_int8(int8_t d, msgpack::object& o)
+{ if(d >= 0) { o.type = msgpack::type::POSITIVE_INTEGER; o.via.u64 = d; }
+ else { o.type = msgpack::type::NEGATIVE_INTEGER; o.via.i64 = d; } }
+
+inline void unpack_int16(int16_t d, msgpack::object& o)
+{ if(d >= 0) { o.type = msgpack::type::POSITIVE_INTEGER; o.via.u64 = d; }
+ else { o.type = msgpack::type::NEGATIVE_INTEGER; o.via.i64 = d; } }
+
+inline void unpack_int32(int32_t d, msgpack::object& o)
+{ if(d >= 0) { o.type = msgpack::type::POSITIVE_INTEGER; o.via.u64 = d; }
+ else { o.type = msgpack::type::NEGATIVE_INTEGER; o.via.i64 = d; } }
+
+inline void unpack_int64(int64_t d, msgpack::object& o)
+{ if(d >= 0) { o.type = msgpack::type::POSITIVE_INTEGER; o.via.u64 = d; }
+ else { o.type = msgpack::type::NEGATIVE_INTEGER; o.via.i64 = d; } }
+
+inline void unpack_float(float d, msgpack::object& o)
+{ o.type = msgpack::type::FLOAT32; o.via.f64 = d; }
+
+inline void unpack_double(double d, msgpack::object& o)
+{ o.type = msgpack::type::FLOAT64; o.via.f64 = d; }
+
+inline void unpack_nil(msgpack::object& o)
+{ o.type = msgpack::type::NIL; }
+
+inline void unpack_true(msgpack::object& o)
+{ o.type = msgpack::type::BOOLEAN; o.via.boolean = true; }
+
+inline void unpack_false(msgpack::object& o)
+{ o.type = msgpack::type::BOOLEAN; o.via.boolean = false; }
+
+struct unpack_array {
+ void operator()(unpack_user& u, uint32_t n, msgpack::object& o) const {
+ if (n > u.limit().array()) throw msgpack::array_size_overflow("array size overflow");
+ o.type = msgpack::type::ARRAY;
+ o.via.array.size = 0;
+ size_t size = n*sizeof(msgpack::object);
+ if (size / sizeof(msgpack::object) != n) {
+ throw msgpack::array_size_overflow("array size overflow");
+ }
+ o.via.array.ptr = static_cast<msgpack::object*>(u.zone().allocate_align(size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ }
+};
+
+inline void unpack_array_item(msgpack::object& c, msgpack::object const& o)
+{
+#if defined(__GNUC__) && !defined(__clang__)
+ std::memcpy(&c.via.array.ptr[c.via.array.size++], &o, sizeof(msgpack::object));
+#else /* __GNUC__ && !__clang__ */
+ c.via.array.ptr[c.via.array.size++] = o;
+#endif /* __GNUC__ && !__clang__ */
+}
+
+struct unpack_map {
+ void operator()(unpack_user& u, uint32_t n, msgpack::object& o) const {
+ if (n > u.limit().map()) throw msgpack::map_size_overflow("map size overflow");
+ o.type = msgpack::type::MAP;
+ o.via.map.size = 0;
+ size_t size = n*sizeof(msgpack::object_kv);
+ if (size / sizeof(msgpack::object_kv) != n) {
+ throw msgpack::map_size_overflow("map size overflow");
+ }
+ o.via.map.ptr = static_cast<msgpack::object_kv*>(u.zone().allocate_align(size, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
+ }
+};
+
+inline void unpack_map_item(msgpack::object& c, msgpack::object const& k, msgpack::object const& v)
+{
+#if defined(__GNUC__) && !defined(__clang__)
+ std::memcpy(&c.via.map.ptr[c.via.map.size].key, &k, sizeof(msgpack::object));
+ std::memcpy(&c.via.map.ptr[c.via.map.size].val, &v, sizeof(msgpack::object));
+#else /* __GNUC__ && !__clang__ */
+ c.via.map.ptr[c.via.map.size].key = k;
+ c.via.map.ptr[c.via.map.size].val = v;
+#endif /* __GNUC__ && !__clang__ */
+ ++c.via.map.size;
+}
+
+inline void unpack_str(unpack_user& u, const char* p, uint32_t l, msgpack::object& o)
+{
+ o.type = msgpack::type::STR;
+ if (u.reference_func() && u.reference_func()(o.type, l, u.user_data())) {
+ o.via.str.ptr = p;
+ u.set_referenced(true);
+ }
+ else {
+ if (l > u.limit().str()) throw msgpack::str_size_overflow("str size overflow");
+ char* tmp = static_cast<char*>(u.zone().allocate_align(l, MSGPACK_ZONE_ALIGNOF(char)));
+ std::memcpy(tmp, p, l);
+ o.via.str.ptr = tmp;
+ }
+ o.via.str.size = l;
+}
+
+inline void unpack_bin(unpack_user& u, const char* p, uint32_t l, msgpack::object& o)
+{
+ o.type = msgpack::type::BIN;
+ if (u.reference_func() && u.reference_func()(o.type, l, u.user_data())) {
+ o.via.bin.ptr = p;
+ u.set_referenced(true);
+ }
+ else {
+ if (l > u.limit().bin()) throw msgpack::bin_size_overflow("bin size overflow");
+ char* tmp = static_cast<char*>(u.zone().allocate_align(l, MSGPACK_ZONE_ALIGNOF(char)));
+ std::memcpy(tmp, p, l);
+ o.via.bin.ptr = tmp;
+ }
+ o.via.bin.size = l;
+}
+
+inline void unpack_ext(unpack_user& u, const char* p, std::size_t l, msgpack::object& o)
+{
+ o.type = msgpack::type::EXT;
+ if (u.reference_func() && u.reference_func()(o.type, l, u.user_data())) {
+ o.via.ext.ptr = p;
+ u.set_referenced(true);
+ }
+ else {
+ if (l > u.limit().ext()) throw msgpack::ext_size_overflow("ext size overflow");
+ char* tmp = static_cast<char*>(u.zone().allocate_align(l, MSGPACK_ZONE_ALIGNOF(char)));
+ std::memcpy(tmp, p, l);
+ o.via.ext.ptr = tmp;
+ }
+ o.via.ext.size = static_cast<uint32_t>(l - 1);
+}
+
+
+class unpack_stack {
+public:
+ msgpack::object const& obj() const { return m_obj; }
+ msgpack::object& obj() { return m_obj; }
+ void set_obj(msgpack::object const& obj) { m_obj = obj; }
+ std::size_t count() const { return m_count; }
+ void set_count(std::size_t count) { m_count = count; }
+ std::size_t decr_count() { return --m_count; }
+ uint32_t container_type() const { return m_container_type; }
+ void set_container_type(uint32_t container_type) { m_container_type = container_type; }
+ msgpack::object const& map_key() const { return m_map_key; }
+ void set_map_key(msgpack::object const& map_key) { m_map_key = map_key; }
+private:
+ msgpack::object m_obj;
+ std::size_t m_count;
+ uint32_t m_container_type;
+ msgpack::object m_map_key;
+};
+
+inline void init_count(void* buffer)
+{
+#if defined(MSGPACK_USE_CPP03)
+ *reinterpret_cast<volatile _msgpack_atomic_counter_t*>(buffer) = 1;
+#else // defined(MSGPACK_USE_CPP03)
+ new (buffer) std::atomic<unsigned int>(1);
+#endif // defined(MSGPACK_USE_CPP03)
+}
+
+inline void decr_count(void* buffer)
+{
+#if defined(MSGPACK_USE_CPP03)
+ if(_msgpack_sync_decr_and_fetch(reinterpret_cast<volatile _msgpack_atomic_counter_t*>(buffer)) == 0) {
+ free(buffer);
+ }
+#else // defined(MSGPACK_USE_CPP03)
+ if (--*reinterpret_cast<std::atomic<unsigned int>*>(buffer) == 0) {
+ free(buffer);
+ }
+#endif // defined(MSGPACK_USE_CPP03)
+}
+
+inline void incr_count(void* buffer)
+{
+#if defined(MSGPACK_USE_CPP03)
+ _msgpack_sync_incr_and_fetch(reinterpret_cast<volatile _msgpack_atomic_counter_t*>(buffer));
+#else // defined(MSGPACK_USE_CPP03)
+ ++*reinterpret_cast<std::atomic<unsigned int>*>(buffer);
+#endif // defined(MSGPACK_USE_CPP03)
+}
+
+#if defined(MSGPACK_USE_CPP03)
+inline _msgpack_atomic_counter_t get_count(void* buffer)
+{
+ return *reinterpret_cast<volatile _msgpack_atomic_counter_t*>(buffer);
+}
+#else // defined(MSGPACK_USE_CPP03)
+inline std::atomic<unsigned int> const& get_count(void* buffer)
+{
+ return *reinterpret_cast<std::atomic<unsigned int>*>(buffer);
+}
+#endif // defined(MSGPACK_USE_CPP03)
+
+template <typename T>
+struct value {
+ typedef T type;
+};
+template <>
+struct value<fix_tag> {
+ typedef uint32_t type;
+};
+
+template <typename T>
+inline typename msgpack::enable_if<sizeof(T) == sizeof(fix_tag)>::type load(uint32_t& dst, const char* n) {
+ dst = static_cast<uint32_t>(*reinterpret_cast<const uint8_t*>(n)) & 0x0f;
+}
+
+template <typename T>
+inline typename msgpack::enable_if<sizeof(T) == 1>::type load(T& dst, const char* n) {
+ dst = static_cast<T>(*reinterpret_cast<const uint8_t*>(n));
+}
+
+template <typename T>
+inline typename msgpack::enable_if<sizeof(T) == 2>::type load(T& dst, const char* n) {
+ _msgpack_load16(T, n, &dst);
+}
+
+template <typename T>
+inline typename msgpack::enable_if<sizeof(T) == 4>::type load(T& dst, const char* n) {
+ _msgpack_load32(T, n, &dst);
+}
+
+template <typename T>
+inline typename msgpack::enable_if<sizeof(T) == 8>::type load(T& dst, const char* n) {
+ _msgpack_load64(T, n, &dst);
+}
+
+class context {
+public:
+ context(unpack_reference_func f, void* user_data, unpack_limit const& limit)
+ :m_trail(0), m_user(f, user_data, limit), m_cs(MSGPACK_CS_HEADER)
+ {
+ m_stack.reserve(MSGPACK_EMBED_STACK_SIZE);
+ m_stack.push_back(unpack_stack());
+ }
+
+ void init()
+ {
+ m_cs = MSGPACK_CS_HEADER;
+ m_trail = 0;
+ m_stack.resize(1);
+ m_stack[0].set_obj(msgpack::object());
+ }
+
+ msgpack::object const& data() const
+ {
+ return m_stack[0].obj();
+ }
+
+ unpack_user& user()
+ {
+ return m_user;
+ }
+
+ unpack_user const& user() const
+ {
+ return m_user;
+ }
+
+ int execute(const char* data, std::size_t len, std::size_t& off);
+
+private:
+ template <typename T>
+ static uint32_t next_cs(T p)
+ {
+ return static_cast<uint32_t>(*p) & 0x1f;
+ }
+
+ template <typename T, typename Func>
+ int push_aggregate(
+ Func const& f,
+ uint32_t container_type,
+ msgpack::object& obj,
+ const char* load_pos,
+ std::size_t& off) {
+ typename value<T>::type tmp;
+ load<T>(tmp, load_pos);
+ f(m_user, tmp, m_stack.back().obj());
+ if(tmp == 0) {
+ obj = m_stack.back().obj();
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ }
+ else {
+ m_stack.back().set_container_type(container_type);
+ m_stack.back().set_count(tmp);
+ if (m_stack.size() <= m_user.limit().depth()) {
+ m_stack.push_back(unpack_stack());
+ }
+ else {
+ throw msgpack::depth_size_overflow("depth size overflow");
+ }
+ m_cs = MSGPACK_CS_HEADER;
+ ++m_current;
+ }
+ return 0;
+ }
+
+ int push_item(msgpack::object& obj) {
+ bool finish = false;
+ while (!finish) {
+ if(m_stack.size() == 1) {
+ return 1;
+ }
+ unpack_stack& sp = *(m_stack.end() - 2);
+ switch(sp.container_type()) {
+ case MSGPACK_CT_ARRAY_ITEM:
+ unpack_array_item(sp.obj(), obj);
+ if(sp.decr_count() == 0) {
+ obj = sp.obj();
+ m_stack.pop_back();
+ }
+ else {
+ finish = true;
+ }
+ break;
+ case MSGPACK_CT_MAP_KEY:
+ sp.set_map_key(obj);
+ sp.set_container_type(MSGPACK_CT_MAP_VALUE);
+ finish = true;
+ break;
+ case MSGPACK_CT_MAP_VALUE:
+ unpack_map_item(sp.obj(), sp.map_key(), obj);
+ if(sp.decr_count() == 0) {
+ obj = sp.obj();
+ m_stack.pop_back();
+ }
+ else {
+ sp.set_container_type(MSGPACK_CT_MAP_KEY);
+ finish = true;
+ }
+ break;
+ default:
+ return -1;
+ }
+ }
+ return 0;
+ }
+
+ int push_proc(msgpack::object& obj, std::size_t& off) {
+ int ret = push_item(obj);
+ if (ret > 0) {
+ m_stack[0].set_obj(obj);
+ ++m_current;
+ /*printf("-- finish --\n"); */
+ off = m_current - m_start;
+ }
+ else if (ret < 0) {
+ off = m_current - m_start;
+ }
+ else {
+ m_cs = MSGPACK_CS_HEADER;
+ ++m_current;
+ }
+ return ret;
+ }
+
+ template <std::size_t N>
+ static void check_ext_size(std::size_t /*size*/) {
+ }
+
+private:
+ char const* m_start;
+ char const* m_current;
+
+ std::size_t m_trail;
+ unpack_user m_user;
+ uint32_t m_cs;
+ std::vector<unpack_stack> m_stack;
+};
+
+template <>
+inline void context::check_ext_size<4>(std::size_t size) {
+ if (size == 0xffffffff) throw msgpack::ext_size_overflow("ext size overflow");
+}
+
+inline int context::execute(const char* data, std::size_t len, std::size_t& off)
+{
+ assert(len >= off);
+
+ m_start = data;
+ m_current = data + off;
+ const char* const pe = data + len;
+ const char* n = MSGPACK_NULLPTR;
+
+ msgpack::object obj;
+
+ if(m_current == pe) {
+ off = m_current - m_start;
+ return 0;
+ }
+ bool fixed_trail_again = false;
+ do {
+ if (m_cs == MSGPACK_CS_HEADER) {
+ fixed_trail_again = false;
+ int selector = *reinterpret_cast<const unsigned char*>(m_current);
+ if (0x00 <= selector && selector <= 0x7f) { // Positive Fixnum
+ unpack_uint8(*reinterpret_cast<const uint8_t*>(m_current), obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ } else if(0xe0 <= selector && selector <= 0xff) { // Negative Fixnum
+ unpack_int8(*reinterpret_cast<const int8_t*>(m_current), obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ } else if (0xc4 <= selector && selector <= 0xdf) {
+ const uint32_t trail[] = {
+ 1, // bin 8 0xc4
+ 2, // bin 16 0xc5
+ 4, // bin 32 0xc6
+ 1, // ext 8 0xc7
+ 2, // ext 16 0xc8
+ 4, // ext 32 0xc9
+ 4, // float 32 0xca
+ 8, // float 64 0xcb
+ 1, // uint 8 0xcc
+ 2, // uint 16 0xcd
+ 4, // uint 32 0xce
+ 8, // uint 64 0xcf
+ 1, // int 8 0xd0
+ 2, // int 16 0xd1
+ 4, // int 32 0xd2
+ 8, // int 64 0xd3
+ 2, // fixext 1 0xd4
+ 3, // fixext 2 0xd5
+ 5, // fixext 4 0xd6
+ 9, // fixext 8 0xd7
+ 17,// fixext 16 0xd8
+ 1, // str 8 0xd9
+ 2, // str 16 0xda
+ 4, // str 32 0xdb
+ 2, // array 16 0xdc
+ 4, // array 32 0xdd
+ 2, // map 16 0xde
+ 4, // map 32 0xdf
+ };
+ m_trail = trail[selector - 0xc4];
+ m_cs = next_cs(m_current);
+ fixed_trail_again = true;
+ } else if(0xa0 <= selector && selector <= 0xbf) { // FixStr
+ m_trail = static_cast<uint32_t>(*m_current) & 0x1f;
+ if(m_trail == 0) {
+ unpack_str(m_user, n, static_cast<uint32_t>(m_trail), obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ }
+ else {
+ m_cs = MSGPACK_ACS_STR_VALUE;
+ fixed_trail_again = true;
+ }
+
+ } else if(0x90 <= selector && selector <= 0x9f) { // FixArray
+ int ret = push_aggregate<fix_tag>(
+ unpack_array(), MSGPACK_CT_ARRAY_ITEM, obj, m_current, off);
+ if (ret != 0) return ret;
+ } else if(0x80 <= selector && selector <= 0x8f) { // FixMap
+ int ret = push_aggregate<fix_tag>(
+ unpack_map(), MSGPACK_CT_MAP_KEY, obj, m_current, off);
+ if (ret != 0) return ret;
+ } else if(selector == 0xc2) { // false
+ unpack_false(obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ } else if(selector == 0xc3) { // true
+ unpack_true(obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ } else if(selector == 0xc0) { // nil
+ unpack_nil(obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ } else {
+ off = m_current - m_start;
+ return -1;
+ }
+ // end MSGPACK_CS_HEADER
+ }
+ if (m_cs != MSGPACK_CS_HEADER || fixed_trail_again) {
+ if (fixed_trail_again) {
+ ++m_current;
+ fixed_trail_again = false;
+ }
+ if(static_cast<std::size_t>(pe - m_current) < m_trail) {
+ off = m_current - m_start;
+ return 0;
+ }
+ n = m_current;
+ m_current += m_trail - 1;
+ switch(m_cs) {
+ //case MSGPACK_CS_
+ //case MSGPACK_CS_
+ case MSGPACK_CS_FLOAT: {
+ union { uint32_t i; float f; } mem;
+ load<uint32_t>(mem.i, n);
+ unpack_float(mem.f, obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ } break;
+ case MSGPACK_CS_DOUBLE: {
+ union { uint64_t i; double f; } mem;
+ load<uint64_t>(mem.i, n);
+#if defined(TARGET_OS_IPHONE)
+ // ok
+#elif defined(__arm__) && !(__ARM_EABI__) // arm-oabi
+ // https://github.com/msgpack/msgpack-perl/pull/1
+ mem.i = (mem.i & 0xFFFFFFFFUL) << 32UL | (mem.i >> 32UL);
+#endif
+ unpack_double(mem.f, obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ } break;
+ case MSGPACK_CS_UINT_8: {
+ uint8_t tmp;
+ load<uint8_t>(tmp, n);
+ unpack_uint8(tmp, obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ } break;
+ case MSGPACK_CS_UINT_16: {
+ uint16_t tmp;
+ load<uint16_t>(tmp, n);
+ unpack_uint16(tmp, obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ } break;
+ case MSGPACK_CS_UINT_32: {
+ uint32_t tmp;
+ load<uint32_t>(tmp, n);
+ unpack_uint32(tmp, obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ } break;
+ case MSGPACK_CS_UINT_64: {
+ uint64_t tmp;
+ load<uint64_t>(tmp, n);
+ unpack_uint64(tmp, obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ } break;
+ case MSGPACK_CS_INT_8: {
+ int8_t tmp;
+ load<int8_t>(tmp, n);
+ unpack_int8(tmp, obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ } break;
+ case MSGPACK_CS_INT_16: {
+ int16_t tmp;
+ load<int16_t>(tmp, n);
+ unpack_int16(tmp, obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ } break;
+ case MSGPACK_CS_INT_32: {
+ int32_t tmp;
+ load<int32_t>(tmp, n);
+ unpack_int32(tmp, obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ } break;
+ case MSGPACK_CS_INT_64: {
+ int64_t tmp;
+ load<int64_t>(tmp, n);
+ unpack_int64(tmp, obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ } break;
+ case MSGPACK_CS_FIXEXT_1: {
+ unpack_ext(m_user, n, 1+1, obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ } break;
+ case MSGPACK_CS_FIXEXT_2: {
+ unpack_ext(m_user, n, 2+1, obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ } break;
+ case MSGPACK_CS_FIXEXT_4: {
+ unpack_ext(m_user, n, 4+1, obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ } break;
+ case MSGPACK_CS_FIXEXT_8: {
+ unpack_ext(m_user, n, 8+1, obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ } break;
+ case MSGPACK_CS_FIXEXT_16: {
+ unpack_ext(m_user, n, 16+1, obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ } break;
+ case MSGPACK_CS_STR_8: {
+ uint8_t tmp;
+ load<uint8_t>(tmp, n);
+ m_trail = tmp;
+ if(m_trail == 0) {
+ unpack_str(m_user, n, static_cast<uint32_t>(m_trail), obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ }
+ else {
+ m_cs = MSGPACK_ACS_STR_VALUE;
+ fixed_trail_again = true;
+ }
+ } break;
+ case MSGPACK_CS_BIN_8: {
+ uint8_t tmp;
+ load<uint8_t>(tmp, n);
+ m_trail = tmp;
+ if(m_trail == 0) {
+ unpack_bin(m_user, n, static_cast<uint32_t>(m_trail), obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ }
+ else {
+ m_cs = MSGPACK_ACS_BIN_VALUE;
+ fixed_trail_again = true;
+ }
+ } break;
+ case MSGPACK_CS_EXT_8: {
+ uint8_t tmp;
+ load<uint8_t>(tmp, n);
+ m_trail = tmp + 1;
+ if(m_trail == 0) {
+ unpack_ext(m_user, n, m_trail, obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ }
+ else {
+ m_cs = MSGPACK_ACS_EXT_VALUE;
+ fixed_trail_again = true;
+ }
+ } break;
+ case MSGPACK_CS_STR_16: {
+ uint16_t tmp;
+ load<uint16_t>(tmp, n);
+ m_trail = tmp;
+ if(m_trail == 0) {
+ unpack_str(m_user, n, static_cast<uint32_t>(m_trail), obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ }
+ else {
+ m_cs = MSGPACK_ACS_STR_VALUE;
+ fixed_trail_again = true;
+ }
+ } break;
+ case MSGPACK_CS_BIN_16: {
+ uint16_t tmp;
+ load<uint16_t>(tmp, n);
+ m_trail = tmp;
+ if(m_trail == 0) {
+ unpack_bin(m_user, n, static_cast<uint32_t>(m_trail), obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ }
+ else {
+ m_cs = MSGPACK_ACS_BIN_VALUE;
+ fixed_trail_again = true;
+ }
+ } break;
+ case MSGPACK_CS_EXT_16: {
+ uint16_t tmp;
+ load<uint16_t>(tmp, n);
+ m_trail = tmp + 1;
+ if(m_trail == 0) {
+ unpack_ext(m_user, n, m_trail, obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ }
+ else {
+ m_cs = MSGPACK_ACS_EXT_VALUE;
+ fixed_trail_again = true;
+ }
+ } break;
+ case MSGPACK_CS_STR_32: {
+ uint32_t tmp;
+ load<uint32_t>(tmp, n);
+ m_trail = tmp;
+ if(m_trail == 0) {
+ unpack_str(m_user, n, static_cast<uint32_t>(m_trail), obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ }
+ else {
+ m_cs = MSGPACK_ACS_STR_VALUE;
+ fixed_trail_again = true;
+ }
+ } break;
+ case MSGPACK_CS_BIN_32: {
+ uint32_t tmp;
+ load<uint32_t>(tmp, n);
+ m_trail = tmp;
+ if(m_trail == 0) {
+ unpack_bin(m_user, n, static_cast<uint32_t>(m_trail), obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ }
+ else {
+ m_cs = MSGPACK_ACS_BIN_VALUE;
+ fixed_trail_again = true;
+ }
+ } break;
+ case MSGPACK_CS_EXT_32: {
+ uint32_t tmp;
+ load<uint32_t>(tmp, n);
+ check_ext_size<sizeof(std::size_t)>(tmp);
+ m_trail = tmp;
+ ++m_trail;
+ if(m_trail == 0) {
+ unpack_ext(m_user, n, m_trail, obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ }
+ else {
+ m_cs = MSGPACK_ACS_EXT_VALUE;
+ fixed_trail_again = true;
+ }
+ } break;
+ case MSGPACK_ACS_STR_VALUE: {
+ unpack_str(m_user, n, static_cast<uint32_t>(m_trail), obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ } break;
+ case MSGPACK_ACS_BIN_VALUE: {
+ unpack_bin(m_user, n, static_cast<uint32_t>(m_trail), obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ } break;
+ case MSGPACK_ACS_EXT_VALUE: {
+ unpack_ext(m_user, n, m_trail, obj);
+ int ret = push_proc(obj, off);
+ if (ret != 0) return ret;
+ } break;
+ case MSGPACK_CS_ARRAY_16: {
+ int ret = push_aggregate<uint16_t>(
+ unpack_array(), MSGPACK_CT_ARRAY_ITEM, obj, n, off);
+ if (ret != 0) return ret;
+ } break;
+ case MSGPACK_CS_ARRAY_32: {
+ /* FIXME security guard */
+ int ret = push_aggregate<uint32_t>(
+ unpack_array(), MSGPACK_CT_ARRAY_ITEM, obj, n, off);
+ if (ret != 0) return ret;
+ } break;
+ case MSGPACK_CS_MAP_16: {
+ int ret = push_aggregate<uint16_t>(
+ unpack_map(), MSGPACK_CT_MAP_KEY, obj, n, off);
+ if (ret != 0) return ret;
+ } break;
+ case MSGPACK_CS_MAP_32: {
+ /* FIXME security guard */
+ int ret = push_aggregate<uint32_t>(
+ unpack_map(), MSGPACK_CT_MAP_KEY, obj, n, off);
+ if (ret != 0) return ret;
+ } break;
+ default:
+ off = m_current - m_start;
+ return -1;
+ }
+ }
+ } while(m_current != pe);
+
+ off = m_current - m_start;
+ return 0;
+}
+
+} // detail
+
+
+/// Unpacking class for a stream deserialization.
+class unpacker {
+public:
+ /// Constructor
+ /**
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param initial_buffer_size The memory size to allocate when unpacker is constructed.
+ * @param limit The size limit information of msgpack::object.
+ *
+ */
+ unpacker(unpack_reference_func f = &unpacker::default_reference_func,
+ void* user_data = MSGPACK_NULLPTR,
+ std::size_t initial_buffer_size = MSGPACK_UNPACKER_INIT_BUFFER_SIZE,
+ unpack_limit const& limit = unpack_limit());
+
+#if !defined(MSGPACK_USE_CPP03)
+ unpacker(unpacker&& other);
+ unpacker& operator=(unpacker&& other);
+#endif // !defined(MSGPACK_USE_CPP03)
+
+ ~unpacker();
+
+public:
+ /// Reserve a buffer memory.
+ /**
+ * @param size The size of allocating memory.
+ *
+ * After returning this function, buffer_capacity() returns at least 'size'.
+ * See:
+ * https://github.com/msgpack/msgpack-c/wiki/v1_1_cpp_unpacker#msgpack-controls-a-buffer
+ */
+ void reserve_buffer(std::size_t size = MSGPACK_UNPACKER_RESERVE_SIZE);
+
+ /// Get buffer pointer.
+ /**
+ * You need to care about the memory is enable between buffer() and buffer() + buffer_capacity()
+ * See:
+ * https://github.com/msgpack/msgpack-c/wiki/v1_1_cpp_unpacker#msgpack-controls-a-buffer
+ */
+ char* buffer();
+
+ /// Get buffer capacity.
+ /**
+ * @return The memory size that you can write.
+ *
+ * See:
+ * https://github.com/msgpack/msgpack-c/wiki/v1_1_cpp_unpacker#msgpack-controls-a-buffer
+ */
+ std::size_t buffer_capacity() const;
+
+ /// Notify a buffer consumed information to msgpack::unpacker.
+ /**
+ * @param size The size of memory that you consumed.
+ *
+ * After copying the data to the memory that is pointed by buffer(), you need to call the
+ * function to notify how many bytes are consumed. Then you can call next() functions.
+ *
+ * See:
+ * https://github.com/msgpack/msgpack-c/wiki/v1_1_cpp_unpacker#msgpack-controls-a-buffer
+ */
+ void buffer_consumed(std::size_t size);
+
+ /// Unpack one msgpack::object. [obsolete]
+ /**
+ *
+ * @param result The object that contains unpacked data.
+ *
+ * @return If one msgpack::object is unpacked, then return true, if msgpack::object is incomplete
+ * and additional data is required, then return false. If data format is invalid, throw
+ * msgpack::parse_error.
+ *
+ * See:
+ * https://github.com/msgpack/msgpack-c/wiki/v1_1_cpp_unpacker#msgpack-controls-a-buffer
+ * This function is obsolete. Use the reference inteface version of next() function instead of
+ * the pointer interface version.
+ */
+ MSGPACK_DEPRECATED("please use reference version instead")
+ bool next(msgpack::object_handle* result);
+
+ /// Unpack one msgpack::object.
+ /**
+ *
+ * @param result The object that contains unpacked data.
+ * @param referenced If the unpacked object contains reference of the buffer,
+ * then set as true, otherwise false.
+ *
+ * @return If one msgpack::object is unpacked, then return true, if msgpack::object is incomplete
+ * and additional data is required, then return false. If data format is invalid, throw
+ * msgpack::parse_error.
+ *
+ * See:
+ * https://github.com/msgpack/msgpack-c/wiki/v1_1_cpp_unpacker#msgpack-controls-a-buffer
+ */
+ bool next(msgpack::object_handle& result, bool& referenced);
+
+ /// Unpack one msgpack::object.
+ /**
+ *
+ * @param result The object that contains unpacked data.
+ *
+ * @return If one msgpack::object is unpacked, then return true, if msgpack::object is incomplete
+ * and additional data is required, then return false. If data format is invalid, throw
+ * msgpack::parse_error.
+ *
+ * See:
+ * https://github.com/msgpack/msgpack-c/wiki/v1_1_cpp_unpacker#msgpack-controls-a-buffer
+ */
+ bool next(msgpack::object_handle& result);
+
+ /// Get message size.
+ /**
+ * @return Returns parsed_size() + nonparsed_size()
+ */
+ std::size_t message_size() const;
+
+ /*! for backward compatibility */
+ bool execute();
+
+ /*! for backward compatibility */
+ msgpack::object const& data();
+
+ /*! for backward compatibility */
+ msgpack::zone* release_zone();
+
+ /*! for backward compatibility */
+ void reset_zone();
+
+ /*! for backward compatibility */
+ void reset();
+
+public:
+ /// Get parsed message size.
+ /**
+ * @return Parsed message size.
+ *
+ * This function is usable when non-MessagePack message follows after
+ * MessagePack message.
+ */
+ std::size_t parsed_size() const;
+
+ /// Get the address that is not parsed in the buffer.
+ /**
+ * @return Address of the buffer that is not parsed
+ *
+ * This function is usable when non-MessagePack message follows after
+ * MessagePack message.
+ */
+ char* nonparsed_buffer();
+
+ /// Get the size of the buffer that is not parsed.
+ /**
+ * @return Size of the buffer that is not parsed
+ *
+ * This function is usable when non-MessagePack message follows after
+ * MessagePack message.
+ */
+ std::size_t nonparsed_size() const;
+
+ /// Skip the specified size of non-parsed buffer.
+ /**
+ * @param size to skip
+ *
+ * Note that the `size' argument must be smaller than nonparsed_size().
+ * This function is usable when non-MessagePack message follows after
+ * MessagePack message.
+ */
+ void skip_nonparsed_buffer(std::size_t size);
+
+ /// Remove nonparsed buffer and reset the current position as a new start point.
+ /**
+ * This function is usable when non-MessagePack message follows after
+ * MessagePack message.
+ */
+ void remove_nonparsed_buffer();
+
+private:
+ void expand_buffer(std::size_t size);
+ int execute_imp();
+ bool flush_zone();
+ static bool default_reference_func(msgpack::type::object_type type, std::size_t len, void*);
+
+private:
+ char* m_buffer;
+ std::size_t m_used;
+ std::size_t m_free;
+ std::size_t m_off;
+ std::size_t m_parsed;
+ msgpack::unique_ptr<msgpack::zone> m_z;
+ std::size_t m_initial_buffer_size;
+ detail::context m_ctx;
+
+#if defined(MSGPACK_USE_CPP03)
+private:
+ unpacker(const unpacker&);
+ unpacker& operator=(const unpacker&);
+#else // defined(MSGPACK_USE_CPP03)
+ unpacker(const unpacker&) = delete;
+ unpacker& operator=(const unpacker&) = delete;
+#endif // defined(MSGPACK_USE_CPP03)
+};
+
+inline unpacker::unpacker(unpack_reference_func f,
+ void* user_data,
+ std::size_t initial_buffer_size,
+ unpack_limit const& limit)
+ :m_z(new msgpack::zone), m_ctx(f, user_data, limit)
+{
+ if(initial_buffer_size < COUNTER_SIZE) {
+ initial_buffer_size = COUNTER_SIZE;
+ }
+
+ char* buffer = static_cast<char*>(::malloc(initial_buffer_size));
+ if(!buffer) {
+ throw std::bad_alloc();
+ }
+
+ m_buffer = buffer;
+ m_used = COUNTER_SIZE;
+ m_free = initial_buffer_size - m_used;
+ m_off = COUNTER_SIZE;
+ m_parsed = 0;
+ m_initial_buffer_size = initial_buffer_size;
+
+ detail::init_count(m_buffer);
+
+ m_ctx.init();
+ m_ctx.user().set_zone(*m_z);
+ m_ctx.user().set_referenced(false);
+}
+
+#if !defined(MSGPACK_USE_CPP03)
+// Move constructor and move assignment operator
+
+inline unpacker::unpacker(unpacker&& other)
+ :m_buffer(other.m_buffer),
+ m_used(other.m_used),
+ m_free(other.m_free),
+ m_off(other.m_off),
+ m_parsed(other.m_parsed),
+ m_z(std::move(other.m_z)),
+ m_initial_buffer_size(other.m_initial_buffer_size),
+ m_ctx(other.m_ctx) {
+ other.m_buffer = MSGPACK_NULLPTR;
+}
+
+inline unpacker& unpacker::operator=(unpacker&& other) {
+ this->~unpacker();
+ new (this) unpacker(std::move(other));
+ return *this;
+}
+
+#endif // !defined(MSGPACK_USE_CPP03)
+
+
+inline unpacker::~unpacker()
+{
+ // These checks are required for move operations.
+ if (m_buffer) detail::decr_count(m_buffer);
+}
+
+
+inline void unpacker::reserve_buffer(std::size_t size)
+{
+ if(m_free >= size) return;
+ expand_buffer(size);
+}
+
+inline void unpacker::expand_buffer(std::size_t size)
+{
+ if(m_used == m_off && detail::get_count(m_buffer) == 1
+ && !m_ctx.user().referenced()) {
+ // rewind buffer
+ m_free += m_used - COUNTER_SIZE;
+ m_used = COUNTER_SIZE;
+ m_off = COUNTER_SIZE;
+
+ if(m_free >= size) return;
+ }
+
+ if(m_off == COUNTER_SIZE) {
+ std::size_t next_size = (m_used + m_free) * 2; // include COUNTER_SIZE
+ while(next_size < size + m_used) {
+ std::size_t tmp_next_size = next_size * 2;
+ if (tmp_next_size <= next_size) {
+ next_size = size + m_used;
+ break;
+ }
+ next_size = tmp_next_size;
+ }
+
+ char* tmp = static_cast<char*>(::realloc(m_buffer, next_size));
+ if(!tmp) {
+ throw std::bad_alloc();
+ }
+
+ m_buffer = tmp;
+ m_free = next_size - m_used;
+
+ } else {
+ std::size_t next_size = m_initial_buffer_size; // include COUNTER_SIZE
+ std::size_t not_parsed = m_used - m_off;
+ while(next_size < size + not_parsed + COUNTER_SIZE) {
+ std::size_t tmp_next_size = next_size * 2;
+ if (tmp_next_size <= next_size) {
+ next_size = size + not_parsed + COUNTER_SIZE;
+ break;
+ }
+ next_size = tmp_next_size;
+ }
+
+ char* tmp = static_cast<char*>(::malloc(next_size));
+ if(!tmp) {
+ throw std::bad_alloc();
+ }
+
+ detail::init_count(tmp);
+
+ std::memcpy(tmp+COUNTER_SIZE, m_buffer + m_off, not_parsed);
+
+ if(m_ctx.user().referenced()) {
+ try {
+ m_z->push_finalizer(&detail::decr_count, m_buffer);
+ }
+ catch (...) {
+ ::free(tmp);
+ throw;
+ }
+ m_ctx.user().set_referenced(false);
+ } else {
+ detail::decr_count(m_buffer);
+ }
+
+ m_buffer = tmp;
+ m_used = not_parsed + COUNTER_SIZE;
+ m_free = next_size - m_used;
+ m_off = COUNTER_SIZE;
+ }
+}
+
+inline char* unpacker::buffer()
+{
+ return m_buffer + m_used;
+}
+
+inline std::size_t unpacker::buffer_capacity() const
+{
+ return m_free;
+}
+
+inline void unpacker::buffer_consumed(std::size_t size)
+{
+ m_used += size;
+ m_free -= size;
+}
+
+inline bool unpacker::next(msgpack::object_handle& result, bool& referenced)
+{
+ referenced = false;
+ int ret = execute_imp();
+ if(ret < 0) {
+ throw msgpack::parse_error("parse error");
+ }
+
+ if(ret == 0) {
+ result.zone().reset();
+ result.set(msgpack::object());
+ return false;
+
+ } else {
+ referenced = m_ctx.user().referenced();
+ result.zone().reset( release_zone() );
+ result.set(data());
+ reset();
+ return true;
+ }
+}
+
+inline bool unpacker::next(msgpack::object_handle& result)
+{
+ bool referenced;
+ return next(result, referenced);
+}
+
+inline bool unpacker::next(msgpack::object_handle* result)
+{
+ return next(*result);
+}
+
+
+inline bool unpacker::execute()
+{
+ int ret = execute_imp();
+ if(ret < 0) {
+ throw msgpack::parse_error("parse error");
+ } else if(ret == 0) {
+ return false;
+ } else {
+ return true;
+ }
+}
+
+inline int unpacker::execute_imp()
+{
+ std::size_t off = m_off;
+ int ret = m_ctx.execute(m_buffer, m_used, m_off);
+ if(m_off > off) {
+ m_parsed += m_off - off;
+ }
+ return ret;
+}
+
+inline msgpack::object const& unpacker::data()
+{
+ return m_ctx.data();
+}
+
+inline msgpack::zone* unpacker::release_zone()
+{
+ if(!flush_zone()) {
+ return MSGPACK_NULLPTR;
+ }
+
+ msgpack::zone* r = new msgpack::zone;
+ msgpack::zone* old = m_z.release();
+ m_z.reset(r);
+ m_ctx.user().set_zone(*m_z);
+
+ return old;
+}
+
+inline void unpacker::reset_zone()
+{
+ m_z->clear();
+}
+
+inline bool unpacker::flush_zone()
+{
+ if(m_ctx.user().referenced()) {
+ try {
+ m_z->push_finalizer(&detail::decr_count, m_buffer);
+ } catch (...) {
+ return false;
+ }
+ m_ctx.user().set_referenced(false);
+
+ detail::incr_count(m_buffer);
+ }
+
+ return true;
+}
+
+inline void unpacker::reset()
+{
+ m_ctx.init();
+ // don't reset referenced flag
+ m_parsed = 0;
+}
+
+inline std::size_t unpacker::message_size() const
+{
+ return m_parsed - m_off + m_used;
+}
+
+inline std::size_t unpacker::parsed_size() const
+{
+ return m_parsed;
+}
+
+inline char* unpacker::nonparsed_buffer()
+{
+ return m_buffer + m_off;
+}
+
+inline std::size_t unpacker::nonparsed_size() const
+{
+ return m_used - m_off;
+}
+
+inline void unpacker::skip_nonparsed_buffer(std::size_t size)
+{
+ m_off += size;
+}
+
+inline void unpacker::remove_nonparsed_buffer()
+{
+ m_used = m_off;
+}
+
+namespace detail {
+
+inline parse_return
+unpack_imp(const char* data, std::size_t len, std::size_t& off,
+ msgpack::zone& result_zone, msgpack::object& result, bool& referenced,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR,
+ unpack_limit const& limit = unpack_limit())
+{
+ std::size_t noff = off;
+
+ if(len <= noff) {
+ // FIXME
+ return PARSE_CONTINUE;
+ }
+
+ detail::context ctx(f, user_data, limit);
+ ctx.init();
+
+ ctx.user().set_zone(result_zone);
+ ctx.user().set_referenced(false);
+ referenced = false;
+
+ int e = ctx.execute(data, len, noff);
+ if(e < 0) {
+ return PARSE_PARSE_ERROR;
+ }
+
+ referenced = ctx.user().referenced();
+ off = noff;
+
+ if(e == 0) {
+ return PARSE_CONTINUE;
+ }
+
+ result = ctx.data();
+
+ if(noff < len) {
+ return PARSE_EXTRA_BYTES;
+ }
+
+ return PARSE_SUCCESS;
+}
+
+} // detail
+
+// reference version
+
+inline msgpack::object_handle unpack(
+ const char* data, std::size_t len, std::size_t& off, bool& referenced,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit
+)
+{
+ msgpack::object obj;
+ msgpack::unique_ptr<msgpack::zone> z(new msgpack::zone);
+ referenced = false;
+ std::size_t noff = off;
+ parse_return ret = detail::unpack_imp(
+ data, len, noff, *z, obj, referenced, f, user_data, limit);
+
+ switch(ret) {
+ case PARSE_SUCCESS:
+ off = noff;
+ return msgpack::object_handle(obj, msgpack::move(z));
+ case PARSE_EXTRA_BYTES:
+ off = noff;
+ return msgpack::object_handle(obj, msgpack::move(z));
+ case PARSE_CONTINUE:
+ throw msgpack::insufficient_bytes("insufficient bytes");
+ case PARSE_PARSE_ERROR:
+ default:
+ throw msgpack::parse_error("parse error");
+ }
+ return msgpack::object_handle();
+}
+
+inline msgpack::object_handle unpack(
+ const char* data, std::size_t len, std::size_t& off,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ bool referenced;
+ return unpack(data, len, off, referenced, f, user_data, limit);
+}
+
+inline msgpack::object_handle unpack(
+ const char* data, std::size_t len, bool& referenced,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ std::size_t off = 0;
+ return unpack(data, len, off, referenced, f, user_data, limit);
+}
+
+inline msgpack::object_handle unpack(
+ const char* data, std::size_t len,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ bool referenced;
+ std::size_t off = 0;
+ return unpack(data, len, off, referenced, f, user_data, limit);
+}
+
+inline void unpack(
+ msgpack::object_handle& result,
+ const char* data, std::size_t len, std::size_t& off, bool& referenced,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ msgpack::object obj;
+ msgpack::unique_ptr<msgpack::zone> z(new msgpack::zone);
+ referenced = false;
+ std::size_t noff = off;
+ parse_return ret = detail::unpack_imp(
+ data, len, noff, *z, obj, referenced, f, user_data, limit);
+
+ switch(ret) {
+ case PARSE_SUCCESS:
+ off = noff;
+ result.set(obj);
+ result.zone() = msgpack::move(z);
+ return;
+ case PARSE_EXTRA_BYTES:
+ off = noff;
+ result.set(obj);
+ result.zone() = msgpack::move(z);
+ return;
+ case PARSE_CONTINUE:
+ throw msgpack::insufficient_bytes("insufficient bytes");
+ case PARSE_PARSE_ERROR:
+ default:
+ throw msgpack::parse_error("parse error");
+ }
+}
+
+inline void unpack(
+ msgpack::object_handle& result,
+ const char* data, std::size_t len, std::size_t& off,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ bool referenced;
+ unpack(result, data, len, off, referenced, f, user_data, limit);
+}
+
+inline void unpack(
+ msgpack::object_handle& result,
+ const char* data, std::size_t len, bool& referenced,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ std::size_t off = 0;
+ unpack(result, data, len, off, referenced, f, user_data, limit);
+}
+
+inline void unpack(
+ msgpack::object_handle& result,
+ const char* data, std::size_t len,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ bool referenced;
+ std::size_t off = 0;
+ unpack(result, data, len, off, referenced, f, user_data, limit);
+}
+
+
+inline msgpack::object unpack(
+ msgpack::zone& z,
+ const char* data, std::size_t len, std::size_t& off, bool& referenced,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ msgpack::object obj;
+ std::size_t noff = off;
+ referenced = false;
+ parse_return ret = detail::unpack_imp(
+ data, len, noff, z, obj, referenced, f, user_data, limit);
+
+ switch(ret) {
+ case PARSE_SUCCESS:
+ off = noff;
+ return obj;
+ case PARSE_EXTRA_BYTES:
+ off = noff;
+ return obj;
+ case PARSE_CONTINUE:
+ throw msgpack::insufficient_bytes("insufficient bytes");
+ case PARSE_PARSE_ERROR:
+ default:
+ throw msgpack::parse_error("parse error");
+ }
+ return obj;
+}
+
+inline msgpack::object unpack(
+ msgpack::zone& z,
+ const char* data, std::size_t len, std::size_t& off,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ bool referenced;
+ return unpack(z, data, len, off, referenced, f, user_data, limit);
+}
+
+inline msgpack::object unpack(
+ msgpack::zone& z,
+ const char* data, std::size_t len, bool& referenced,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ std::size_t off = 0;
+ return unpack(z, data, len, off, referenced, f, user_data, limit);
+}
+
+inline msgpack::object unpack(
+ msgpack::zone& z,
+ const char* data, std::size_t len,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ bool referenced;
+ std::size_t off = 0;
+ return unpack(z, data, len, off, referenced, f, user_data, limit);
+}
+
+// obsolete
+// pointer version
+MSGPACK_DEPRECATED("please use reference version instead")
+inline void unpack(
+ msgpack::object_handle* result,
+ const char* data, std::size_t len, std::size_t* off, bool* referenced,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ if (off)
+ if (referenced) unpack(*result, data, len, *off, *referenced, f, user_data, limit);
+ else unpack(*result, data, len, *off, f, user_data, limit);
+ else
+ if (referenced) unpack(*result, data, len, *referenced, f, user_data, limit);
+ else unpack(*result, data, len, f, user_data, limit);
+}
+
+inline bool unpacker::default_reference_func(msgpack::type::object_type /*type*/, std::size_t /*len*/, void*)
+{
+ return true;
+}
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+
+#endif // MSGPACK_V1_UNPACK_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/unpack_decl.hpp b/third_party/msgpack/include/msgpack/v1/unpack_decl.hpp
new file mode 100644
index 0000000000..99896fa413
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/unpack_decl.hpp
@@ -0,0 +1,454 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_UNPACK_DECL_HPP
+#define MSGPACK_V1_UNPACK_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/unpack_define.h"
+#include "msgpack/object.hpp"
+#include "msgpack/zone.hpp"
+#include "msgpack/cpp_config.hpp"
+#include "msgpack/sysdep.h"
+#include "msgpack/parse_return.hpp"
+
+#include <memory>
+#include <stdexcept>
+
+#if !defined(MSGPACK_USE_CPP03)
+#include <atomic>
+#endif
+
+
+#if defined(_MSC_VER)
+// avoiding confliction std::max, std::min, and macro in windows.h
+#ifndef NOMINMAX
+#define NOMINMAX
+#endif
+#endif // defined(_MSC_VER)
+
+#ifdef _msgpack_atomic_counter_header
+#include _msgpack_atomic_counter_header
+#endif
+
+const size_t COUNTER_SIZE = sizeof(_msgpack_atomic_counter_t);
+
+#ifndef MSGPACK_UNPACKER_INIT_BUFFER_SIZE
+#define MSGPACK_UNPACKER_INIT_BUFFER_SIZE (64*1024)
+#endif
+
+#ifndef MSGPACK_UNPACKER_RESERVE_SIZE
+#define MSGPACK_UNPACKER_RESERVE_SIZE (32*1024)
+#endif
+
+
+// backward compatibility
+#ifndef MSGPACK_UNPACKER_DEFAULT_INITIAL_BUFFER_SIZE
+#define MSGPACK_UNPACKER_DEFAULT_INITIAL_BUFFER_SIZE MSGPACK_UNPACKER_INIT_BUFFER_SIZE
+#endif
+
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+/// The type of reference or copy judging function.
+/**
+ * @param type msgpack data type.
+ * @param size msgpack data size.
+ * @param user_data The user_data that is set by msgpack::unpack functions.
+ *
+ * @return If the data should be referenced, then return true, otherwise (should be copied) false.
+ *
+ * This function is called when unpacking STR, BIN, or EXT.
+ *
+ */
+typedef bool (*unpack_reference_func)(msgpack::type::object_type type, std::size_t size, void* user_data);
+
+struct unpack_error;
+struct parse_error;
+struct insufficient_bytes;
+struct size_overflow;
+struct array_size_overflow;
+struct map_size_overflow;
+struct str_size_overflow;
+struct bin_size_overflow;
+struct ext_size_overflow;
+struct depth_size_overflow;
+
+class unpack_limit {
+public:
+ unpack_limit(
+ std::size_t array = 0xffffffff,
+ std::size_t map = 0xffffffff,
+ std::size_t str = 0xffffffff,
+ std::size_t bin = 0xffffffff,
+ std::size_t ext = 0xffffffff,
+ std::size_t depth = 0xffffffff)
+ :array_(array),
+ map_(map),
+ str_(str),
+ bin_(bin),
+ ext_(ext),
+ depth_(depth) {}
+ std::size_t array() const { return array_; }
+ std::size_t map() const { return map_; }
+ std::size_t str() const { return str_; }
+ std::size_t bin() const { return bin_; }
+ std::size_t ext() const { return ext_; }
+ std::size_t depth() const { return depth_; }
+
+private:
+ std::size_t array_;
+ std::size_t map_;
+ std::size_t str_;
+ std::size_t bin_;
+ std::size_t ext_;
+ std::size_t depth_;
+};
+
+namespace detail {
+
+class unpack_user;
+
+void unpack_uint8(uint8_t d, msgpack::object& o);
+
+void unpack_uint16(uint16_t d, msgpack::object& o);
+
+void unpack_uint32(uint32_t d, msgpack::object& o);
+
+void unpack_uint64(uint64_t d, msgpack::object& o);
+
+void unpack_int8(int8_t d, msgpack::object& o);
+
+void unpack_int16(int16_t d, msgpack::object& o);
+
+void unpack_int32(int32_t d, msgpack::object& o);
+
+void unpack_int64(int64_t d, msgpack::object& o);
+
+void unpack_float(float d, msgpack::object& o);
+
+void unpack_double(double d, msgpack::object& o);
+
+void unpack_nil(msgpack::object& o);
+
+void unpack_true(msgpack::object& o);
+
+void unpack_false(msgpack::object& o);
+
+struct unpack_array;
+
+void unpack_array_item(msgpack::object& c, msgpack::object const& o);
+
+struct unpack_map;
+
+void unpack_map_item(msgpack::object& c, msgpack::object const& k, msgpack::object const& v);
+
+void unpack_str(unpack_user& u, const char* p, uint32_t l, msgpack::object& o);
+
+void unpack_bin(unpack_user& u, const char* p, uint32_t l, msgpack::object& o);
+
+void unpack_ext(unpack_user& u, const char* p, std::size_t l, msgpack::object& o);
+
+class unpack_stack;
+
+void init_count(void* buffer);
+
+void decr_count(void* buffer);
+
+void incr_count(void* buffer);
+
+#if defined(MSGPACK_USE_CPP03)
+
+_msgpack_atomic_counter_t get_count(void* buffer);
+
+#else // defined(MSGPACK_USE_CPP03)
+
+std::atomic<unsigned int> const& get_count(void* buffer);
+
+#endif // defined(MSGPACK_USE_CPP03)
+
+struct fix_tag {
+ char f1[65]; // FIXME unique size is required. or use is_same meta function.
+};
+
+template <typename T>
+struct value;
+
+template <typename T>
+typename msgpack::enable_if<sizeof(T) == sizeof(fix_tag)>::type load(uint32_t& dst, const char* n);
+
+template <typename T>
+typename msgpack::enable_if<sizeof(T) == 1>::type load(T& dst, const char* n);
+
+template <typename T>
+typename msgpack::enable_if<sizeof(T) == 2>::type load(T& dst, const char* n);
+
+template <typename T>
+typename msgpack::enable_if<sizeof(T) == 4>::type load(T& dst, const char* n);
+
+template <typename T>
+typename msgpack::enable_if<sizeof(T) == 8>::type load(T& dst, const char* n);
+
+class context;
+
+} // detail
+
+
+typedef object_handle unpacked;
+
+/// Unpacking class for a stream deserialization.
+class unpacker;
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param off The offset position of the buffer. It is read and overwritten.
+ * @param referenced If the unpacked object contains reference of the buffer, then set as true, otherwise false.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ * @return object_handle that contains unpacked data.
+ *
+ */
+object_handle unpack(
+ const char* data, std::size_t len, std::size_t& off, bool& referenced,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, unpack_limit const& limit = unpack_limit());
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param off The offset position of the buffer. It is read and overwritten.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ * @return object_handle that contains unpacked data.
+ *
+ */
+object_handle unpack(
+ const char* data, std::size_t len, std::size_t& off,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, unpack_limit const& limit = unpack_limit());
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param referenced If the unpacked object contains reference of the buffer, then set as true, otherwise false.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ * @return object_handle that contains unpacked data.
+ *
+ */
+object_handle unpack(
+ const char* data, std::size_t len, bool& referenced,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, unpack_limit const& limit = unpack_limit());
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ * @return object_handle that contains unpacked data.
+ *
+ */
+object_handle unpack(
+ const char* data, std::size_t len,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, unpack_limit const& limit = unpack_limit());
+
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param result The object_handle that contains unpacked data.
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param off The offset position of the buffer. It is read and overwritten.
+ * @param referenced If the unpacked object contains reference of the buffer, then set as true, otherwise false.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ *
+ */
+void unpack(
+ object_handle& result,
+ const char* data, std::size_t len, std::size_t& off, bool& referenced,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, unpack_limit const& limit = unpack_limit());
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param result The object_handle that contains unpacked data.
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param off The offset position of the buffer. It is read and overwritten.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ *
+ */
+void unpack(
+ object_handle& result,
+ const char* data, std::size_t len, std::size_t& off,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, unpack_limit const& limit = unpack_limit());
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param result The object_handle that contains unpacked data.
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param referenced If the unpacked object contains reference of the buffer, then set as true, otherwise false.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ *
+ */
+void unpack(
+ object_handle& result,
+ const char* data, std::size_t len, bool& referenced,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, unpack_limit const& limit = unpack_limit());
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param result The object_handle that contains unpacked data.
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ *
+ */
+void unpack(
+ object_handle& result,
+ const char* data, std::size_t len,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, unpack_limit const& limit = unpack_limit());
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param z The msgpack::zone that is used as a memory of unpacked msgpack objects.
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param off The offset position of the buffer. It is read and overwritten.
+ * @param referenced If the unpacked object contains reference of the buffer, then set as true, otherwise false.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ * @return msgpack::object that contains unpacked data.
+ *
+ */
+msgpack::object unpack(
+ msgpack::zone& z,
+ const char* data, std::size_t len, std::size_t& off, bool& referenced,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, unpack_limit const& limit = unpack_limit());
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param z The msgpack::zone that is used as a memory of unpacked msgpack objects.
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param off The offset position of the buffer. It is read and overwritten.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ * @return msgpack::object that contains unpacked data.
+ *
+ */
+msgpack::object unpack(
+ msgpack::zone& z,
+ const char* data, std::size_t len, std::size_t& off,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, unpack_limit const& limit = unpack_limit());
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param z The msgpack::zone that is used as a memory of unpacked msgpack objects.
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param referenced If the unpacked object contains reference of the buffer, then set as true, otherwise false.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ * @return msgpack::object that contains unpacked data.
+ *
+ */
+msgpack::object unpack(
+ msgpack::zone& z,
+ const char* data, std::size_t len, bool& referenced,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, unpack_limit const& limit = unpack_limit());
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param z The msgpack::zone that is used as a memory of unpacked msgpack objects.
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ * @return msgpack::object that contains unpacked data.
+ *
+ */
+msgpack::object unpack(
+ msgpack::zone& z,
+ const char* data, std::size_t len,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, unpack_limit const& limit = unpack_limit());
+
+
+/// Unpack msgpack::object from a buffer. [obsolete]
+/**
+ * @param result The object_handle that contains unpacked data.
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param off The offset position of the buffer. It is read and overwritten.
+ * @param referenced If the unpacked object contains reference of the buffer, then set as true, otherwise false.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ * This function is obsolete. Use the reference inteface version of unpack functions instead of the pointer interface version.
+ */
+void unpack(
+ object_handle* result,
+ const char* data, std::size_t len, std::size_t* off = MSGPACK_NULLPTR, bool* referenced = MSGPACK_NULLPTR,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, unpack_limit const& limit = unpack_limit());
+
+
+namespace detail {
+
+parse_return
+unpack_imp(const char* data, std::size_t len, std::size_t& off,
+ msgpack::zone& result_zone, msgpack::object& result, bool& referenced,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit);
+
+} // detail
+
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_UNPACK_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/unpack_exception.hpp b/third_party/msgpack/include/msgpack/v1/unpack_exception.hpp
new file mode 100644
index 0000000000..c676a6205b
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/unpack_exception.hpp
@@ -0,0 +1,122 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_UNPACK_EXCEPTION_HPP
+#define MSGPACK_V1_UNPACK_EXCEPTION_HPP
+
+#include "msgpack/versioning.hpp"
+
+#include <string>
+#include <stdexcept>
+
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+struct unpack_error : public std::runtime_error {
+ explicit unpack_error(const std::string& msg)
+ :std::runtime_error(msg) {}
+#if !defined(MSGPACK_USE_CPP03)
+ explicit unpack_error(const char* msg):
+ std::runtime_error(msg) {}
+#endif // !defined(MSGPACK_USE_CPP03)
+};
+
+struct parse_error : public unpack_error {
+ explicit parse_error(const std::string& msg)
+ :unpack_error(msg) {}
+#if !defined(MSGPACK_USE_CPP03)
+ explicit parse_error(const char* msg)
+ :unpack_error(msg) {}
+#endif // !defined(MSGPACK_USE_CPP03)
+};
+
+struct insufficient_bytes : public unpack_error {
+ explicit insufficient_bytes(const std::string& msg)
+ :unpack_error(msg) {}
+#if !defined(MSGPACK_USE_CPP03)
+ explicit insufficient_bytes(const char* msg)
+ :unpack_error(msg) {}
+#endif // !defined(MSGPACK_USE_CPP03)
+};
+
+struct size_overflow : public unpack_error {
+ explicit size_overflow(const std::string& msg)
+ :unpack_error(msg) {}
+#if !defined(MSGPACK_USE_CPP03)
+ explicit size_overflow(const char* msg)
+ :unpack_error(msg) {}
+#endif
+};
+
+struct array_size_overflow : public size_overflow {
+ array_size_overflow(const std::string& msg)
+ :size_overflow(msg) {}
+#if !defined(MSGPACK_USE_CPP03)
+ array_size_overflow(const char* msg)
+ :size_overflow(msg) {}
+#endif
+};
+
+struct map_size_overflow : public size_overflow {
+ map_size_overflow(const std::string& msg)
+ :size_overflow(msg) {}
+#if !defined(MSGPACK_USE_CPP03)
+ map_size_overflow(const char* msg)
+ :size_overflow(msg) {}
+#endif
+};
+
+struct str_size_overflow : public size_overflow {
+ str_size_overflow(const std::string& msg)
+ :size_overflow(msg) {}
+#if !defined(MSGPACK_USE_CPP03)
+ str_size_overflow(const char* msg)
+ :size_overflow(msg) {}
+#endif
+};
+
+struct bin_size_overflow : public size_overflow {
+ bin_size_overflow(const std::string& msg)
+ :size_overflow(msg) {}
+#if !defined(MSGPACK_USE_CPP03)
+ bin_size_overflow(const char* msg)
+ :size_overflow(msg) {}
+#endif
+};
+
+struct ext_size_overflow : public size_overflow {
+ ext_size_overflow(const std::string& msg)
+ :size_overflow(msg) {}
+#if !defined(MSGPACK_USE_CPP03)
+ ext_size_overflow(const char* msg)
+ :size_overflow(msg) {}
+#endif
+};
+
+struct depth_size_overflow : public size_overflow {
+ depth_size_overflow(const std::string& msg)
+ :size_overflow(msg) {}
+#if !defined(MSGPACK_USE_CPP03)
+ depth_size_overflow(const char* msg)
+ :size_overflow(msg) {}
+#endif
+};
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+
+#endif // MSGPACK_V1_UNPACK_EXCEPTION_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/version.hpp b/third_party/msgpack/include/msgpack/v1/version.hpp
new file mode 100644
index 0000000000..0b447c70f4
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/version.hpp
@@ -0,0 +1,36 @@
+/*
+ * MessagePack for C++ version information
+ *
+ * Copyright (C) 2008-2013 FURUHASHI Sadayuki and Takatoshi Kondo
+ *
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ */
+#ifndef MSGPACK_VERSION_HPP
+#define MSGPACK_VERSION_HPP
+
+#include "version_master.h"
+
+#define MSGPACK_STR(v) #v
+#define MSGPACK_VERSION_I(maj, min, rev) MSGPACK_STR(maj) "." MSGPACK_STR(min) "." MSGPACK_STR(rev)
+
+#define MSGPACK_VERSION MSGPACK_VERSION_I(MSGPACK_VERSION_MAJOR, MSGPACK_VERSION_MINOR, MSGPACK_VERSION_REVISION)
+
+inline const char* msgpack_version(void) {
+ return MSGPACK_VERSION;
+}
+
+inline int msgpack_version_major(void) {
+ return MSGPACK_VERSION_MAJOR;
+}
+
+inline int msgpack_version_minor(void) {
+ return MSGPACK_VERSION_MINOR;
+}
+
+inline int msgpack_version_revision(void) {
+ return MSGPACK_VERSION_REVISION;
+}
+
+#endif /* msgpack/version.hpp */
diff --git a/third_party/msgpack/include/msgpack/v1/versioning.hpp b/third_party/msgpack/include/msgpack/v1/versioning.hpp
new file mode 100644
index 0000000000..c1e86c52a3
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/versioning.hpp
@@ -0,0 +1,69 @@
+/*
+ * MessagePack for C++ version switcher
+ *
+ * Copyright (C) 2014 KONDO Takatoshi
+ *
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ */
+#ifndef MSGPACK_VERSIONING_HPP
+#define MSGPACK_VERSIONING_HPP
+
+#if !defined(MSGPACK_DEFAULT_API_VERSION)
+#define MSGPACK_DEFAULT_API_VERSION 1
+#endif
+
+#define MSGPACK_DEFAULT_API_NS MSGPACK_DETAIL_PP_CAT(v, MSGPACK_DEFAULT_API_VERSION)
+
+#if MSGPACK_DEFAULT_API_VERSION == 1
+#define MSGPACK_DETAIL_PP_ENABLE_NS_v1 ()
+//#elif MSGPACK_DEFAULT_API_VERSION == 2
+//#define MSGPACK_DETAIL_PP_ENABLE_NS_v2 ()
+#else
+#error
+#endif
+
+#define MSGPACK_DETAIL_PP_CAT(a, ...) MSGPACK_DETAIL_PP_PRIMITIVE_CAT(a, __VA_ARGS__)
+#define MSGPACK_DETAIL_PP_PRIMITIVE_CAT(a, ...) a ## __VA_ARGS__
+
+#define MSGPACK_DETAIL_PP_IIF(c) MSGPACK_DETAIL_PP_PRIMITIVE_CAT(MSGPACK_DETAIL_PP_IIF_, c)
+#define MSGPACK_DETAIL_PP_IIF_0(t, ...) __VA_ARGS__
+#define MSGPACK_DETAIL_PP_IIF_1(t, ...) t
+
+#define MSGPACK_DETAIL_PP_PROBE(x) x, 1
+
+#if defined(_MSC_VER)
+
+#define MSGPACK_DETAIL_PP_MSVC_VA_ARGS_WORKAROUND(define, args) define args
+#define MSGPACK_DETAIL_PP_CHECK(...) MSGPACK_DETAIL_PP_MSVC_VA_ARGS_WORKAROUND(MSGPACK_DETAIL_PP_CHECK_N, (__VA_ARGS__, 0))
+#define MSGPACK_DETAIL_PP_CHECK_N(x, n, ...) n
+
+#else // defined(__MSC_VER)
+
+#define MSGPACK_DETAIL_PP_CHECK(...) MSGPACK_DETAIL_PP_CHECK_N(__VA_ARGS__, 0)
+#define MSGPACK_DETAIL_PP_CHECK_N(x, n, ...) n
+
+#endif // defined(__MSC_VER)
+
+
+#define MSGPACK_DETAIL_PP_NS_ENABLED_PROBE(ns) MSGPACK_DETAIL_PP_NS_ENABLED_PROBE_PROXY( MSGPACK_DETAIL_PP_ENABLE_NS_##ns )
+#define MSGPACK_DETAIL_PP_NS_ENABLED_PROBE_PROXY(...) MSGPACK_DETAIL_PP_NS_ENABLED_PROBE_PRIMIVIE(__VA_ARGS__)
+#define MSGPACK_DETAIL_PP_NS_ENABLED_PROBE_PRIMIVIE(x) MSGPACK_DETAIL_PP_NS_ENABLED_PROBE_COMBINE_ x
+#define MSGPACK_DETAIL_PP_NS_ENABLED_PROBE_COMBINE_(...) MSGPACK_DETAIL_PP_PROBE(~)
+
+#define MSGPACK_DETAIL_PP_IS_NS_ENABLED(ns) MSGPACK_DETAIL_PP_CHECK(MSGPACK_DETAIL_PP_NS_ENABLED_PROBE(ns))
+
+#if __cplusplus < 201103L
+#define MSGPACK_API_VERSION_NAMESPACE(ns) MSGPACK_DETAIL_PP_IIF(MSGPACK_DETAIL_PP_IS_NS_ENABLED(ns)) \
+ (namespace ns{}; using namespace ns; namespace ns, \
+ namespace ns)
+
+#else // __cplusplus < 201103L
+
+#define MSGPACK_API_VERSION_NAMESPACE(ns) MSGPACK_DETAIL_PP_IIF(MSGPACK_DETAIL_PP_IS_NS_ENABLED(ns)) \
+ (inline namespace ns, namespace ns)
+
+#endif // __cplusplus < 201103L
+
+#endif // MSGPACK_VERSIONING_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/vrefbuffer.hpp b/third_party/msgpack/include/msgpack/v1/vrefbuffer.hpp
new file mode 100644
index 0000000000..6d52a15e60
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/vrefbuffer.hpp
@@ -0,0 +1,292 @@
+//
+// MessagePack for C++ zero-copy buffer implementation
+//
+// Copyright (C) 2008-2017 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_VREFBUFFER_HPP
+#define MSGPACK_V1_VREFBUFFER_HPP
+
+#include "msgpack/v1/vrefbuffer_decl.hpp"
+
+#include <stdexcept>
+#include <algorithm>
+
+#if defined(_MSC_VER)
+// avoiding confliction std::max, std::min, and macro in windows.h
+#ifndef NOMINMAX
+#define NOMINMAX
+#endif
+#endif // defined(_MSC_VER)
+
+#if defined(unix) || defined(__unix) || defined(__APPLE__) || defined(__OpenBSD__)
+#include <sys/uio.h>
+#else
+struct iovec {
+ void *iov_base;
+ size_t iov_len;
+};
+#endif
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+namespace detail {
+ // int64, uint64, double
+ std::size_t const packer_max_buffer_size = 9;
+} // detail
+
+class vrefbuffer {
+private:
+ struct chunk {
+ chunk* next;
+ };
+ struct inner_buffer {
+ size_t free;
+ char* ptr;
+ chunk* head;
+ };
+public:
+ vrefbuffer(size_t ref_size = MSGPACK_VREFBUFFER_REF_SIZE,
+ size_t chunk_size = MSGPACK_VREFBUFFER_CHUNK_SIZE)
+ :m_ref_size(std::max(ref_size, detail::packer_max_buffer_size + 1)),
+ m_chunk_size(chunk_size)
+ {
+ size_t nfirst = (sizeof(iovec) < 72/2) ?
+ 72 / sizeof(iovec) : 8;
+
+ iovec* array = static_cast<iovec*>(::malloc(
+ sizeof(iovec) * nfirst));
+ if(!array) {
+ throw std::bad_alloc();
+ }
+
+ m_tail = array;
+ m_end = array + nfirst;
+ m_array = array;
+
+ chunk* c = static_cast<chunk*>(::malloc(sizeof(chunk) + chunk_size));
+ if(!c) {
+ ::free(array);
+ throw std::bad_alloc();
+ }
+ inner_buffer* const ib = &m_inner_buffer;
+
+ ib->free = chunk_size;
+ ib->ptr = reinterpret_cast<char*>(c) + sizeof(chunk);
+ ib->head = c;
+ c->next = MSGPACK_NULLPTR;
+
+ }
+
+ ~vrefbuffer()
+ {
+ chunk* c = m_inner_buffer.head;
+ while(true) {
+ chunk* n = c->next;
+ ::free(c);
+ if(n != NULL) {
+ c = n;
+ } else {
+ break;
+ }
+ }
+ ::free(m_array);
+ }
+
+public:
+ void write(const char* buf, size_t len)
+ {
+ if(len < m_ref_size) {
+ append_copy(buf, len);
+ } else {
+ append_ref(buf, len);
+ }
+ }
+
+ void append_ref(const char* buf, size_t len)
+ {
+ if(m_tail == m_end) {
+ const size_t nused = m_tail - m_array;
+ const size_t nnext = nused * 2;
+
+ iovec* nvec = static_cast<iovec*>(::realloc(
+ m_array, sizeof(iovec)*nnext));
+ if(!nvec) {
+ throw std::bad_alloc();
+ }
+
+ m_array = nvec;
+ m_end = nvec + nnext;
+ m_tail = nvec + nused;
+ }
+
+ m_tail->iov_base = const_cast<char*>(buf);
+ m_tail->iov_len = len;
+ ++m_tail;
+ }
+
+ void append_copy(const char* buf, size_t len)
+ {
+ inner_buffer* const ib = &m_inner_buffer;
+
+ if(ib->free < len) {
+ size_t sz = m_chunk_size;
+ if(sz < len) {
+ sz = len;
+ }
+
+ chunk* c = static_cast<chunk*>(::malloc(sizeof(chunk) + sz));
+ if(!c) {
+ throw std::bad_alloc();
+ }
+
+ c->next = ib->head;
+ ib->head = c;
+ ib->free = sz;
+ ib->ptr = reinterpret_cast<char*>(c) + sizeof(chunk);
+ }
+
+ char* m = ib->ptr;
+ std::memcpy(m, buf, len);
+ ib->free -= len;
+ ib->ptr += len;
+
+ if(m_tail != m_array && m ==
+ static_cast<const char*>(
+ const_cast<const void *>((m_tail - 1)->iov_base)
+ ) + (m_tail - 1)->iov_len) {
+ (m_tail - 1)->iov_len += len;
+ return;
+ } else {
+ append_ref( m, len);
+ }
+ }
+
+ const struct iovec* vector() const
+ {
+ return m_array;
+ }
+
+ size_t vector_size() const
+ {
+ return m_tail - m_array;
+ }
+
+ void migrate(vrefbuffer* to)
+ {
+ size_t sz = m_chunk_size;
+
+ chunk* empty = static_cast<chunk*>(::malloc(sizeof(chunk) + sz));
+ if(!empty) {
+ throw std::bad_alloc();
+ }
+
+ empty->next = MSGPACK_NULLPTR;
+
+ const size_t nused = m_tail - m_array;
+ if(to->m_tail + nused < m_end) {
+ const size_t tosize = to->m_tail - to->m_array;
+ const size_t reqsize = nused + tosize;
+ size_t nnext = (to->m_end - to->m_array) * 2;
+ while(nnext < reqsize) {
+ size_t tmp_nnext = nnext * 2;
+ if (tmp_nnext <= nnext) {
+ nnext = reqsize;
+ break;
+ }
+ nnext = tmp_nnext;
+ }
+
+ iovec* nvec = static_cast<iovec*>(::realloc(
+ to->m_array, sizeof(iovec)*nnext));
+ if(!nvec) {
+ ::free(empty);
+ throw std::bad_alloc();
+ }
+
+ to->m_array = nvec;
+ to->m_end = nvec + nnext;
+ to->m_tail = nvec + tosize;
+ }
+
+ std::memcpy(to->m_tail, m_array, sizeof(iovec)*nused);
+
+ to->m_tail += nused;
+ m_tail = m_array;
+
+
+ inner_buffer* const ib = &m_inner_buffer;
+ inner_buffer* const toib = &to->m_inner_buffer;
+
+ chunk* last = ib->head;
+ while(last->next) {
+ last = last->next;
+ }
+ last->next = toib->head;
+ toib->head = ib->head;
+
+ if(toib->free < ib->free) {
+ toib->free = ib->free;
+ toib->ptr = ib->ptr;
+ }
+
+ ib->head = empty;
+ ib->free = sz;
+ ib->ptr = reinterpret_cast<char*>(empty) + sizeof(chunk);
+
+ }
+
+ void clear()
+ {
+ chunk* c = m_inner_buffer.head->next;
+ chunk* n;
+ while(c) {
+ n = c->next;
+ ::free(c);
+ c = n;
+ }
+
+ inner_buffer* const ib = &m_inner_buffer;
+ c = ib->head;
+ c->next = MSGPACK_NULLPTR;
+ ib->free = m_chunk_size;
+ ib->ptr = reinterpret_cast<char*>(c) + sizeof(chunk);
+
+ m_tail = m_array;
+ }
+
+#if defined(MSGPACK_USE_CPP03)
+private:
+ vrefbuffer(const vrefbuffer&);
+ vrefbuffer& operator=(const vrefbuffer&);
+#else // defined(MSGPACK_USE_CPP03)
+ vrefbuffer(const vrefbuffer&) = delete;
+ vrefbuffer& operator=(const vrefbuffer&) = delete;
+#endif // defined(MSGPACK_USE_CPP03)
+
+private:
+ iovec* m_tail;
+ iovec* m_end;
+ iovec* m_array;
+
+ size_t m_ref_size;
+ size_t m_chunk_size;
+
+ inner_buffer m_inner_buffer;
+
+};
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_VREFBUFFER_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/vrefbuffer_decl.hpp b/third_party/msgpack/include/msgpack/v1/vrefbuffer_decl.hpp
new file mode 100644
index 0000000000..19f96eff9a
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/vrefbuffer_decl.hpp
@@ -0,0 +1,39 @@
+//
+// MessagePack for C++ zero-copy buffer implementation
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_VREFBUFFER_DECL_HPP
+#define MSGPACK_V1_VREFBUFFER_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+
+#include <cstdlib>
+
+#ifndef MSGPACK_VREFBUFFER_REF_SIZE
+#define MSGPACK_VREFBUFFER_REF_SIZE 32
+#endif
+
+#ifndef MSGPACK_VREFBUFFER_CHUNK_SIZE
+#define MSGPACK_VREFBUFFER_CHUNK_SIZE 8192
+#endif
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+class vrefbuffer;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_VREFBUFFER_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/zbuffer.hpp b/third_party/msgpack/include/msgpack/v1/zbuffer.hpp
new file mode 100644
index 0000000000..e34b48ed71
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/zbuffer.hpp
@@ -0,0 +1,159 @@
+//
+// MessagePack for C++ deflate buffer implementation
+//
+// Copyright (C) 2010-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_ZBUFFER_HPP
+#define MSGPACK_V1_ZBUFFER_HPP
+
+#include "msgpack/v1/zbuffer_decl.hpp"
+
+#include <stdexcept>
+#include <zlib.h>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+class zbuffer {
+public:
+ zbuffer(int level = Z_DEFAULT_COMPRESSION,
+ size_t init_size = MSGPACK_ZBUFFER_INIT_SIZE)
+ : m_data(MSGPACK_NULLPTR), m_init_size(init_size)
+ {
+ m_stream.zalloc = Z_NULL;
+ m_stream.zfree = Z_NULL;
+ m_stream.opaque = Z_NULL;
+ m_stream.next_out = Z_NULL;
+ m_stream.avail_out = 0;
+ if(deflateInit(&m_stream, level) != Z_OK) {
+ throw std::bad_alloc();
+ }
+ }
+
+ ~zbuffer()
+ {
+ deflateEnd(&m_stream);
+ ::free(m_data);
+ }
+
+public:
+ void write(const char* buf, size_t len)
+ {
+ m_stream.next_in = reinterpret_cast<Bytef*>(const_cast<char*>(buf));
+ m_stream.avail_in = len;
+
+ while(m_stream.avail_in > 0) {
+ if(m_stream.avail_out < MSGPACK_ZBUFFER_RESERVE_SIZE) {
+ if(!expand()) {
+ throw std::bad_alloc();
+ }
+ }
+
+ if(deflate(&m_stream, Z_NO_FLUSH) != Z_OK) {
+ throw std::bad_alloc();
+ }
+ }
+ }
+
+ char* flush()
+ {
+ while(true) {
+ switch(deflate(&m_stream, Z_FINISH)) {
+ case Z_STREAM_END:
+ return m_data;
+ case Z_OK:
+ if(!expand()) {
+ throw std::bad_alloc();
+ }
+ break;
+ default:
+ throw std::bad_alloc();
+ }
+ }
+ }
+
+ char* data()
+ {
+ return m_data;
+ }
+
+ const char* data() const
+ {
+ return m_data;
+ }
+
+ size_t size() const
+ {
+ return reinterpret_cast<char*>(m_stream.next_out) - m_data;
+ }
+
+ void reset()
+ {
+ if(deflateReset(&m_stream) != Z_OK) {
+ throw std::bad_alloc();
+ }
+ reset_buffer();
+ }
+
+ void reset_buffer()
+ {
+ m_stream.avail_out += reinterpret_cast<char*>(m_stream.next_out) - m_data;
+ m_stream.next_out = reinterpret_cast<Bytef*>(m_data);
+ }
+
+ char* release_buffer()
+ {
+ char* tmp = m_data;
+ m_data = MSGPACK_NULLPTR;
+ m_stream.next_out = MSGPACK_NULLPTR;
+ m_stream.avail_out = 0;
+ return tmp;
+ }
+
+private:
+ bool expand()
+ {
+ size_t used = reinterpret_cast<char*>(m_stream.next_out) - m_data;
+ size_t csize = used + m_stream.avail_out;
+ size_t nsize = (csize == 0) ? m_init_size : csize * 2;
+
+ char* tmp = static_cast<char*>(::realloc(m_data, nsize));
+ if(tmp == MSGPACK_NULLPTR) {
+ return false;
+ }
+
+ m_data = tmp;
+ m_stream.next_out = reinterpret_cast<Bytef*>(tmp + used);
+ m_stream.avail_out = nsize - used;
+
+ return true;
+ }
+#if defined(MSGPACK_USE_CPP03)
+private:
+ zbuffer(const zbuffer&);
+ zbuffer& operator=(const zbuffer&);
+#else // defined(MSGPACK_USE_CPP03)
+ zbuffer(const zbuffer&) = delete;
+ zbuffer& operator=(const zbuffer&) = delete;
+#endif // defined(MSGPACK_USE_CPP03)
+
+private:
+ z_stream m_stream;
+ char* m_data;
+ size_t m_init_size;
+};
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_ZBUFFER_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/zbuffer_decl.hpp b/third_party/msgpack/include/msgpack/v1/zbuffer_decl.hpp
new file mode 100644
index 0000000000..5ef8447f76
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/zbuffer_decl.hpp
@@ -0,0 +1,37 @@
+//
+// MessagePack for C++ deflate buffer implementation
+//
+// Copyright (C) 2010-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_ZBUFFER_DECL_HPP
+#define MSGPACK_V1_ZBUFFER_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+
+#ifndef MSGPACK_ZBUFFER_RESERVE_SIZE
+#define MSGPACK_ZBUFFER_RESERVE_SIZE 512
+#endif
+
+#ifndef MSGPACK_ZBUFFER_INIT_SIZE
+#define MSGPACK_ZBUFFER_INIT_SIZE 8192
+#endif
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+class zbuffer;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V1_ZBUFFER_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/zone.hpp b/third_party/msgpack/include/msgpack/v1/zone.hpp
new file mode 100644
index 0000000000..9cadf25fb1
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/zone.hpp
@@ -0,0 +1,21 @@
+//
+// MessagePack for C++ memory pool
+//
+// Copyright (C) 2008-2014 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_ZONE_HPP
+#define MSGPACK_V1_ZONE_HPP
+
+#include "msgpack/cpp_config.hpp"
+
+#if defined(MSGPACK_USE_CPP03)
+#include "msgpack/v1/detail/cpp03_zone.hpp"
+#else // MSGPACK_USE_CPP03
+#include "msgpack/v1/detail/cpp11_zone.hpp"
+#endif // MSGPACK_USE_CPP03
+
+#endif // MSGPACK_V1_ZONE_HPP
diff --git a/third_party/msgpack/include/msgpack/v1/zone_decl.hpp b/third_party/msgpack/include/msgpack/v1/zone_decl.hpp
new file mode 100644
index 0000000000..7caed292cc
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v1/zone_decl.hpp
@@ -0,0 +1,21 @@
+//
+// MessagePack for C++ memory pool
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V1_ZONE_DECL_HPP
+#define MSGPACK_V1_ZONE_DECL_HPP
+
+#include "msgpack/cpp_config.hpp"
+
+#if defined(MSGPACK_USE_CPP03)
+#include "msgpack/v1/detail/cpp03_zone_decl.hpp"
+#else // MSGPACK_USE_CPP03
+#include "msgpack/v1/detail/cpp11_zone_decl.hpp"
+#endif // MSGPACK_USE_CPP03
+
+#endif // MSGPACK_V1_ZONE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/adaptor/adaptor_base.hpp b/third_party/msgpack/include/msgpack/v2/adaptor/adaptor_base.hpp
new file mode 100644
index 0000000000..74d591c9b8
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/adaptor/adaptor_base.hpp
@@ -0,0 +1,58 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015-2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_ADAPTOR_BASE_HPP
+#define MSGPACK_V2_ADAPTOR_BASE_HPP
+
+#include "msgpack/v2/adaptor/adaptor_base_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+
+namespace adaptor {
+
+// Adaptor functors
+
+template <typename T, typename Enabler>
+struct convert : v1::adaptor::convert<T, Enabler> {
+};
+
+template <typename T, typename Enabler>
+struct pack : v1::adaptor::pack<T, Enabler> {
+};
+
+template <typename T, typename Enabler>
+struct object<
+ T,
+ Enabler,
+ typename msgpack::enable_if<
+ !msgpack::is_same<T, std::string>::value &&
+ !msgpack::is_array<T>::value
+ >::type>
+ : v1::adaptor::object<T, Enabler> {
+};
+
+template <typename T, typename Enabler>
+struct object_with_zone : v1::adaptor::object_with_zone<T, Enabler> {
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+
+#endif // MSGPACK_V2_ADAPTOR_BASE_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/adaptor/adaptor_base_decl.hpp b/third_party/msgpack/include/msgpack/v2/adaptor/adaptor_base_decl.hpp
new file mode 100644
index 0000000000..6761a7b314
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/adaptor/adaptor_base_decl.hpp
@@ -0,0 +1,52 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_ADAPTOR_BASE_DECL_HPP
+#define MSGPACK_V2_ADAPTOR_BASE_DECL_HPP
+
+#include "msgpack/v1/adaptor/adaptor_base_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+using v1::packer;
+
+namespace adaptor {
+
+// Adaptor functors
+
+template <typename T, typename Enabler = void>
+struct convert;
+
+template <typename T, typename Enabler = void>
+struct pack;
+
+template <typename T, typename Enabler = void, typename Enabler2 = void>
+struct object;
+
+template <typename T, typename Enabler = void>
+struct object_with_zone;
+
+} // namespace adaptor
+
+// operators
+
+using v1::operator>>;
+using v1::operator<<;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V2_ADAPTOR_BASE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/adaptor/array_ref_decl.hpp b/third_party/msgpack/include/msgpack/v2/adaptor/array_ref_decl.hpp
new file mode 100644
index 0000000000..1b9f5008f6
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/adaptor/array_ref_decl.hpp
@@ -0,0 +1,36 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_TYPE_ARRAY_REF_DECL_HPP
+#define MSGPACK_V2_TYPE_ARRAY_REF_DECL_HPP
+
+#include "msgpack/v1/adaptor/array_ref_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+namespace type {
+
+using v1::type::array_ref;
+
+using v1::type::make_array_ref;
+
+
+} // namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V2_TYPE_ARRAY_REF_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/adaptor/boost/msgpack_variant_decl.hpp b/third_party/msgpack/include/msgpack/v2/adaptor/boost/msgpack_variant_decl.hpp
new file mode 100644
index 0000000000..65ac599a39
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/adaptor/boost/msgpack_variant_decl.hpp
@@ -0,0 +1,42 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_TYPE_BOOST_MSGPACK_VARIANT_DECL_HPP
+#define MSGPACK_V2_TYPE_BOOST_MSGPACK_VARIANT_DECL_HPP
+
+#if defined(MSGPACK_USE_BOOST)
+
+#include "msgpack/v1/adaptor/boost/msgpack_variant_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+namespace type {
+
+using v1::type::basic_variant;
+using v1::type::variant;
+using v1::type::variant_ref;
+
+using v1::type::operator<;
+
+using v1::type::operator==;
+
+} // namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_USE_BOOST
+#endif // MSGPACK_V2_TYPE_BOOST_MSGPACK_VARIANT_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/adaptor/check_container_size_decl.hpp b/third_party/msgpack/include/msgpack/v2/adaptor/check_container_size_decl.hpp
new file mode 100644
index 0000000000..9ed4100823
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/adaptor/check_container_size_decl.hpp
@@ -0,0 +1,39 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_CHECK_CONTAINER_SIZE_DECL_HPP
+#define MSGPACK_V2_CHECK_CONTAINER_SIZE_DECL_HPP
+
+#include "msgpack/v1/adaptor/check_container_size_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+using v1::container_size_overflow;
+
+namespace detail {
+
+using v1::detail::check_container_size;
+
+using v1::detail::check_container_size_for_ext;
+
+} // namespace detail
+
+using v1::checked_get_container_size;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V2_CHECK_CONTAINER_SIZE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/adaptor/define_decl.hpp b/third_party/msgpack/include/msgpack/v2/adaptor/define_decl.hpp
new file mode 100644
index 0000000000..1cc8f31757
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/adaptor/define_decl.hpp
@@ -0,0 +1,23 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_DEFINE_DECL_HPP
+#define MSGPACK_V2_DEFINE_DECL_HPP
+
+#include "msgpack/cpp_config.hpp"
+
+#if defined(MSGPACK_USE_CPP03)
+#include "msgpack/v2/adaptor/detail/cpp03_define_array_decl.hpp"
+#include "msgpack/v2/adaptor/detail/cpp03_define_map_decl.hpp"
+#else // MSGPACK_USE_CPP03
+#include "msgpack/v2/adaptor/detail/cpp11_define_array_decl.hpp"
+#include "msgpack/v2/adaptor/detail/cpp11_define_map_decl.hpp"
+#endif // MSGPACK_USE_CPP03
+
+#endif // MSGPACK_V2_DEFINE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/adaptor/detail/cpp03_define_array_decl.hpp b/third_party/msgpack/include/msgpack/v2/adaptor/detail/cpp03_define_array_decl.hpp
new file mode 100644
index 0000000000..314db3ff87
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/adaptor/detail/cpp03_define_array_decl.hpp
@@ -0,0 +1,31 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_CPP03_DEFINE_ARRAY_DECL_HPP
+#define MSGPACK_V2_CPP03_DEFINE_ARRAY_DECL_HPP
+
+#include "msgpack/v1/adaptor/detail/cpp03_define_array_decl.hpp"
+
+namespace msgpack {
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+namespace type {
+
+using v1::type::define_array;
+
+using v1::type::make_define_array;
+
+} // namespace type
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+} // namespace msgpack
+
+#endif // MSGPACK_V2_CPP03_DEFINE_ARRAY_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/adaptor/detail/cpp03_define_map_decl.hpp b/third_party/msgpack/include/msgpack/v2/adaptor/detail/cpp03_define_map_decl.hpp
new file mode 100644
index 0000000000..56b9dfaf16
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/adaptor/detail/cpp03_define_map_decl.hpp
@@ -0,0 +1,31 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015-2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_CPP03_DEFINE_MAP_DECL_HPP
+#define MSGPACK_V2_CPP03_DEFINE_MAP_DECL_HPP
+
+#include "msgpack/v1/adaptor/detail/cpp03_define_map_decl.hpp"
+
+namespace msgpack {
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+namespace type {
+
+using v1::type::define_map;
+
+using v1::type::make_define_map;
+
+} // namespace type
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+} // namespace msgpack
+
+#endif // MSGPACK_V2_CPP03_DEFINE_MAP_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/adaptor/detail/cpp03_msgpack_tuple_decl.hpp b/third_party/msgpack/include/msgpack/v2/adaptor/detail/cpp03_msgpack_tuple_decl.hpp
new file mode 100644
index 0000000000..163005fa3b
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/adaptor/detail/cpp03_msgpack_tuple_decl.hpp
@@ -0,0 +1,43 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_CPP03_MSGPACK_TUPLE_DECL_HPP
+#define MSGPACK_V2_CPP03_MSGPACK_TUPLE_DECL_HPP
+
+#include "msgpack/v1/adaptor/detail/cpp03_msgpack_tuple_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+namespace type {
+
+using v1::type::tuple;
+
+using v1::type::tuple_element;
+
+using v1::type::const_tuple_element;
+
+using v1::type::tuple_type;
+
+using v1::type::get;
+
+using v1::type::make_tuple;
+
+} // namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V2_CPP03_MSGPACK_TUPLE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/adaptor/detail/cpp11_define_array_decl.hpp b/third_party/msgpack/include/msgpack/v2/adaptor/detail/cpp11_define_array_decl.hpp
new file mode 100644
index 0000000000..db86ed97a3
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/adaptor/detail/cpp11_define_array_decl.hpp
@@ -0,0 +1,32 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_CPP11_DEFINE_ARRAY_DECL_HPP
+#define MSGPACK_V2_CPP11_DEFINE_ARRAY_DECL_HPP
+
+#include "msgpack/v1/adaptor/detail/cpp11_define_array_decl.hpp"
+
+namespace msgpack {
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+namespace type {
+
+using v1::type::define_array_imp;
+using v1::type::define_array;
+
+using v1::type::make_define_array;
+
+} // namespace type
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+} // namespace msgpack
+
+#endif // MSGPACK_V2_CPP11_DEFINE_ARRAY_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/adaptor/detail/cpp11_define_map_decl.hpp b/third_party/msgpack/include/msgpack/v2/adaptor/detail/cpp11_define_map_decl.hpp
new file mode 100644
index 0000000000..6147b30e95
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/adaptor/detail/cpp11_define_map_decl.hpp
@@ -0,0 +1,31 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_CPP11_DEFINE_MAP_DECL_HPP
+#define MSGPACK_V2_CPP11_DEFINE_MAP_DECL_HPP
+
+#include "msgpack/v1/adaptor/detail/cpp11_define_map_decl.hpp"
+
+namespace msgpack {
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+namespace type {
+
+using v1::type::define_map_imp;
+using v1::type::define_map;
+using v1::type::make_define_map;
+
+} // namespace type
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+} // namespace msgpack
+
+#endif // MSGPACK_V2_CPP11_DEFINE_MAP_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/adaptor/detail/cpp11_msgpack_tuple_decl.hpp b/third_party/msgpack/include/msgpack/v2/adaptor/detail/cpp11_msgpack_tuple_decl.hpp
new file mode 100644
index 0000000000..deb8c83901
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/adaptor/detail/cpp11_msgpack_tuple_decl.hpp
@@ -0,0 +1,59 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_CPP11_MSGPACK_TUPLE_DECL_HPP
+#define MSGPACK_V2_CPP11_MSGPACK_TUPLE_DECL_HPP
+
+#include "msgpack/v1/adaptor/detail/cpp11_msgpack_tuple_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+namespace type {
+
+using v1::type::get;
+using v1::type::tuple_size;
+using v1::type::tuple_element;
+using v1::type::uses_allocator;
+using v1::type::ignore;
+using v1::type::swap;
+
+using v1::type::tuple;
+
+using v1::type::make_tuple;
+using v1::type::forward_as_tuple;
+using v1::type::tuple_cat;
+using v1::type::tie;
+
+} // namespace type
+
+// --- Pack from tuple to packer stream ---
+
+using v1::MsgpackTuplePacker;
+
+// --- Convert from tuple to object ---
+using v1::MsgpackTupleAs;
+
+using v1::MsgpackTupleAsImpl;
+
+using v1::MsgpackTupleConverter;
+
+// --- Convert from tuple to object with zone ---
+using v1::MsgpackTupleToObjectWithZone;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+///@endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V2_CPP11_MSGPACK_TUPLE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/adaptor/ext_decl.hpp b/third_party/msgpack/include/msgpack/v2/adaptor/ext_decl.hpp
new file mode 100644
index 0000000000..5e7d04b1e7
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/adaptor/ext_decl.hpp
@@ -0,0 +1,34 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_TYPE_EXT_DECL_HPP
+#define MSGPACK_V2_TYPE_EXT_DECL_HPP
+
+#include "msgpack/v1/adaptor/ext_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+namespace type {
+
+using v1::type::ext_ref;
+using v1::type::ext;
+
+} // namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V2_TYPE_EXT_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/adaptor/fixint_decl.hpp b/third_party/msgpack/include/msgpack/v2/adaptor/fixint_decl.hpp
new file mode 100644
index 0000000000..606f248e43
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/adaptor/fixint_decl.hpp
@@ -0,0 +1,43 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_TYPE_FIXINT_DECL_HPP
+#define MSGPACK_V2_TYPE_FIXINT_DECL_HPP
+
+#include "msgpack/v1/adaptor/fixint_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+namespace type {
+
+using v1::type::fix_int;
+
+using v1::type::fix_uint8;
+using v1::type::fix_uint16;
+using v1::type::fix_uint32;
+using v1::type::fix_uint64;
+
+using v1::type::fix_int8;
+using v1::type::fix_int16;
+using v1::type::fix_int32;
+using v1::type::fix_int64;
+
+} // namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V2_TYPE_FIXINT_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/adaptor/int_decl.hpp b/third_party/msgpack/include/msgpack/v2/adaptor/int_decl.hpp
new file mode 100644
index 0000000000..8ad7206e44
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/adaptor/int_decl.hpp
@@ -0,0 +1,54 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_TYPE_INT_DECL_HPP
+#define MSGPACK_V2_TYPE_INT_DECL_HPP
+
+#include "msgpack/v1/adaptor/int_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2){
+/// @endcond
+
+namespace type {
+namespace detail {
+
+
+template <typename T, bool Signed>
+struct convert_integer_sign;
+
+template <typename T>
+struct is_signed;
+
+
+template <bool Signed>
+struct object_char_sign;
+
+//using v1::type::detail::convert_integer_sign;
+
+//using v1::type::detail::is_signed;
+
+using v1::type::detail::convert_integer;
+
+//using v1::type::detail::object_char_sign;
+
+using v1::type::detail::object_char;
+
+} // namespace detail
+} // namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V2_TYPE_INT_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/adaptor/map_decl.hpp b/third_party/msgpack/include/msgpack/v2/adaptor/map_decl.hpp
new file mode 100644
index 0000000000..5a831f8951
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/adaptor/map_decl.hpp
@@ -0,0 +1,33 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_TYPE_MAP_DECL_HPP
+#define MSGPACK_V2_TYPE_MAP_DECL_HPP
+
+#include "msgpack/v1/adaptor/map_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+namespace type {
+
+using v1::type::assoc_vector;
+
+} //namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V2_TYPE_MAP_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/adaptor/msgpack_tuple_decl.hpp b/third_party/msgpack/include/msgpack/v2/adaptor/msgpack_tuple_decl.hpp
new file mode 100644
index 0000000000..bc631e4c82
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/adaptor/msgpack_tuple_decl.hpp
@@ -0,0 +1,21 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_MSGPACK_TUPLE_DECL_HPP
+#define MSGPACK_V2_MSGPACK_TUPLE_DECL_HPP
+
+#include "msgpack/cpp_config.hpp"
+
+#if defined(MSGPACK_USE_CPP03)
+#include "msgpack/v2/adaptor/detail/cpp03_msgpack_tuple_decl.hpp"
+#else // MSGPACK_USE_CPP03
+#include "msgpack/v2/adaptor/detail/cpp11_msgpack_tuple_decl.hpp"
+#endif // MSGPACK_USE_CPP03
+
+#endif // MSGPACK_V2_MSGPACK_TUPLE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/adaptor/nil_decl.hpp b/third_party/msgpack/include/msgpack/v2/adaptor/nil_decl.hpp
new file mode 100644
index 0000000000..b94c4c6952
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/adaptor/nil_decl.hpp
@@ -0,0 +1,42 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_TYPE_NIL_DECL_HPP
+#define MSGPACK_V2_TYPE_NIL_DECL_HPP
+
+#include "msgpack/v1/adaptor/nil_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+namespace type {
+
+using v1::type::nil_t;
+
+#if defined(MSGPACK_USE_LEGACY_NIL)
+
+typedef nil_t nil;
+
+#endif // defined(MSGPACK_USE_LEGACY_NIL)
+
+using v1::type::operator<;
+using v1::type::operator==;
+
+} // namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V2_TYPE_NIL_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/adaptor/raw_decl.hpp b/third_party/msgpack/include/msgpack/v2/adaptor/raw_decl.hpp
new file mode 100644
index 0000000000..fe0913478b
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/adaptor/raw_decl.hpp
@@ -0,0 +1,33 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_TYPE_RAW_DECL_HPP
+#define MSGPACK_V2_TYPE_RAW_DECL_HPP
+
+#include "msgpack/v1/adaptor/raw_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+namespace type {
+
+using v1::type::raw_ref;
+
+} // namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V2_TYPE_RAW_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/adaptor/size_equal_only_decl.hpp b/third_party/msgpack/include/msgpack/v2/adaptor/size_equal_only_decl.hpp
new file mode 100644
index 0000000000..a6f21fa144
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/adaptor/size_equal_only_decl.hpp
@@ -0,0 +1,35 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_TYPE_SIZE_EQUAL_ONLY_DECL_HPP
+#define MSGPACK_V2_TYPE_SIZE_EQUAL_ONLY_DECL_HPP
+
+#include "msgpack/v1/adaptor/size_equal_only_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+namespace type {
+
+using v1::type::size_equal_only;
+using v1::type::make_size_equal_only;
+using v1::type::size;
+
+} // namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V2_TYPE_SIZE_EQUAL_ONLY_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/adaptor/v4raw_decl.hpp b/third_party/msgpack/include/msgpack/v2/adaptor/v4raw_decl.hpp
new file mode 100644
index 0000000000..b39ef0cfb5
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/adaptor/v4raw_decl.hpp
@@ -0,0 +1,34 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_TYPE_V4RAW_DECL_HPP
+#define MSGPACK_V2_TYPE_V4RAW_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+namespace type {
+
+using v1::type::v4raw_ref;
+
+} // namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V2_TYPE_V4RAW_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/cpp_config_decl.hpp b/third_party/msgpack/include/msgpack/v2/cpp_config_decl.hpp
new file mode 100644
index 0000000000..7e2e983231
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/cpp_config_decl.hpp
@@ -0,0 +1,84 @@
+//
+// MessagePack for C++ C++03/C++11 Adaptation
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_CPP_CONFIG_DECL_HPP
+#define MSGPACK_V2_CPP_CONFIG_DECL_HPP
+
+#include "msgpack/v1/cpp_config_decl.hpp"
+
+#if defined(MSGPACK_USE_CPP03)
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+using v1::unique_ptr;
+
+using v1::move;
+
+using v1::enable_if;
+
+using v1::integral_constant;
+
+using v1::is_same;
+
+using v1::underlying_type;
+
+using v1::is_array;
+
+using v1::remove_const;
+using v1::remove_volatile;
+using v1::remove_cv;
+
+using v1::is_pointer;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+
+#else // MSGPACK_USE_CPP03
+
+namespace msgpack {
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+// unique_ptr
+using v1::unique_ptr;
+// using v1::make_unique; // since C++14
+using v1::hash;
+
+// utility
+using v1::move;
+using v1::swap;
+using v1::enable_if;
+using v1::is_same;
+using v1::underlying_type;
+using v1::is_array;
+
+using v1::remove_const;
+using v1::remove_volatile;
+using v1::remove_cv;
+
+using v1::is_pointer;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+} // namespace msgpack
+
+
+#endif // MSGPACK_USE_CPP03
+
+#endif // MSGPACK_V2_CPP_CONFIG_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/create_object_visitor.hpp b/third_party/msgpack/include/msgpack/v2/create_object_visitor.hpp
new file mode 100644
index 0000000000..78c47ea865
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/create_object_visitor.hpp
@@ -0,0 +1,250 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2017 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_CREATE_OBJECT_VISITOR_HPP
+#define MSGPACK_V2_CREATE_OBJECT_VISITOR_HPP
+
+#include "msgpack/unpack_decl.hpp"
+#include "msgpack/unpack_exception.hpp"
+#include "msgpack/v2/create_object_visitor_decl.hpp"
+#include "msgpack/v2/null_visitor.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+namespace detail {
+
+class create_object_visitor : public msgpack::v2::null_visitor {
+public:
+ create_object_visitor(unpack_reference_func f, void* user_data, unpack_limit const& limit)
+ :m_func(f), m_user_data(user_data), m_limit(limit) {
+ m_stack.reserve(MSGPACK_EMBED_STACK_SIZE);
+ m_stack.push_back(&m_obj);
+ }
+
+#if !defined(MSGPACK_USE_CPP03)
+ create_object_visitor(create_object_visitor&& other)
+ :m_func(other.m_func),
+ m_user_data(other.m_user_data),
+ m_limit(std::move(other.m_limit)),
+ m_stack(std::move(other.m_stack)),
+ m_zone(other.m_zone),
+ m_referenced(other.m_referenced) {
+ other.m_zone = MSGPACK_NULLPTR;
+ m_stack[0] = &m_obj;
+ }
+ create_object_visitor& operator=(create_object_visitor&& other) {
+ this->~create_object_visitor();
+ new (this) create_object_visitor(std::move(other));
+ return *this;
+ }
+#endif // !defined(MSGPACK_USE_CPP03)
+
+ void init() {
+ m_stack.resize(1);
+ m_obj = msgpack::object();
+ m_stack[0] = &m_obj;
+ }
+ msgpack::object const& data() const
+ {
+ return m_obj;
+ }
+ msgpack::zone const& zone() const { return *m_zone; }
+ msgpack::zone& zone() { return *m_zone; }
+ void set_zone(msgpack::zone& zone) { m_zone = &zone; }
+ bool referenced() const { return m_referenced; }
+ void set_referenced(bool referenced) { m_referenced = referenced; }
+ // visit functions
+ bool visit_nil() {
+ msgpack::object* obj = m_stack.back();
+ obj->type = msgpack::type::NIL;
+ return true;
+ }
+ bool visit_boolean(bool v) {
+ msgpack::object* obj = m_stack.back();
+ obj->type = msgpack::type::BOOLEAN;
+ obj->via.boolean = v;
+ return true;
+ }
+ bool visit_positive_integer(uint64_t v) {
+ msgpack::object* obj = m_stack.back();
+ obj->type = msgpack::type::POSITIVE_INTEGER;
+ obj->via.u64 = v;
+ return true;
+ }
+ bool visit_negative_integer(int64_t v) {
+ msgpack::object* obj = m_stack.back();
+ if(v >= 0) {
+ obj->type = msgpack::type::POSITIVE_INTEGER;
+ obj->via.u64 = v;
+ }
+ else {
+ obj->type = msgpack::type::NEGATIVE_INTEGER;
+ obj->via.i64 = v;
+ }
+ return true;
+ }
+ bool visit_float32(float v) {
+ msgpack::object* obj = m_stack.back();
+ obj->type = msgpack::type::FLOAT32;
+ obj->via.f64 = v;
+ return true;
+ }
+ bool visit_float64(double v) {
+ msgpack::object* obj = m_stack.back();
+ obj->type = msgpack::type::FLOAT64;
+ obj->via.f64 = v;
+ return true;
+ }
+ bool visit_str(const char* v, uint32_t size) {
+ if (size > m_limit.str()) throw msgpack::str_size_overflow("str size overflow");
+ msgpack::object* obj = m_stack.back();
+ obj->type = msgpack::type::STR;
+ if (m_func && m_func(obj->type, size, m_user_data)) {
+ obj->via.str.ptr = v;
+ set_referenced(true);
+ }
+ else {
+ char* tmp = static_cast<char*>(zone().allocate_align(size, MSGPACK_ZONE_ALIGNOF(char)));
+ std::memcpy(tmp, v, size);
+ obj->via.str.ptr = tmp;
+ }
+ obj->via.str.size = size;
+ return true;
+ }
+ bool visit_bin(const char* v, uint32_t size) {
+ if (size > m_limit.bin()) throw msgpack::bin_size_overflow("bin size overflow");
+ msgpack::object* obj = m_stack.back();
+ obj->type = msgpack::type::BIN;
+ if (m_func && m_func(obj->type, size, m_user_data)) {
+ obj->via.bin.ptr = v;
+ set_referenced(true);
+ }
+ else {
+ char* tmp = static_cast<char*>(zone().allocate_align(size, MSGPACK_ZONE_ALIGNOF(char)));
+ std::memcpy(tmp, v, size);
+ obj->via.bin.ptr = tmp;
+ }
+ obj->via.bin.size = size;
+ return true;
+ }
+ bool visit_ext(const char* v, uint32_t size) {
+ if (size > m_limit.ext()) throw msgpack::ext_size_overflow("ext size overflow");
+ msgpack::object* obj = m_stack.back();
+ obj->type = msgpack::type::EXT;
+ if (m_func && m_func(obj->type, size, m_user_data)) {
+ obj->via.ext.ptr = v;
+ set_referenced(true);
+ }
+ else {
+ char* tmp = static_cast<char*>(zone().allocate_align(size, MSGPACK_ZONE_ALIGNOF(char)));
+ std::memcpy(tmp, v, size);
+ obj->via.ext.ptr = tmp;
+ }
+ obj->via.ext.size = static_cast<uint32_t>(size - 1);
+ return true;
+ }
+ bool start_array(uint32_t num_elements) {
+ if (num_elements > m_limit.array()) throw msgpack::array_size_overflow("array size overflow");
+ if (m_stack.size() > m_limit.depth()) throw msgpack::depth_size_overflow("depth size overflow");
+ msgpack::object* obj = m_stack.back();
+ obj->type = msgpack::type::ARRAY;
+ obj->via.array.size = num_elements;
+ if (num_elements == 0) {
+ obj->via.array.ptr = MSGPACK_NULLPTR;
+ }
+ else {
+ size_t size = num_elements*sizeof(msgpack::object);
+ if (size / sizeof(msgpack::object) != num_elements) {
+ throw msgpack::array_size_overflow("array size overflow");
+ }
+ obj->via.array.ptr =
+ static_cast<msgpack::object*>(m_zone->allocate_align(size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
+ }
+ m_stack.push_back(obj->via.array.ptr);
+ return true;
+ }
+ bool start_array_item() {
+ return true;
+ }
+ bool end_array_item() {
+ ++m_stack.back();
+ return true;
+ }
+ bool end_array() {
+ m_stack.pop_back();
+ return true;
+ }
+ bool start_map(uint32_t num_kv_pairs) {
+ if (num_kv_pairs > m_limit.map()) throw msgpack::map_size_overflow("map size overflow");
+ if (m_stack.size() > m_limit.depth()) throw msgpack::depth_size_overflow("depth size overflow");
+ msgpack::object* obj = m_stack.back();
+ obj->type = msgpack::type::MAP;
+ obj->via.map.size = num_kv_pairs;
+ if (num_kv_pairs == 0) {
+ obj->via.map.ptr = MSGPACK_NULLPTR;
+ }
+ else {
+ size_t size = num_kv_pairs*sizeof(msgpack::object_kv);
+ if (size / sizeof(msgpack::object_kv) != num_kv_pairs) {
+ throw msgpack::map_size_overflow("map size overflow");
+ }
+ obj->via.map.ptr =
+ static_cast<msgpack::object_kv*>(m_zone->allocate_align(size, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
+ }
+ m_stack.push_back(reinterpret_cast<msgpack::object*>(obj->via.map.ptr));
+ return true;
+ }
+ bool start_map_key() {
+ return true;
+ }
+ bool end_map_key() {
+ ++m_stack.back();
+ return true;
+ }
+ bool start_map_value() {
+ return true;
+ }
+ bool end_map_value() {
+ ++m_stack.back();
+ return true;
+ }
+ bool end_map() {
+ m_stack.pop_back();
+ return true;
+ }
+ void parse_error(size_t /*parsed_offset*/, size_t /*error_offset*/) {
+ throw msgpack::parse_error("parse error");
+ }
+ void insufficient_bytes(size_t /*parsed_offset*/, size_t /*error_offset*/) {
+ throw msgpack::insufficient_bytes("insufficient bytes");
+ }
+private:
+public:
+ unpack_reference_func m_func;
+ void* m_user_data;
+ unpack_limit m_limit;
+ msgpack::object m_obj;
+ std::vector<msgpack::object*> m_stack;
+ msgpack::zone* m_zone;
+ bool m_referenced;
+};
+
+} // detail
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V2_CREATE_OBJECT_VISITOR_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/create_object_visitor_decl.hpp b/third_party/msgpack/include/msgpack/v2/create_object_visitor_decl.hpp
new file mode 100644
index 0000000000..c6dc84f85a
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/create_object_visitor_decl.hpp
@@ -0,0 +1,33 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2017 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_CREATE_OBJECT_VISITOR_DECL_HPP
+#define MSGPACK_V2_CREATE_OBJECT_VISITOR_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+namespace detail {
+
+class create_object_visitor;
+
+} // detail
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V2_CREATE_OBJECT_VISITOR_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/detail/cpp03_zone_decl.hpp b/third_party/msgpack/include/msgpack/v2/detail/cpp03_zone_decl.hpp
new file mode 100644
index 0000000000..909df069da
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/detail/cpp03_zone_decl.hpp
@@ -0,0 +1,31 @@
+//
+// MessagePack for C++ memory pool
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_CPP03_ZONE_DECL_HPP
+#define MSGPACK_V2_CPP03_ZONE_DECL_HPP
+
+#include "msgpack/v1/detail/cpp03_zone_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+using v1::zone;
+
+using v1::aligned_size;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V2_CPP03_ZONE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/detail/cpp11_zone_decl.hpp b/third_party/msgpack/include/msgpack/v2/detail/cpp11_zone_decl.hpp
new file mode 100644
index 0000000000..5e4b991fec
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/detail/cpp11_zone_decl.hpp
@@ -0,0 +1,31 @@
+//
+// MessagePack for C++ memory pool
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_CPP11_ZONE_DECL_HPP
+#define MSGPACK_V2_CPP11_ZONE_DECL_HPP
+
+#include "msgpack/v1/zone_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+using v1::zone;
+
+using v1::aligned_size;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V2_CPP11_ZONE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/fbuffer_decl.hpp b/third_party/msgpack/include/msgpack/v2/fbuffer_decl.hpp
new file mode 100644
index 0000000000..ee79f9b4cf
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/fbuffer_decl.hpp
@@ -0,0 +1,32 @@
+//
+// MessagePack for C++ FILE* buffer adaptor
+//
+// Copyright (C) 2013-2016 Vladimir Volodko and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_FBUFFER_DECL_HPP
+#define MSGPACK_V2_FBUFFER_DECL_HPP
+
+#include "msgpack/v1/fbuffer_decl.hpp"
+
+#include <cstdio>
+#include <stdexcept>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+using v1::fbuffer;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V2_FBUFFER_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/iterator_decl.hpp b/third_party/msgpack/include/msgpack/v2/iterator_decl.hpp
new file mode 100644
index 0000000000..c03a3939ec
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/iterator_decl.hpp
@@ -0,0 +1,33 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_V2_ITERATOR_DECL_HPP
+#define MSGPACK_V2_ITERATOR_DECL_HPP
+#if !defined(MSGPACK_USE_CPP03)
+
+#include <msgpack/v1/iterator_decl.hpp>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+using v1::begin;
+using v1::end;
+
+/// @cond
+}
+/// @endcond
+
+}
+
+#endif // !defined(MSGPACK_USE_CPP03)
+#endif // MSGPACK_V2_ITERATOR_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/meta_decl.hpp b/third_party/msgpack/include/msgpack/v2/meta_decl.hpp
new file mode 100644
index 0000000000..885bdb7b56
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/meta_decl.hpp
@@ -0,0 +1,50 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015-2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_V2_META_DECL_HPP
+#define MSGPACK_V2_META_DECL_HPP
+
+#if !defined(MSGPACK_USE_CPP03)
+
+#include "msgpack/v1/meta_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+namespace detail {
+
+using v1::detail::bool_pack;
+
+using v1::detail::all_of_imp;
+
+using v1::detail::any_of_imp;
+
+} // namespace detail
+
+using v1::all_of;
+
+using v1::any_of;
+
+using v1::seq;
+
+using v1::gen_seq;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // !defined(MSGPACK_USE_CPP03)
+
+#endif // MSGPACK_V2_META_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/null_visitor.hpp b/third_party/msgpack/include/msgpack/v2/null_visitor.hpp
new file mode 100644
index 0000000000..c9a1fdb9ae
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/null_visitor.hpp
@@ -0,0 +1,96 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2017 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_NULL_VISITOR_HPP
+#define MSGPACK_V2_NULL_VISITOR_HPP
+
+#include "msgpack/v2/null_visitor_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+struct null_visitor {
+ bool visit_nil() {
+ return true;
+ }
+ bool visit_boolean(bool /*v*/) {
+ return true;
+ }
+ bool visit_positive_integer(uint64_t /*v*/) {
+ return true;
+ }
+ bool visit_negative_integer(int64_t /*v*/) {
+ return true;
+ }
+ bool visit_float32(float /*v*/) {
+ return true;
+ }
+ bool visit_float64(double /*v*/) {
+ return true;
+ }
+ bool visit_str(const char* /*v*/, uint32_t /*size*/) {
+ return true;
+ }
+ bool visit_bin(const char* /*v*/, uint32_t /*size*/) {
+ return true;
+ }
+ bool visit_ext(const char* /*v*/, uint32_t /*size*/) {
+ return true;
+ }
+ bool start_array(uint32_t /*num_elements*/) {
+ return true;
+ }
+ bool start_array_item() {
+ return true;
+ }
+ bool end_array_item() {
+ return true;
+ }
+ bool end_array() {
+ return true;
+ }
+ bool start_map(uint32_t /*num_kv_pairs*/) {
+ return true;
+ }
+ bool start_map_key() {
+ return true;
+ }
+ bool end_map_key() {
+ return true;
+ }
+ bool start_map_value() {
+ return true;
+ }
+ bool end_map_value() {
+ return true;
+ }
+ bool end_map() {
+ return true;
+ }
+ void parse_error(size_t /*parsed_offset*/, size_t /*error_offset*/) {
+ }
+ void insufficient_bytes(size_t /*parsed_offset*/, size_t /*error_offset*/) {
+ }
+ bool referenced() const {
+ return false;
+ }
+ void set_referenced(bool /*referenced*/) {
+ }
+};
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V2_NULL_VISITOR_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/null_visitor_decl.hpp b/third_party/msgpack/include/msgpack/v2/null_visitor_decl.hpp
new file mode 100644
index 0000000000..58c52a0150
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/null_visitor_decl.hpp
@@ -0,0 +1,29 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_NULL_VISITOR_DECL_HPP
+#define MSGPACK_V2_NULL_VISITOR_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+struct null_visitor;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V2_NULL_VISITOR_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/object.hpp b/third_party/msgpack/include/msgpack/v2/object.hpp
new file mode 100644
index 0000000000..f267fe12b8
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/object.hpp
@@ -0,0 +1,33 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_OBJECT_HPP
+#define MSGPACK_V2_OBJECT_HPP
+
+#include "msgpack/object_fwd.hpp"
+
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+inline object::implicit_type object::convert() const
+{
+ return v1::object::convert();
+}
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V2_OBJECT_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/object_decl.hpp b/third_party/msgpack/include/msgpack/v2/object_decl.hpp
new file mode 100644
index 0000000000..4a357c1c5d
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/object_decl.hpp
@@ -0,0 +1,53 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_OBJECT_DECL_HPP
+#define MSGPACK_V2_OBJECT_DECL_HPP
+
+#include "msgpack/v1/object_decl.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+using v1::object_handle;
+
+namespace detail {
+
+using v1::detail::add_ext_type_size;
+
+} // namespace detail
+
+using v1::aligned_zone_size;
+
+using v1::clone;
+
+namespace detail {
+
+using v1::detail::packer_serializer;
+
+} // namespace detail
+
+using v1::object_parser;
+using v1::object_pack_visitor;
+using v1::object_stringize_visitor;
+
+using v1::operator==;
+using v1::operator!=;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V2_OBJECT_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/object_fwd.hpp b/third_party/msgpack/include/msgpack/v2/object_fwd.hpp
new file mode 100644
index 0000000000..9c44aae609
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/object_fwd.hpp
@@ -0,0 +1,109 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_V2_OBJECT_FWD_HPP
+#define MSGPACK_V2_OBJECT_FWD_HPP
+
+#include "msgpack/v2/object_fwd_decl.hpp"
+#include "msgpack/object_fwd.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+struct object : v1::object {
+ object() {}
+ object(v1::object const& o):v1::object(o) {}
+ /// Construct object from T
+ /**
+ * If `v` is the type that is corresponding to MessegePack format str, bin, ext, array, or map,
+ * you need to call `object(const T& v, msgpack::zone& z)` instead of this constructor.
+ *
+ * @tparam T The type of `v`.
+ * @param v The value you want to convert.
+ */
+ template <typename T>
+ explicit object(const T& v) {
+ *this << v;
+ }
+
+ /// Construct object from T
+ /**
+ * The object is constructed on the zone `z`.
+ * See https://github.com/msgpack/msgpack-c/wiki/v1_1_cpp_object
+ *
+ * @tparam T The type of `v`.
+ * @param v The value you want to convert.
+ * @param z The zone that is used by the object.
+ */
+ template <typename T>
+ object(const T& v, msgpack::zone& z):v1::object(v, z) {}
+
+public:
+ /// Convert the object
+ /**
+ * If the object can't be converted to T, msgpack::type_error would be thrown.
+ * @tparam T The type of v.
+ * @param v The value you want to get. `v` is output parameter. `v` is overwritten by converted value from the object.
+ * @return The reference of `v`.
+ */
+ template <typename T>
+ T& convert(T& v) const { return v1::object::convert(v); }
+
+ using v1::object::with_zone;
+ implicit_type convert() const;
+};
+
+#if !defined(MSGPACK_USE_CPP03)
+
+namespace adaptor {
+
+// If v1 has as specialization for T, then dispatch v1::adaptor::as<T>.
+// So I call v1::has_as<T> meta function intentionally.
+template <typename T>
+struct as<T, typename std::enable_if<v1::has_as<T>::value>::type> : v1::adaptor::as<T> {
+};
+
+} // namespace adaptor
+
+template <typename T>
+struct has_as {
+private:
+ template <typename U>
+ static auto check(U*) ->
+ typename std::enable_if<
+ // check v2 specialization
+ std::is_same<
+ decltype(adaptor::as<U>()(std::declval<msgpack::object>())),
+ U
+ >::value
+ ||
+ // check v1 specialization
+ v1::has_as<U>::value,
+ std::true_type
+ >::type;
+ template <typename...>
+ static std::false_type check(...);
+public:
+ using type = decltype(check<T>(MSGPACK_NULLPTR));
+ static constexpr bool value = type::value;
+};
+
+#endif // !defined(MSGPACK_USE_CPP03)
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V2_OBJECT_FWD_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/object_fwd_decl.hpp b/third_party/msgpack/include/msgpack/v2/object_fwd_decl.hpp
new file mode 100644
index 0000000000..64246e51bf
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/object_fwd_decl.hpp
@@ -0,0 +1,75 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_V2_OBJECT_FWD_DECL_HPP
+#define MSGPACK_V2_OBJECT_FWD_DECL_HPP
+
+#include "msgpack/v1/object_fwd_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+namespace type {
+using v1::type::object_type;
+using v1::type::NIL;
+using v1::type::BOOLEAN;
+using v1::type::POSITIVE_INTEGER;
+using v1::type::NEGATIVE_INTEGER;
+using v1::type::FLOAT32;
+using v1::type::FLOAT64;
+using v1::type::FLOAT;
+#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
+using v1::type::DOUBLE;
+#endif // MSGPACK_USE_LEGACY_NAME_AS_FLOAT
+using v1::type::STR;
+using v1::type::BIN;
+using v1::type::ARRAY;
+using v1::type::MAP;
+using v1::type::EXT;
+} // namespace type
+
+struct object;
+
+using v1::object_kv;
+
+using v1::object_array;
+using v1::object_map;
+
+using v1::object_str;
+using v1::object_bin;
+using v1::object_ext;
+
+using v1::type_error;
+
+
+#if !defined(MSGPACK_USE_CPP03)
+
+namespace adaptor {
+
+template <typename T, typename Enabler = void>
+struct as;
+
+} // namespace adaptor
+
+template <typename T>
+struct has_as;
+
+#endif // !defined(MSGPACK_USE_CPP03)
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V2_OBJECT_FWD_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/pack_decl.hpp b/third_party/msgpack/include/msgpack/v2/pack_decl.hpp
new file mode 100644
index 0000000000..8f668dd0a1
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/pack_decl.hpp
@@ -0,0 +1,56 @@
+//
+// MessagePack for C++ serializing routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_PACK_DECL_HPP
+#define MSGPACK_V2_PACK_DECL_HPP
+
+#include "msgpack/v1/pack_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+using v1::packer;
+
+using v1::pack;
+
+
+#if MSGPACK_ENDIAN_LITTLE_BYTE
+
+using v1::take8_8;
+
+using v1::take8_16;
+
+using v1::take8_32;
+
+using v1::take8_64;
+
+#elif MSGPACK_ENDIAN_BIG_BYTE
+
+using v1::take8_8;
+
+using v1::take8_16;
+
+using v1::take8_32;
+
+using v1::take8_64;
+
+#else
+#error msgpack-c supports only big endian and little endian
+#endif
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V2_PACK_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/parse.hpp b/third_party/msgpack/include/msgpack/v2/parse.hpp
new file mode 100644
index 0000000000..becbed4569
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/parse.hpp
@@ -0,0 +1,1072 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2016-2017 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_PARSE_HPP
+#define MSGPACK_V2_PARSE_HPP
+
+#if MSGPACK_DEFAULT_API_VERSION >= 2
+
+#include <cstddef>
+
+#include "msgpack/unpack_define.h"
+#include "msgpack/parse_return.hpp"
+#include "msgpack/unpack_exception.hpp"
+#include "msgpack/unpack_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+namespace detail {
+
+using v1::detail::fix_tag;
+using v1::detail::value;
+using v1::detail::load;
+
+template <typename VisitorHolder>
+class context {
+public:
+ context()
+ :m_trail(0), m_cs(MSGPACK_CS_HEADER)
+ {
+ }
+
+ void init()
+ {
+ m_cs = MSGPACK_CS_HEADER;
+ m_trail = 0;
+ m_stack.clear();
+ holder().visitor().init();
+ }
+
+ parse_return execute(const char* data, std::size_t len, std::size_t& off);
+
+private:
+ template <typename T>
+ static uint32_t next_cs(T p)
+ {
+ return static_cast<uint32_t>(*p) & 0x1f;
+ }
+
+ VisitorHolder& holder() {
+ return static_cast<VisitorHolder&>(*this);
+ }
+
+ template <typename T, typename StartVisitor, typename EndVisitor>
+ parse_return start_aggregate(
+ StartVisitor const& sv,
+ EndVisitor const& ev,
+ const char* load_pos,
+ std::size_t& off) {
+ typename value<T>::type size;
+ load<T>(size, load_pos);
+ ++m_current;
+ if (size == 0) {
+ if (!sv(size)) {
+ off = m_current - m_start;
+ return PARSE_STOP_VISITOR;
+ }
+ if (!ev()) {
+ off = m_current - m_start;
+ return PARSE_STOP_VISITOR;
+ }
+ parse_return ret = m_stack.consume(holder());
+ if (ret != PARSE_CONTINUE) {
+ off = m_current - m_start;
+ return ret;
+ }
+ }
+ else {
+ if (!sv(size)) {
+ off = m_current - m_start;
+ return PARSE_STOP_VISITOR;
+ }
+ parse_return ret = m_stack.push(holder(), sv.type(), static_cast<uint32_t>(size));
+ if (ret != PARSE_CONTINUE) {
+ off = m_current - m_start;
+ return ret;
+ }
+ }
+ m_cs = MSGPACK_CS_HEADER;
+ return PARSE_CONTINUE;
+ }
+
+ parse_return after_visit_proc(bool visit_result, std::size_t& off) {
+ ++m_current;
+ if (!visit_result) {
+ off = m_current - m_start;
+ return PARSE_STOP_VISITOR;
+ }
+ parse_return ret = m_stack.consume(holder());
+ if (ret != PARSE_CONTINUE) {
+ off = m_current - m_start;
+ }
+ m_cs = MSGPACK_CS_HEADER;
+ return ret;
+ }
+
+ struct array_sv {
+ array_sv(VisitorHolder& visitor_holder):m_visitor_holder(visitor_holder) {}
+ bool operator()(uint32_t size) const {
+ return m_visitor_holder.visitor().start_array(size);
+ }
+ msgpack_container_type type() const { return MSGPACK_CT_ARRAY_ITEM; }
+ private:
+ VisitorHolder& m_visitor_holder;
+ };
+ struct array_ev {
+ array_ev(VisitorHolder& visitor_holder):m_visitor_holder(visitor_holder) {}
+ bool operator()() const {
+ return m_visitor_holder.visitor().end_array();
+ }
+ private:
+ VisitorHolder& m_visitor_holder;
+ };
+ struct map_sv {
+ map_sv(VisitorHolder& visitor_holder):m_visitor_holder(visitor_holder) {}
+ bool operator()(uint32_t size) const {
+ return m_visitor_holder.visitor().start_map(size);
+ }
+ msgpack_container_type type() const { return MSGPACK_CT_MAP_KEY; }
+ private:
+ VisitorHolder& m_visitor_holder;
+ };
+ struct map_ev {
+ map_ev(VisitorHolder& visitor_holder):m_visitor_holder(visitor_holder) {}
+ bool operator()() const {
+ return m_visitor_holder.visitor().end_map();
+ }
+ private:
+ VisitorHolder& m_visitor_holder;
+ };
+
+ struct unpack_stack {
+ struct stack_elem {
+ stack_elem(msgpack_container_type type, uint32_t rest):m_type(type), m_rest(rest) {}
+ msgpack_container_type m_type;
+ uint32_t m_rest;
+ };
+ unpack_stack() {
+ m_stack.reserve(MSGPACK_EMBED_STACK_SIZE);
+ }
+ parse_return push(VisitorHolder& visitor_holder, msgpack_container_type type, uint32_t rest) {
+ m_stack.push_back(stack_elem(type, rest));
+ switch (type) {
+ case MSGPACK_CT_ARRAY_ITEM:
+ return visitor_holder.visitor().start_array_item() ? PARSE_CONTINUE : PARSE_STOP_VISITOR;
+ case MSGPACK_CT_MAP_KEY:
+ return visitor_holder.visitor().start_map_key() ? PARSE_CONTINUE : PARSE_STOP_VISITOR;
+ case MSGPACK_CT_MAP_VALUE:
+ assert(0);
+ return PARSE_STOP_VISITOR;
+ }
+ assert(0);
+ return PARSE_STOP_VISITOR;
+ }
+ parse_return consume(VisitorHolder& visitor_holder) {
+ while (!m_stack.empty()) {
+ stack_elem& e = m_stack.back();
+ switch (e.m_type) {
+ case MSGPACK_CT_ARRAY_ITEM:
+ if (!visitor_holder.visitor().end_array_item()) return PARSE_STOP_VISITOR;
+ if (--e.m_rest == 0) {
+ m_stack.pop_back();
+ if (!visitor_holder.visitor().end_array()) return PARSE_STOP_VISITOR;
+ }
+ else {
+ if (!visitor_holder.visitor().start_array_item()) return PARSE_STOP_VISITOR;
+ return PARSE_CONTINUE;
+ }
+ break;
+ case MSGPACK_CT_MAP_KEY:
+ if (!visitor_holder.visitor().end_map_key()) return PARSE_STOP_VISITOR;
+ if (!visitor_holder.visitor().start_map_value()) return PARSE_STOP_VISITOR;
+ e.m_type = MSGPACK_CT_MAP_VALUE;
+ return PARSE_CONTINUE;
+ case MSGPACK_CT_MAP_VALUE:
+ if (!visitor_holder.visitor().end_map_value()) return PARSE_STOP_VISITOR;
+ if (--e.m_rest == 0) {
+ m_stack.pop_back();
+ if (!visitor_holder.visitor().end_map()) return PARSE_STOP_VISITOR;
+ }
+ else {
+ e.m_type = MSGPACK_CT_MAP_KEY;
+ if (!visitor_holder.visitor().start_map_key()) return PARSE_STOP_VISITOR;
+ return PARSE_CONTINUE;
+ }
+ break;
+ }
+ }
+ return PARSE_SUCCESS;
+ }
+ bool empty() const { return m_stack.empty(); }
+ void clear() { m_stack.clear(); }
+ private:
+ std::vector<stack_elem> m_stack;
+ };
+
+ char const* m_start;
+ char const* m_current;
+
+ std::size_t m_trail;
+ uint32_t m_cs;
+ uint32_t m_num_elements;
+ unpack_stack m_stack;
+};
+
+template <std::size_t N>
+inline void check_ext_size(std::size_t /*size*/) {
+}
+
+template <>
+inline void check_ext_size<4>(std::size_t size) {
+ if (size == 0xffffffff) throw msgpack::ext_size_overflow("ext size overflow");
+}
+
+template <typename VisitorHolder>
+inline parse_return context<VisitorHolder>::execute(const char* data, std::size_t len, std::size_t& off)
+{
+ assert(len >= off);
+
+ m_start = data;
+ m_current = data + off;
+ const char* const pe = data + len;
+ const char* n = MSGPACK_NULLPTR;
+
+ msgpack::object obj;
+
+ if(m_current == pe) {
+ off = m_current - m_start;
+ return PARSE_CONTINUE;
+ }
+ bool fixed_trail_again = false;
+ do {
+ if (m_cs == MSGPACK_CS_HEADER) {
+ fixed_trail_again = false;
+ int selector = *reinterpret_cast<const unsigned char*>(m_current);
+ if (0x00 <= selector && selector <= 0x7f) { // Positive Fixnum
+ uint8_t tmp = *reinterpret_cast<const uint8_t*>(m_current);
+ bool visret = holder().visitor().visit_positive_integer(tmp);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } else if(0xe0 <= selector && selector <= 0xff) { // Negative Fixnum
+ int8_t tmp = *reinterpret_cast<const int8_t*>(m_current);
+ bool visret = holder().visitor().visit_negative_integer(tmp);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } else if (0xc4 <= selector && selector <= 0xdf) {
+ const uint32_t trail[] = {
+ 1, // bin 8 0xc4
+ 2, // bin 16 0xc5
+ 4, // bin 32 0xc6
+ 1, // ext 8 0xc7
+ 2, // ext 16 0xc8
+ 4, // ext 32 0xc9
+ 4, // float 32 0xca
+ 8, // float 64 0xcb
+ 1, // uint 8 0xcc
+ 2, // uint 16 0xcd
+ 4, // uint 32 0xce
+ 8, // uint 64 0xcf
+ 1, // int 8 0xd0
+ 2, // int 16 0xd1
+ 4, // int 32 0xd2
+ 8, // int 64 0xd3
+ 2, // fixext 1 0xd4
+ 3, // fixext 2 0xd5
+ 5, // fixext 4 0xd6
+ 9, // fixext 8 0xd7
+ 17,// fixext 16 0xd8
+ 1, // str 8 0xd9
+ 2, // str 16 0xda
+ 4, // str 32 0xdb
+ 2, // array 16 0xdc
+ 4, // array 32 0xdd
+ 2, // map 16 0xde
+ 4, // map 32 0xdf
+ };
+ m_trail = trail[selector - 0xc4];
+ m_cs = next_cs(m_current);
+ fixed_trail_again = true;
+ } else if(0xa0 <= selector && selector <= 0xbf) { // FixStr
+ m_trail = static_cast<uint32_t>(*m_current) & 0x1f;
+ if(m_trail == 0) {
+ bool visret = holder().visitor().visit_str(n, static_cast<uint32_t>(m_trail));
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ }
+ else {
+ m_cs = MSGPACK_ACS_STR_VALUE;
+ fixed_trail_again = true;
+ }
+ } else if(0x90 <= selector && selector <= 0x9f) { // FixArray
+ parse_return ret = start_aggregate<fix_tag>(array_sv(holder()), array_ev(holder()), m_current, off);
+ if (ret != PARSE_CONTINUE) return ret;
+ } else if(0x80 <= selector && selector <= 0x8f) { // FixMap
+ parse_return ret = start_aggregate<fix_tag>(map_sv(holder()), map_ev(holder()), m_current, off);
+ if (ret != PARSE_CONTINUE) return ret;
+ } else if(selector == 0xc2) { // false
+ bool visret = holder().visitor().visit_boolean(false);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } else if(selector == 0xc3) { // true
+ bool visret = holder().visitor().visit_boolean(true);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } else if(selector == 0xc0) { // nil
+ bool visret = holder().visitor().visit_nil();
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } else {
+ off = m_current - m_start;
+ holder().visitor().parse_error(off - 1, off);
+ return PARSE_PARSE_ERROR;
+ }
+ // end MSGPACK_CS_HEADER
+ }
+ if (m_cs != MSGPACK_CS_HEADER || fixed_trail_again) {
+ if (fixed_trail_again) {
+ ++m_current;
+ fixed_trail_again = false;
+ }
+ if(static_cast<std::size_t>(pe - m_current) < m_trail) {
+ off = m_current - m_start;
+ return PARSE_CONTINUE;
+ }
+ n = m_current;
+ m_current += m_trail - 1;
+ switch(m_cs) {
+ //case MSGPACK_CS_
+ //case MSGPACK_CS_
+ case MSGPACK_CS_FLOAT: {
+ union { uint32_t i; float f; } mem;
+ load<uint32_t>(mem.i, n);
+ bool visret = holder().visitor().visit_float32(mem.f);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_DOUBLE: {
+ union { uint64_t i; double f; } mem;
+ load<uint64_t>(mem.i, n);
+#if defined(TARGET_OS_IPHONE)
+ // ok
+#elif defined(__arm__) && !(__ARM_EABI__) // arm-oabi
+ // https://github.com/msgpack/msgpack-perl/pull/1
+ mem.i = (mem.i & 0xFFFFFFFFUL) << 32UL | (mem.i >> 32UL);
+#endif
+ bool visret = holder().visitor().visit_float64(mem.f);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_UINT_8: {
+ uint8_t tmp;
+ load<uint8_t>(tmp, n);
+ bool visret = holder().visitor().visit_positive_integer(tmp);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_UINT_16: {
+ uint16_t tmp;
+ load<uint16_t>(tmp, n);
+ bool visret = holder().visitor().visit_positive_integer(tmp);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_UINT_32: {
+ uint32_t tmp;
+ load<uint32_t>(tmp, n);
+ bool visret = holder().visitor().visit_positive_integer(tmp);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_UINT_64: {
+ uint64_t tmp;
+ load<uint64_t>(tmp, n);
+ bool visret = holder().visitor().visit_positive_integer(tmp);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_INT_8: {
+ int8_t tmp;
+ load<int8_t>(tmp, n);
+ bool visret = holder().visitor().visit_negative_integer(tmp);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_INT_16: {
+ int16_t tmp;
+ load<int16_t>(tmp, n);
+ bool visret = holder().visitor().visit_negative_integer(tmp);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_INT_32: {
+ int32_t tmp;
+ load<int32_t>(tmp, n);
+ bool visret = holder().visitor().visit_negative_integer(tmp);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_INT_64: {
+ int64_t tmp;
+ load<int64_t>(tmp, n);
+ bool visret = holder().visitor().visit_negative_integer(tmp);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_FIXEXT_1: {
+ bool visret = holder().visitor().visit_ext(n, 1+1);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_FIXEXT_2: {
+ bool visret = holder().visitor().visit_ext(n, 2+1);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_FIXEXT_4: {
+ bool visret = holder().visitor().visit_ext(n, 4+1);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_FIXEXT_8: {
+ bool visret = holder().visitor().visit_ext(n, 8+1);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_FIXEXT_16: {
+ bool visret = holder().visitor().visit_ext(n, 16+1);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_STR_8: {
+ uint8_t tmp;
+ load<uint8_t>(tmp, n);
+ m_trail = tmp;
+ if(m_trail == 0) {
+ bool visret = holder().visitor().visit_str(n, static_cast<uint32_t>(m_trail));
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ }
+ else {
+ m_cs = MSGPACK_ACS_STR_VALUE;
+ fixed_trail_again = true;
+ }
+ } break;
+ case MSGPACK_CS_BIN_8: {
+ uint8_t tmp;
+ load<uint8_t>(tmp, n);
+ m_trail = tmp;
+ if(m_trail == 0) {
+ bool visret = holder().visitor().visit_bin(n, static_cast<uint32_t>(m_trail));
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ }
+ else {
+ m_cs = MSGPACK_ACS_BIN_VALUE;
+ fixed_trail_again = true;
+ }
+ } break;
+ case MSGPACK_CS_EXT_8: {
+ uint8_t tmp;
+ load<uint8_t>(tmp, n);
+ m_trail = tmp + 1;
+ if(m_trail == 0) {
+ bool visret = holder().visitor().visit_ext(n, static_cast<uint32_t>(m_trail));
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ }
+ else {
+ m_cs = MSGPACK_ACS_EXT_VALUE;
+ fixed_trail_again = true;
+ }
+ } break;
+ case MSGPACK_CS_STR_16: {
+ uint16_t tmp;
+ load<uint16_t>(tmp, n);
+ m_trail = tmp;
+ if(m_trail == 0) {
+ bool visret = holder().visitor().visit_str(n, static_cast<uint32_t>(m_trail));
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ }
+ else {
+ m_cs = MSGPACK_ACS_STR_VALUE;
+ fixed_trail_again = true;
+ }
+ } break;
+ case MSGPACK_CS_BIN_16: {
+ uint16_t tmp;
+ load<uint16_t>(tmp, n);
+ m_trail = tmp;
+ if(m_trail == 0) {
+ bool visret = holder().visitor().visit_bin(n, static_cast<uint32_t>(m_trail));
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ }
+ else {
+ m_cs = MSGPACK_ACS_BIN_VALUE;
+ fixed_trail_again = true;
+ }
+ } break;
+ case MSGPACK_CS_EXT_16: {
+ uint16_t tmp;
+ load<uint16_t>(tmp, n);
+ m_trail = tmp + 1;
+ if(m_trail == 0) {
+ bool visret = holder().visitor().visit_ext(n, static_cast<uint32_t>(m_trail));
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ }
+ else {
+ m_cs = MSGPACK_ACS_EXT_VALUE;
+ fixed_trail_again = true;
+ }
+ } break;
+ case MSGPACK_CS_STR_32: {
+ uint32_t tmp;
+ load<uint32_t>(tmp, n);
+ m_trail = tmp;
+ if(m_trail == 0) {
+ bool visret = holder().visitor().visit_str(n, static_cast<uint32_t>(m_trail));
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ }
+ else {
+ m_cs = MSGPACK_ACS_STR_VALUE;
+ fixed_trail_again = true;
+ }
+ } break;
+ case MSGPACK_CS_BIN_32: {
+ uint32_t tmp;
+ load<uint32_t>(tmp, n);
+ m_trail = tmp;
+ if(m_trail == 0) {
+ bool visret = holder().visitor().visit_bin(n, static_cast<uint32_t>(m_trail));
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ }
+ else {
+ m_cs = MSGPACK_ACS_BIN_VALUE;
+ fixed_trail_again = true;
+ }
+ } break;
+ case MSGPACK_CS_EXT_32: {
+ uint32_t tmp;
+ load<uint32_t>(tmp, n);
+ check_ext_size<sizeof(std::size_t)>(tmp);
+ m_trail = tmp;
+ ++m_trail;
+ if(m_trail == 0) {
+ bool visret = holder().visitor().visit_ext(n, static_cast<uint32_t>(m_trail));
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ }
+ else {
+ m_cs = MSGPACK_ACS_EXT_VALUE;
+ fixed_trail_again = true;
+ }
+ } break;
+ case MSGPACK_ACS_STR_VALUE: {
+ bool visret = holder().visitor().visit_str(n, static_cast<uint32_t>(m_trail));
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_ACS_BIN_VALUE: {
+ bool visret = holder().visitor().visit_bin(n, static_cast<uint32_t>(m_trail));
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_ACS_EXT_VALUE: {
+ bool visret = holder().visitor().visit_ext(n, static_cast<uint32_t>(m_trail));
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_ARRAY_16: {
+ parse_return ret = start_aggregate<uint16_t>(array_sv(holder()), array_ev(holder()), n, off);
+ if (ret != PARSE_CONTINUE) return ret;
+
+ } break;
+ case MSGPACK_CS_ARRAY_32: {
+ parse_return ret = start_aggregate<uint32_t>(array_sv(holder()), array_ev(holder()), n, off);
+ if (ret != PARSE_CONTINUE) return ret;
+ } break;
+ case MSGPACK_CS_MAP_16: {
+ parse_return ret = start_aggregate<uint16_t>(map_sv(holder()), map_ev(holder()), n, off);
+ if (ret != PARSE_CONTINUE) return ret;
+ } break;
+ case MSGPACK_CS_MAP_32: {
+ parse_return ret = start_aggregate<uint32_t>(map_sv(holder()), map_ev(holder()), n, off);
+ if (ret != PARSE_CONTINUE) return ret;
+ } break;
+ default:
+ off = m_current - m_start;
+ holder().visitor().parse_error(n - m_start - 1, n - m_start);
+ return PARSE_PARSE_ERROR;
+ }
+ }
+ } while(m_current != pe);
+
+ off = m_current - m_start;
+ return PARSE_CONTINUE;
+}
+
+} // detail
+
+
+/// Parsing class for a stream deserialization.
+
+template <typename VisitorHolder, typename ReferencedBufferHook>
+class parser : public detail::context<VisitorHolder> {
+ typedef parser<VisitorHolder, ReferencedBufferHook> this_type;
+ typedef detail::context<VisitorHolder> context_type;
+public:
+ /// Constructor
+ /**
+ * @param hook The handler that is called when buffer is allocated internally.
+ * `hook` should be callable with char* parameter.
+ * `parser` gives a chance to prepare finalizer.
+ * See https://github.com/msgpack/msgpack-c/wiki/v2_0_cpp_visitor#parse-api
+ * @param initial_buffer_size The memory size to allocate when unpacker is constructed.
+ *
+ */
+ parser(ReferencedBufferHook& hook,
+ std::size_t initial_buffer_size = MSGPACK_UNPACKER_INIT_BUFFER_SIZE);
+
+#if !defined(MSGPACK_USE_CPP03)
+ parser(this_type&& other);
+ this_type& operator=(this_type&& other);
+#endif // !defined(MSGPACK_USE_CPP03)
+
+ ~parser();
+
+public:
+ /// Reserve a buffer memory.
+ /**
+ * @param size The size of allocating memory.
+ *
+ * After returning this function, buffer_capacity() returns at least 'size'.
+ * See:
+ * https://github.com/msgpack/msgpack-c/wiki/v1_1_cpp_unpacker#msgpack-controls-a-buffer
+ */
+ void reserve_buffer(std::size_t size = MSGPACK_UNPACKER_RESERVE_SIZE);
+
+ /// Get buffer pointer.
+ /**
+ * You need to care about the memory is enable between buffer() and buffer() + buffer_capacity()
+ * See:
+ * https://github.com/msgpack/msgpack-c/wiki/v1_1_cpp_unpacker#msgpack-controls-a-buffer
+ */
+ char* buffer();
+
+ /// Get buffer capacity.
+ /**
+ * @return The memory size that you can write.
+ *
+ * See:
+ * https://github.com/msgpack/msgpack-c/wiki/v1_1_cpp_unpacker#msgpack-controls-a-buffer
+ */
+ std::size_t buffer_capacity() const;
+
+ /// Notify a buffer consumed information to msgpack::unpacker.
+ /**
+ * @param size The size of memory that you consumed.
+ *
+ * After copying the data to the memory that is pointed by buffer(), you need to call the
+ * function to notify how many bytes are consumed. Then you can call next() functions.
+ *
+ * See:
+ * https://github.com/msgpack/msgpack-c/wiki/v1_1_cpp_unpacker#msgpack-controls-a-buffer
+ */
+ void buffer_consumed(std::size_t size);
+
+ /// Unpack one msgpack::object.
+ /**
+ *
+ *
+ * @return If one msgpack::object is unpacked, then return true, if msgpack::object is incomplete
+ * and additional data is required, then return false. If data format is invalid, throw
+ * msgpack::parse_error.
+ *
+ * See:
+ * https://github.com/msgpack/msgpack-c/wiki/v1_1_cpp_unpacker#msgpack-controls-a-buffer
+ */
+ bool next();
+
+ /// Get message size.
+ /**
+ * @return Returns parsed_size() + nonparsed_size()
+ */
+ std::size_t message_size() const;
+
+public:
+ /// Get parsed message size.
+ /**
+ * @return Parsed message size.
+ *
+ * This function is usable when non-MessagePack message follows after
+ * MessagePack message.
+ */
+ std::size_t parsed_size() const;
+
+ /// Get the address that is not parsed in the buffer.
+ /**
+ * @return Address of the buffer that is not parsed
+ *
+ * This function is usable when non-MessagePack message follows after
+ * MessagePack message.
+ */
+ char* nonparsed_buffer();
+
+ /// Get the size of the buffer that is not parsed.
+ /**
+ * @return Size of the buffer that is not parsed
+ *
+ * This function is usable when non-MessagePack message follows after
+ * MessagePack message.
+ */
+ std::size_t nonparsed_size() const;
+
+ /// Skip the specified size of non-parsed buffer.
+ /**
+ * @param size to skip
+ *
+ * Note that the `size' argument must be smaller than nonparsed_size().
+ * This function is usable when non-MessagePack message follows after
+ * MessagePack message.
+ */
+ void skip_nonparsed_buffer(std::size_t size);
+
+ /// Remove nonparsed buffer and reset the current position as a new start point.
+ /**
+ * This function is usable when non-MessagePack message follows after
+ * MessagePack message.
+ */
+ void remove_nonparsed_buffer();
+
+ void reset();
+
+protected:
+ char* get_raw_buffer() {
+ return m_buffer;
+ }
+private:
+ void expand_buffer(std::size_t size);
+ parse_return execute_imp();
+
+private:
+ char* m_buffer;
+ std::size_t m_used;
+ std::size_t m_free;
+ std::size_t m_off;
+ std::size_t m_parsed;
+ std::size_t m_initial_buffer_size;
+ ReferencedBufferHook& m_referenced_buffer_hook;
+
+#if defined(MSGPACK_USE_CPP03)
+private:
+ parser(const this_type&);
+ this_type& operator=(const this_type&);
+#else // defined(MSGPACK_USE_CPP03)
+public:
+ parser(const this_type&) = delete;
+ this_type& operator=(const this_type&) = delete;
+#endif // defined(MSGPACK_USE_CPP03)
+};
+
+template <typename VisitorHolder, typename ReferencedBufferHook>
+inline parser<VisitorHolder, ReferencedBufferHook>::parser(
+ ReferencedBufferHook& hook,
+ std::size_t initial_buffer_size)
+ :m_referenced_buffer_hook(hook)
+{
+ if(initial_buffer_size < COUNTER_SIZE) {
+ initial_buffer_size = COUNTER_SIZE;
+ }
+
+ char* buffer = static_cast<char*>(::malloc(initial_buffer_size));
+ if(!buffer) {
+ throw std::bad_alloc();
+ }
+
+ m_buffer = buffer;
+ m_used = COUNTER_SIZE;
+ m_free = initial_buffer_size - m_used;
+ m_off = COUNTER_SIZE;
+ m_parsed = 0;
+ m_initial_buffer_size = initial_buffer_size;
+
+ detail::init_count(m_buffer);
+}
+
+#if !defined(MSGPACK_USE_CPP03)
+// Move constructor and move assignment operator
+
+template <typename VisitorHolder, typename ReferencedBufferHook>
+inline parser<VisitorHolder, ReferencedBufferHook>::parser(this_type&& other)
+ :context_type(std::move(other)),
+ m_buffer(other.m_buffer),
+ m_used(other.m_used),
+ m_free(other.m_free),
+ m_off(other.m_off),
+ m_parsed(other.m_parsed),
+ m_initial_buffer_size(other.m_initial_buffer_size),
+ m_referenced_buffer_hook(other.m_referenced_buffer_hook) {
+ other.m_buffer = MSGPACK_NULLPTR;
+ other.m_used = 0;
+ other.m_free = 0;
+ other.m_off = 0;
+ other.m_parsed = 0;
+}
+
+template <typename VisitorHolder, typename ReferencedBufferHook>
+inline parser<VisitorHolder, ReferencedBufferHook>& parser<VisitorHolder, ReferencedBufferHook>::operator=(this_type&& other) {
+ this->~parser();
+ new (this) this_type(std::move(other));
+ return *this;
+}
+
+#endif // !defined(MSGPACK_USE_CPP03)
+
+
+template <typename VisitorHolder, typename ReferencedBufferHook>
+inline parser<VisitorHolder, ReferencedBufferHook>::~parser()
+{
+ // These checks are required for move operations.
+ if (m_buffer) detail::decr_count(m_buffer);
+}
+
+
+template <typename VisitorHolder, typename ReferencedBufferHook>
+inline void parser<VisitorHolder, ReferencedBufferHook>::reserve_buffer(std::size_t size)
+{
+ if(m_free >= size) return;
+ expand_buffer(size);
+}
+
+template <typename VisitorHolder, typename ReferencedBufferHook>
+inline void parser<VisitorHolder, ReferencedBufferHook>::expand_buffer(std::size_t size)
+{
+ if(m_used == m_off && detail::get_count(m_buffer) == 1
+ && !static_cast<VisitorHolder&>(*this).visitor().referenced()) {
+ // rewind buffer
+ m_free += m_used - COUNTER_SIZE;
+ m_used = COUNTER_SIZE;
+ m_off = COUNTER_SIZE;
+
+ if(m_free >= size) return;
+ }
+
+ if(m_off == COUNTER_SIZE) {
+ std::size_t next_size = (m_used + m_free) * 2; // include COUNTER_SIZE
+ while(next_size < size + m_used) {
+ std::size_t tmp_next_size = next_size * 2;
+ if (tmp_next_size <= next_size) {
+ next_size = size + m_used;
+ break;
+ }
+ next_size = tmp_next_size;
+ }
+
+ char* tmp = static_cast<char*>(::realloc(m_buffer, next_size));
+ if(!tmp) {
+ throw std::bad_alloc();
+ }
+
+ m_buffer = tmp;
+ m_free = next_size - m_used;
+
+ } else {
+ std::size_t next_size = m_initial_buffer_size; // include COUNTER_SIZE
+ std::size_t not_parsed = m_used - m_off;
+ while(next_size < size + not_parsed + COUNTER_SIZE) {
+ std::size_t tmp_next_size = next_size * 2;
+ if (tmp_next_size <= next_size) {
+ next_size = size + not_parsed + COUNTER_SIZE;
+ break;
+ }
+ next_size = tmp_next_size;
+ }
+
+ char* tmp = static_cast<char*>(::malloc(next_size));
+ if(!tmp) {
+ throw std::bad_alloc();
+ }
+
+ detail::init_count(tmp);
+
+ std::memcpy(tmp+COUNTER_SIZE, m_buffer + m_off, not_parsed);
+
+ if(static_cast<VisitorHolder&>(*this).referenced()) {
+ try {
+ m_referenced_buffer_hook(m_buffer);
+ }
+ catch (...) {
+ ::free(tmp);
+ throw;
+ }
+ static_cast<VisitorHolder&>(*this).set_referenced(false);
+ } else {
+ detail::decr_count(m_buffer);
+ }
+
+ m_buffer = tmp;
+ m_used = not_parsed + COUNTER_SIZE;
+ m_free = next_size - m_used;
+ m_off = COUNTER_SIZE;
+ }
+}
+
+template <typename VisitorHolder, typename ReferencedBufferHook>
+inline char* parser<VisitorHolder, ReferencedBufferHook>::buffer()
+{
+ return m_buffer + m_used;
+}
+
+template <typename VisitorHolder, typename ReferencedBufferHook>
+inline std::size_t parser<VisitorHolder, ReferencedBufferHook>::buffer_capacity() const
+{
+ return m_free;
+}
+
+template <typename VisitorHolder, typename ReferencedBufferHook>
+inline void parser<VisitorHolder, ReferencedBufferHook>::buffer_consumed(std::size_t size)
+{
+ m_used += size;
+ m_free -= size;
+}
+
+template <typename VisitorHolder, typename ReferencedBufferHook>
+ inline bool parser<VisitorHolder, ReferencedBufferHook>::next()
+{
+ parse_return ret = execute_imp();
+ return ret == PARSE_SUCCESS;
+}
+
+template <typename VisitorHolder, typename ReferencedBufferHook>
+inline parse_return parser<VisitorHolder, ReferencedBufferHook>::execute_imp()
+{
+ std::size_t off = m_off;
+ parse_return ret = context_type::execute(m_buffer, m_used, m_off);
+ if(m_off > off) {
+ m_parsed += m_off - off;
+ }
+ return ret;
+}
+
+template <typename VisitorHolder, typename ReferencedBufferHook>
+inline void parser<VisitorHolder, ReferencedBufferHook>::reset()
+{
+ context_type::init();
+ // don't reset referenced flag
+ m_parsed = 0;
+}
+
+template <typename VisitorHolder, typename ReferencedBufferHook>
+inline std::size_t parser<VisitorHolder, ReferencedBufferHook>::message_size() const
+{
+ return m_parsed - m_off + m_used;
+}
+
+template <typename VisitorHolder, typename ReferencedBufferHook>
+inline std::size_t parser<VisitorHolder, ReferencedBufferHook>::parsed_size() const
+{
+ return m_parsed;
+}
+
+template <typename VisitorHolder, typename ReferencedBufferHook>
+inline char* parser<VisitorHolder, ReferencedBufferHook>::nonparsed_buffer()
+{
+ return m_buffer + m_off;
+}
+
+template <typename VisitorHolder, typename ReferencedBufferHook>
+inline std::size_t parser<VisitorHolder, ReferencedBufferHook>::nonparsed_size() const
+{
+ return m_used - m_off;
+}
+
+template <typename VisitorHolder, typename ReferencedBufferHook>
+inline void parser<VisitorHolder, ReferencedBufferHook>::skip_nonparsed_buffer(std::size_t size)
+{
+ m_off += size;
+}
+
+template <typename VisitorHolder, typename ReferencedBufferHook>
+inline void parser<VisitorHolder, ReferencedBufferHook>::remove_nonparsed_buffer()
+{
+ m_used = m_off;
+}
+
+template <typename Visitor>
+inline bool parse(const char* data, size_t len, size_t& off, Visitor& v) {
+ parse_return ret = msgpack::detail::parse_imp(data, len, off, v);
+ return ret == PARSE_SUCCESS || ret == PARSE_EXTRA_BYTES;
+}
+
+template <typename Visitor>
+inline bool parse(const char* data, size_t len, Visitor& v) {
+ std::size_t off = 0;
+ return msgpack::parse(data, len, off, v);
+}
+
+namespace detail {
+
+template <typename Visitor>
+struct parse_helper : detail::context<parse_helper<Visitor> > {
+ parse_helper(Visitor& v):m_visitor(v) {}
+ parse_return execute(const char* data, std::size_t len, std::size_t& off) {
+ return detail::context<parse_helper<Visitor> >::execute(data, len, off);
+ }
+ Visitor& visitor() const { return m_visitor; }
+ Visitor& m_visitor;
+};
+
+template <typename Visitor>
+inline parse_return
+parse_imp(const char* data, size_t len, size_t& off, Visitor& v) {
+ std::size_t noff = off;
+
+ if(len <= noff) {
+ // FIXME
+ v.insufficient_bytes(noff, noff);
+ return PARSE_CONTINUE;
+ }
+ detail::parse_helper<Visitor> h(v);
+ parse_return ret = h.execute(data, len, noff);
+ switch (ret) {
+ case PARSE_CONTINUE:
+ off = noff;
+ v.insufficient_bytes(noff - 1, noff);
+ return ret;
+ case PARSE_SUCCESS:
+ off = noff;
+ if(noff < len) {
+ return PARSE_EXTRA_BYTES;
+ }
+ return ret;
+ default:
+ return ret;
+ }
+}
+
+} // detail
+
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_DEFAULT_API_VERSION >= 2
+
+#endif // MSGPACK_V2_PARSE_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/parse_decl.hpp b/third_party/msgpack/include/msgpack/v2/parse_decl.hpp
new file mode 100644
index 0000000000..c80e71d2be
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/parse_decl.hpp
@@ -0,0 +1,79 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_PARSE_DECL_HPP
+#define MSGPACK_V2_PARSE_DECL_HPP
+
+#include "msgpack/parse_return.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+namespace detail {
+
+template <typename VisitorHolder>
+class context;
+
+} // detail
+
+
+/// Parsing class for a stream deserialization.
+
+template <typename VisitorHolder, typename ReferencedBufferHook>
+class parser;
+
+
+/// Unpack msgpack formatted data via a visitor
+/**
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param off The offset position of the buffer. It is read and overwritten.
+ * @param v The visitor that satisfies visitor concept. https://github.com/msgpack/msgpack-c/wiki/v2_0_cpp_visitor#visitor-concept
+ *
+ * @return if unpacking process finishes without error then return true, otherwise return false.
+ *
+ */
+template <typename Visitor>
+bool parse(const char* data, size_t len, size_t& off, Visitor& v);
+
+
+/// Unpack msgpack formatted data via a visitor
+/**
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param v The visitor that satisfies visitor concept. https://github.com/msgpack/msgpack-c/wiki/v2_0_cpp_visitor#visitor-concept
+ *
+ * @return if unpacking process finishes without error then return true, otherwise return false.
+ *
+ */
+template <typename Visitor>
+bool parse(const char* data, size_t len, Visitor& v);
+
+namespace detail {
+
+template <typename Visitor>
+struct parse_helper;
+
+template <typename Visitor>
+inline parse_return
+parse_imp(const char* data, size_t len, size_t& off, Visitor& v);
+
+} // detail
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+
+#endif // MSGPACK_V2_PARSE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/parse_return.hpp b/third_party/msgpack/include/msgpack/v2/parse_return.hpp
new file mode 100644
index 0000000000..9acd73e7f5
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/parse_return.hpp
@@ -0,0 +1,37 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_PARSE_RETURN_HPP
+#define MSGPACK_V2_PARSE_RETURN_HPP
+
+#include "msgpack/v1/parse_return.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+
+// for internal use
+typedef enum {
+ PARSE_SUCCESS = v1::PARSE_SUCCESS,
+ PARSE_EXTRA_BYTES = v1::PARSE_EXTRA_BYTES,
+ PARSE_CONTINUE = v1::PARSE_CONTINUE,
+ PARSE_PARSE_ERROR = v1::PARSE_PARSE_ERROR,
+ PARSE_STOP_VISITOR = -2
+} parse_return;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V2_PARSE_RETURN_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/sbuffer_decl.hpp b/third_party/msgpack/include/msgpack/v2/sbuffer_decl.hpp
new file mode 100644
index 0000000000..e11d9ef479
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/sbuffer_decl.hpp
@@ -0,0 +1,33 @@
+//
+// MessagePack for C++ simple buffer implementation
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_SBUFFER_DECL_HPP
+#define MSGPACK_V2_SBUFFER_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+
+#ifndef MSGPACK_SBUFFER_INIT_SIZE
+#define MSGPACK_SBUFFER_INIT_SIZE 8192
+#endif
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+using v1::sbuffer;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V2_SBUFFER_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/unpack.hpp b/third_party/msgpack/include/msgpack/v2/unpack.hpp
new file mode 100644
index 0000000000..993643ab07
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/unpack.hpp
@@ -0,0 +1,348 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_UNPACK_HPP
+#define MSGPACK_V2_UNPACK_HPP
+
+#if MSGPACK_DEFAULT_API_VERSION >= 2
+
+#include "msgpack/unpack_decl.hpp"
+#include "msgpack/parse.hpp"
+#include "msgpack/create_object_visitor.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+
+struct zone_push_finalizer {
+ zone_push_finalizer(msgpack::zone& z):m_z(&z) {}
+ void set_zone(msgpack::zone& z) { m_z = &z; }
+ void operator()(char* buffer) {
+ m_z->push_finalizer(&detail::decr_count, buffer);
+ }
+ msgpack::zone* m_z;
+};
+
+class unpacker : public parser<unpacker, zone_push_finalizer>,
+ public detail::create_object_visitor {
+ typedef parser<unpacker, zone_push_finalizer> parser_t;
+public:
+ unpacker(unpack_reference_func f = &unpacker::default_reference_func,
+ void* user_data = MSGPACK_NULLPTR,
+ std::size_t initial_buffer_size = MSGPACK_UNPACKER_INIT_BUFFER_SIZE,
+ unpack_limit const& limit = unpack_limit())
+ :parser_t(m_finalizer, initial_buffer_size),
+ detail::create_object_visitor(f, user_data, limit),
+ m_z(new msgpack::zone),
+ m_finalizer(*m_z) {
+ set_zone(*m_z);
+ set_referenced(false);
+ }
+
+ detail::create_object_visitor& visitor() { return *this; }
+ /// Unpack one msgpack::object.
+ /**
+ *
+ * @param result The object that contains unpacked data.
+ * @param referenced If the unpacked object contains reference of the buffer,
+ * then set as true, otherwise false.
+ *
+ * @return If one msgpack::object is unpacked, then return true, if msgpack::object is incomplete
+ * and additional data is required, then return false. If data format is invalid, throw
+ * msgpack::parse_error.
+ *
+ * See:
+ * https://github.com/msgpack/msgpack-c/wiki/v1_1_cpp_unpacker#msgpack-controls-a-buffer
+ */
+ bool next(msgpack::object_handle& result, bool& referenced);
+
+ /// Unpack one msgpack::object.
+ /**
+ *
+ * @param result The object that contains unpacked data.
+ *
+ * @return If one msgpack::object is unpacked, then return true, if msgpack::object is incomplete
+ * and additional data is required, then return false. If data format is invalid, throw
+ * msgpack::parse_error.
+ *
+ * See:
+ * https://github.com/msgpack/msgpack-c/wiki/v1_1_cpp_unpacker#msgpack-controls-a-buffer
+ */
+ bool next(msgpack::object_handle& result);
+ msgpack::zone* release_zone();
+ void reset_zone();
+ bool flush_zone();
+private:
+ static bool default_reference_func(msgpack::type::object_type /*type*/, std::size_t /*len*/, void*) {
+ return true;
+ }
+ msgpack::unique_ptr<msgpack::zone> m_z;
+ zone_push_finalizer m_finalizer;
+};
+
+inline bool unpacker::next(msgpack::object_handle& result, bool& referenced) {
+ bool ret = parser_t::next();
+ if (ret) {
+ referenced = detail::create_object_visitor::referenced();
+ result.zone().reset( release_zone() );
+ result.set(data());
+ reset();
+ }
+ else {
+ result.zone().reset();
+ result.set(msgpack::object());
+ }
+ return ret;
+}
+
+inline bool unpacker::next(msgpack::object_handle& result) {
+ bool referenced;
+ return next(result, referenced);
+}
+
+inline msgpack::zone* unpacker::release_zone()
+{
+ if(!flush_zone()) {
+ return MSGPACK_NULLPTR;
+ }
+
+ msgpack::zone* r = new msgpack::zone;
+ msgpack::zone* old = m_z.release();
+ m_z.reset(r);
+ set_zone(*m_z);
+ m_finalizer.set_zone(*m_z);
+
+ return old;
+}
+
+inline void unpacker::reset_zone()
+{
+ m_z->clear();
+}
+
+inline bool unpacker::flush_zone()
+{
+ if(referenced()) {
+ try {
+ m_z->push_finalizer(&detail::decr_count, get_raw_buffer());
+ } catch (...) {
+ return false;
+ }
+ set_referenced(false);
+
+ detail::incr_count(get_raw_buffer());
+ }
+
+ return true;
+}
+
+inline msgpack::object_handle unpack(
+ const char* data, std::size_t len, std::size_t& off, bool& referenced,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit
+)
+{
+ msgpack::object obj;
+ msgpack::unique_ptr<msgpack::zone> z(new msgpack::zone);
+ referenced = false;
+ std::size_t noff = off;
+ parse_return ret = detail::unpack_imp(
+ data, len, noff, *z, obj, referenced, f, user_data, limit);
+
+ switch(ret) {
+ case PARSE_SUCCESS:
+ off = noff;
+ return msgpack::object_handle(obj, msgpack::move(z));
+ case PARSE_EXTRA_BYTES:
+ off = noff;
+ return msgpack::object_handle(obj, msgpack::move(z));
+ default:
+ break;
+ }
+ return msgpack::object_handle();
+}
+
+inline msgpack::object_handle unpack(
+ const char* data, std::size_t len, std::size_t& off,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ bool referenced;
+ return msgpack::v2::unpack(data, len, off, referenced, f, user_data, limit);
+}
+
+inline msgpack::object_handle unpack(
+ const char* data, std::size_t len, bool& referenced,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ std::size_t off = 0;
+ return msgpack::v2::unpack(data, len, off, referenced, f, user_data, limit);
+}
+
+inline msgpack::object_handle unpack(
+ const char* data, std::size_t len,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ bool referenced;
+ std::size_t off = 0;
+ return msgpack::v2::unpack(data, len, off, referenced, f, user_data, limit);
+}
+
+inline void unpack(
+ msgpack::object_handle& result,
+ const char* data, std::size_t len, std::size_t& off, bool& referenced,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ msgpack::object obj;
+ msgpack::unique_ptr<msgpack::zone> z(new msgpack::zone);
+ referenced = false;
+ std::size_t noff = off;
+ parse_return ret = detail::unpack_imp(
+ data, len, noff, *z, obj, referenced, f, user_data, limit);
+
+ switch(ret) {
+ case PARSE_SUCCESS:
+ off = noff;
+ result.set(obj);
+ result.zone() = msgpack::move(z);
+ return;
+ case PARSE_EXTRA_BYTES:
+ off = noff;
+ result.set(obj);
+ result.zone() = msgpack::move(z);
+ return;
+ default:
+ return;
+ }
+}
+
+inline void unpack(
+ msgpack::object_handle& result,
+ const char* data, std::size_t len, std::size_t& off,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ bool referenced;
+ msgpack::v2::unpack(result, data, len, off, referenced, f, user_data, limit);
+}
+
+inline void unpack(
+ msgpack::object_handle& result,
+ const char* data, std::size_t len, bool& referenced,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ std::size_t off = 0;
+ msgpack::v2::unpack(result, data, len, off, referenced, f, user_data, limit);
+}
+
+inline void unpack(
+ msgpack::object_handle& result,
+ const char* data, std::size_t len,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ bool referenced;
+ std::size_t off = 0;
+ msgpack::v2::unpack(result, data, len, off, referenced, f, user_data, limit);
+}
+
+
+inline msgpack::object unpack(
+ msgpack::zone& z,
+ const char* data, std::size_t len, std::size_t& off, bool& referenced,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ msgpack::object obj;
+ std::size_t noff = off;
+ referenced = false;
+ parse_return ret = detail::unpack_imp(
+ data, len, noff, z, obj, referenced, f, user_data, limit);
+
+ switch(ret) {
+ case PARSE_SUCCESS:
+ off = noff;
+ return obj;
+ case PARSE_EXTRA_BYTES:
+ off = noff;
+ return obj;
+ default:
+ break;
+ }
+ return obj;
+}
+
+inline msgpack::object unpack(
+ msgpack::zone& z,
+ const char* data, std::size_t len, std::size_t& off,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ bool referenced;
+ return msgpack::v2::unpack(z, data, len, off, referenced, f, user_data, limit);
+}
+
+inline msgpack::object unpack(
+ msgpack::zone& z,
+ const char* data, std::size_t len, bool& referenced,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ std::size_t off = 0;
+ return msgpack::v2::unpack(z, data, len, off, referenced, f, user_data, limit);
+}
+
+inline msgpack::object unpack(
+ msgpack::zone& z,
+ const char* data, std::size_t len,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ bool referenced;
+ std::size_t off = 0;
+ return msgpack::v2::unpack(z, data, len, off, referenced, f, user_data, limit);
+}
+
+namespace detail {
+
+inline parse_return
+unpack_imp(const char* data, std::size_t len, std::size_t& off,
+ msgpack::zone& result_zone, msgpack::object& result, bool& referenced,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR,
+ unpack_limit const& limit = unpack_limit())
+{
+ create_object_visitor v(f, user_data, limit);
+ v.set_zone(result_zone);
+ referenced = false;
+ v.set_referenced(referenced);
+ parse_return ret = parse_imp(data, len, off, v);
+ referenced = v.referenced();
+ result = v.data();
+ return ret;
+}
+
+} // namespace detail
+
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_DEFAULT_API_VERSION >= 2
+
+#endif // MSGPACK_V2_UNPACK_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/unpack_decl.hpp b/third_party/msgpack/include/msgpack/v2/unpack_decl.hpp
new file mode 100644
index 0000000000..41312dbaab
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/unpack_decl.hpp
@@ -0,0 +1,312 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_UNPACK_DECL_HPP
+#define MSGPACK_V2_UNPACK_DECL_HPP
+
+#include "msgpack/v1/unpack_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+using v1::unpack_reference_func;
+
+using v1::unpack_error;
+using v1::parse_error;
+using v1::insufficient_bytes;
+using v1::size_overflow;
+using v1::array_size_overflow;
+using v1::map_size_overflow;
+using v1::str_size_overflow;
+using v1::bin_size_overflow;
+using v1::ext_size_overflow;
+using v1::depth_size_overflow;
+using v1::unpack_limit;
+
+namespace detail {
+
+using v1::detail::unpack_user;
+
+using v1::detail::unpack_uint8;
+using v1::detail::unpack_uint16;
+using v1::detail::unpack_uint32;
+using v1::detail::unpack_uint64;
+
+using v1::detail::unpack_int8;
+using v1::detail::unpack_int16;
+using v1::detail::unpack_int32;
+using v1::detail::unpack_int64;
+
+using v1::detail::unpack_float;
+using v1::detail::unpack_double;
+
+using v1::detail::unpack_nil;
+
+using v1::detail::unpack_true;
+using v1::detail::unpack_false;
+
+using v1::detail::unpack_array;
+using v1::detail::unpack_array_item;
+using v1::detail::unpack_map;
+using v1::detail::unpack_map_item;
+using v1::detail::unpack_str;
+using v1::detail::unpack_bin;
+using v1::detail::unpack_ext;
+
+using v1::detail::unpack_stack;
+
+using v1::detail::init_count;
+using v1::detail::decr_count;
+using v1::detail::incr_count;
+
+using v1::detail::get_count;
+
+using v1::detail::fix_tag;
+
+using v1::detail::value;
+
+using v1::detail::load;
+
+} // detail
+
+
+using v1::unpacked;
+
+/// Unpacking class for a stream deserialization.
+class unpacker;
+
+template <typename unpack_visitor, typename referenced_buffer_hook>
+class basic_unpacker;
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param off The offset position of the buffer. It is read and overwritten.
+ * @param referenced If the unpacked object contains reference of the buffer, then set as true, otherwise false.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ * @return object_handle that contains unpacked data.
+ *
+ */
+msgpack::object_handle unpack(
+ const char* data, std::size_t len, std::size_t& off, bool& referenced,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, unpack_limit const& limit = unpack_limit());
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param off The offset position of the buffer. It is read and overwritten.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ * @return object_handle that contains unpacked data.
+ *
+ */
+msgpack::object_handle unpack(
+ const char* data, std::size_t len, std::size_t& off,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, unpack_limit const& limit = unpack_limit());
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param referenced If the unpacked object contains reference of the buffer, then set as true, otherwise false.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ * @return object_handle that contains unpacked data.
+ *
+ */
+msgpack::object_handle unpack(
+ const char* data, std::size_t len, bool& referenced,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, unpack_limit const& limit = unpack_limit());
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ * @return object_handle that contains unpacked data.
+ *
+ */
+msgpack::object_handle unpack(
+ const char* data, std::size_t len,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, unpack_limit const& limit = unpack_limit());
+
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param result The object_handle that contains unpacked data.
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param off The offset position of the buffer. It is read and overwritten.
+ * @param referenced If the unpacked object contains reference of the buffer, then set as true, otherwise false.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ *
+ */
+void unpack(
+ msgpack::object_handle& result,
+ const char* data, std::size_t len, std::size_t& off, bool& referenced,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, unpack_limit const& limit = unpack_limit());
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param result The object_handle that contains unpacked data.
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param off The offset position of the buffer. It is read and overwritten.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ *
+ */
+void unpack(
+ msgpack::object_handle& result,
+ const char* data, std::size_t len, std::size_t& off,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, unpack_limit const& limit = unpack_limit());
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param result The object_handle that contains unpacked data.
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param referenced If the unpacked object contains reference of the buffer, then set as true, otherwise false.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ *
+ */
+void unpack(
+ msgpack::object_handle& result,
+ const char* data, std::size_t len, bool& referenced,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, unpack_limit const& limit = unpack_limit());
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param result The object_handle that contains unpacked data.
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ *
+ */
+void unpack(
+ msgpack::object_handle& result,
+ const char* data, std::size_t len,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, unpack_limit const& limit = unpack_limit());
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param z The msgpack::zone that is used as a memory of unpacked msgpack objects.
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param off The offset position of the buffer. It is read and overwritten.
+ * @param referenced If the unpacked object contains reference of the buffer, then set as true, otherwise false.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ * @return msgpack::object that contains unpacked data.
+ *
+ */
+msgpack::object unpack(
+ msgpack::zone& z,
+ const char* data, std::size_t len, std::size_t& off, bool& referenced,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, unpack_limit const& limit = unpack_limit());
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param z The msgpack::zone that is used as a memory of unpacked msgpack objects.
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param off The offset position of the buffer. It is read and overwritten.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ * @return msgpack::object that contains unpacked data.
+ *
+ */
+msgpack::object unpack(
+ msgpack::zone& z,
+ const char* data, std::size_t len, std::size_t& off,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, unpack_limit const& limit = unpack_limit());
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param z The msgpack::zone that is used as a memory of unpacked msgpack objects.
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param referenced If the unpacked object contains reference of the buffer, then set as true, otherwise false.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ * @return msgpack::object that contains unpacked data.
+ *
+ */
+msgpack::object unpack(
+ msgpack::zone& z,
+ const char* data, std::size_t len, bool& referenced,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, unpack_limit const& limit = unpack_limit());
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param z The msgpack::zone that is used as a memory of unpacked msgpack objects.
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ * @return msgpack::object that contains unpacked data.
+ *
+ */
+msgpack::object unpack(
+ msgpack::zone& z,
+ const char* data, std::size_t len,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, unpack_limit const& limit = unpack_limit());
+
+namespace detail {
+
+parse_return
+unpack_imp(const char* data, std::size_t len, std::size_t& off,
+ msgpack::zone& result_zone, msgpack::object& result, bool& referenced,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit);
+
+
+} // detail
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V2_UNPACK_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/vrefbuffer_decl.hpp b/third_party/msgpack/include/msgpack/v2/vrefbuffer_decl.hpp
new file mode 100644
index 0000000000..5f74c70c37
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/vrefbuffer_decl.hpp
@@ -0,0 +1,29 @@
+//
+// MessagePack for C++ zero-copy buffer implementation
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_VREFBUFFER_DECL_HPP
+#define MSGPACK_V2_VREFBUFFER_DECL_HPP
+
+#include "msgpack/v1/vrefbuffer_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+using v1::vrefbuffer;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V2_VREFBUFFER_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/x3_parse.hpp b/third_party/msgpack/include/msgpack/v2/x3_parse.hpp
new file mode 100644
index 0000000000..50a0db44c0
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/x3_parse.hpp
@@ -0,0 +1,873 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2017 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_X3_PARSE_HPP
+#define MSGPACK_V2_X3_PARSE_HPP
+
+#if defined(MSGPACK_USE_X3_PARSE)
+
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 106100
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/x3_parse_decl.hpp"
+
+#if __GNUC__ >= 4
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wunused-parameter"
+#endif // __GNUC__ >= 4
+
+#include <boost/config/warning_disable.hpp>
+#include <boost/spirit/home/x3.hpp>
+#include <boost/spirit/home/x3/binary.hpp>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+namespace detail {
+
+namespace x3 = boost::spirit::x3;
+
+using x3::byte_;
+
+// byte range utility
+const auto byte_range = [](const std::uint8_t from, const std::uint8_t to) {
+ const auto check = [from, to](auto& ctx)
+ {
+ const std::uint8_t value = x3::_attr(ctx);
+ x3::_val(ctx) = value;
+ x3::_pass(ctx) = from <= value && value <= to;
+ };
+ return x3::byte_ [check];
+};
+
+// MessagePack rule
+const auto mp_positive_fixint = byte_range(0x00, 0x7f);
+const auto mp_fixmap = byte_range(0x80, 0x8f);
+const auto mp_fixarray = byte_range(0x90, 0x9f);
+const auto mp_fixstr = byte_range(0xa0, 0xbf);
+const auto mp_nil = x3::byte_(0xc0);
+const auto mp_false = x3::byte_(0xc2);
+const auto mp_true = x3::byte_(0xc3);
+const auto mp_bin8 = x3::byte_(0xc4);
+const auto mp_bin16 = x3::byte_(0xc5);
+const auto mp_bin32 = x3::byte_(0xc6);
+const auto mp_ext8 = x3::byte_(0xc7);
+const auto mp_ext16 = x3::byte_(0xc8);
+const auto mp_ext32 = x3::byte_(0xc9);
+const auto mp_float32 = x3::byte_(0xca);
+const auto mp_float64 = x3::byte_(0xcb);
+const auto mp_uint8 = x3::byte_(0xcc);
+const auto mp_uint16 = x3::byte_(0xcd);
+const auto mp_uint32 = x3::byte_(0xce);
+const auto mp_uint64 = x3::byte_(0xcf);
+const auto mp_int8 = x3::byte_(0xd0);
+const auto mp_int16 = x3::byte_(0xd1);
+const auto mp_int32 = x3::byte_(0xd2);
+const auto mp_int64 = x3::byte_(0xd3);
+const auto mp_fixext1 = x3::byte_(0xd4);
+const auto mp_fixext2 = x3::byte_(0xd5);
+const auto mp_fixext4 = x3::byte_(0xd6);
+const auto mp_fixext8 = x3::byte_(0xd7);
+const auto mp_fixext16 = x3::byte_(0xd8);
+const auto mp_str8 = x3::byte_(0xd9);
+const auto mp_str16 = x3::byte_(0xda);
+const auto mp_str32 = x3::byte_(0xdb);
+const auto mp_array16 = x3::byte_(0xdc);
+const auto mp_array32 = x3::byte_(0xdd);
+const auto mp_map16 = x3::byte_(0xde);
+const auto mp_map32 = x3::byte_(0xdf);
+const auto mp_negative_fixint = byte_range(0xe0, 0xff);
+
+const auto mp_d_uint8 = x3::byte_;
+const auto mp_d_uint16 = x3::big_word;
+const auto mp_d_uint32 = x3::big_dword;
+const auto mp_d_uint64 = x3::big_qword;
+
+const auto mp_d_int8 = x3::byte_;
+const auto mp_d_int16 = x3::big_word;
+const auto mp_d_int32 = x3::big_dword;
+const auto mp_d_int64 = x3::big_qword;
+
+x3::rule<class mp_object> const mp_object("mp_object");
+x3::rule<class array_items> const array_item("array_item");
+x3::rule<class map_items> const map_item("map_item");
+x3::rule<class kv> const kv("kv");
+
+struct tag_app_specific {};
+struct index_size {
+ enum struct type_t {
+ array,
+ map,
+ other
+ };
+ index_size(std::size_t size, type_t type = type_t::other):size(size), type(type) {}
+ std::size_t index = 0;
+ std::size_t size;
+ type_t type;
+};
+
+template <typename Visitor>
+struct app_specific {
+ template <typename Vis>
+ app_specific(Vis&& vis):vis(vis) {}
+ std::vector<index_size> index_sizes;
+ Visitor vis;
+};
+
+template <typename Visitor>
+app_specific<Visitor> make_app_specific(Visitor&& vis) {
+ return app_specific<Visitor>(std::forward<Visitor>(vis));
+}
+
+const auto more = [](auto &ctx) {
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ _pass(ctx) = app_specific.index_sizes.back().index++ < app_specific.index_sizes.back().size;
+};
+
+const auto done = [](auto &ctx) {
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ if (app_specific.index_sizes.back().index == app_specific.index_sizes.back().size + 1) {
+ _pass(ctx) = true;
+ switch (app_specific.index_sizes.back().type) {
+ case index_size::type_t::array:
+ app_specific.vis.end_array();
+ break;
+ case index_size::type_t::map:
+ app_specific.vis.end_map();
+ break;
+ case index_size::type_t::other:
+ break;
+ }
+ app_specific.index_sizes.pop_back();
+ }
+ else {
+ _pass(ctx) = false;
+ }
+};
+
+const auto mp_object_def =
+ // -----------------------------------------------
+ mp_nil [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ app_specific.vis.visit_nil();
+ }
+ )
+ ]
+ |
+ // -----------------------------------------------
+ mp_true [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ app_specific.vis.visit_boolean(true);
+ }
+ )
+ ]
+ |
+ // -----------------------------------------------
+ mp_false [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ app_specific.vis.visit_boolean(false);
+ }
+ )
+ ]
+ |
+ // -----------------------------------------------
+ mp_positive_fixint [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ app_specific.vis.visit_positive_integer(_attr(ctx));
+ }
+ )
+ ]
+ |
+ // -----------------------------------------------
+ mp_negative_fixint [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ std::int8_t val = _attr(ctx);
+ app_specific.vis.visit_negative_integer(val);
+ }
+ )
+ ]
+ |
+ // -----------------------------------------------
+ mp_uint8 >> mp_d_uint8 [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ app_specific.vis.visit_negative_integer(_attr(ctx));
+ }
+ )
+ ]
+ |
+ // -----------------------------------------------
+ mp_uint16 >> mp_d_uint16 [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ app_specific.vis.visit_positive_integer(_attr(ctx));
+ }
+ )
+ ]
+ |
+ // -----------------------------------------------
+ mp_uint32 >> mp_d_uint32 [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ app_specific.vis.visit_positive_integer(_attr(ctx));
+ }
+ )
+ ]
+ |
+ // -----------------------------------------------
+ mp_uint64 >> mp_d_uint64 [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ app_specific.vis.visit_positive_integer(_attr(ctx));
+ }
+ )
+ ]
+ |
+ // -----------------------------------------------
+ mp_int8 >> mp_d_int8 [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ std::int8_t val = _attr(ctx);
+ app_specific.vis.visit_negative_integer(val);
+ }
+ )
+ ]
+ |
+ // -----------------------------------------------
+ mp_int16 >> mp_d_int16 [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ std::int16_t val = _attr(ctx);
+ app_specific.vis.visit_negative_integer(val);
+ }
+ )
+ ]
+ |
+ // -----------------------------------------------
+ mp_int32 >> mp_d_int32 [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ std::int32_t val = _attr(ctx);
+ app_specific.vis.visit_negative_integer(val);
+ }
+ )
+ ]
+ |
+ // -----------------------------------------------
+ mp_int64 >> mp_d_int64 [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ std::int64_t val = _attr(ctx);
+ app_specific.vis.visit_negative_integer(val);
+ }
+ )
+ ]
+ |
+ // -----------------------------------------------
+ mp_float32 >> mp_d_uint32 [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ union { uint32_t i; float f; } mem = { _attr(ctx) };
+ app_specific.vis.visit_float32(mem.f);
+ }
+ )
+ ]
+ |
+ // -----------------------------------------------
+ mp_float64 >> mp_d_uint64 [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ union { uint64_t i; double f; } mem = { _attr(ctx) };
+#if defined(TARGET_OS_IPHONE)
+ // ok
+#elif defined(__arm__) && !(__ARM_EABI__) // arm-oabi
+ // https://github.com/msgpack/msgpack-perl/pull/1
+ mem.i = (mem.i & 0xFFFFFFFFUL) << 32UL | (mem.i >> 32UL);
+#endif
+ app_specific.vis.visit_float64(mem.f);
+ }
+ )
+ ]
+ |
+ // -----------------------------------------------
+ mp_fixstr [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ std::size_t size = _attr(ctx) & 0b00011111;
+ app_specific.index_sizes.emplace_back(size);
+ }
+ )
+ ]
+ >>
+ x3::raw [
+ *(x3::eps [more] >> x3::char_)
+ >> x3::eps [done]
+ ][
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ auto const& str = _attr(ctx);
+ std::size_t size = std::distance(str.begin(), str.end());
+ app_specific.vis.visit_str(size ? &str.front() : nullptr, size);
+ }
+ )
+ ]
+ |
+ // -----------------------------------------------
+ mp_str8 >> mp_d_uint8 [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ app_specific.index_sizes.emplace_back(_attr(ctx));
+ }
+ )
+ ]
+ >>
+ x3::raw [
+ *(x3::eps [more] >> x3::char_)
+ >> x3::eps [done]
+ ][
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ auto const& str = _attr(ctx);
+ std::size_t size = std::distance(str.begin(), str.end());
+ app_specific.vis.visit_str(size ? &str.front() : nullptr, size);
+ }
+ )
+ ]
+ |
+ // -----------------------------------------------
+ mp_str16 >> mp_d_uint16 [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ app_specific.index_sizes.emplace_back(_attr(ctx));
+ }
+ )
+ ]
+ >>
+ x3::raw [
+ *(x3::eps [more] >> x3::char_)
+ >> x3::eps [done]
+ ][
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ auto const& str = _attr(ctx);
+ std::size_t size = std::distance(str.begin(), str.end());
+ app_specific.vis.visit_str(size ? &str.front() : nullptr, size);
+ }
+ )
+ ]
+ |
+ // -----------------------------------------------
+ mp_str32 >> mp_d_uint32 [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ app_specific.index_sizes.emplace_back(_attr(ctx));
+ }
+ )
+ ]
+ >>
+ x3::raw [
+ *(x3::eps [more] >> x3::char_)
+ >> x3::eps [done]
+ ][
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ auto const& str = _attr(ctx);
+ std::size_t size = std::distance(str.begin(), str.end());
+ app_specific.vis.visit_str(size ? &str.front() : nullptr, size);
+ }
+ )
+ ]
+ |
+ // -----------------------------------------------
+ mp_bin8 >> mp_d_uint8 [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ app_specific.index_sizes.emplace_back(_attr(ctx));
+ }
+ )
+ ]
+ >>
+ x3::raw [
+ *(x3::eps [more] >> x3::char_)
+ >> x3::eps [done]
+ ][
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ auto const& bin = _attr(ctx);
+ std::size_t size = std::distance(bin.begin(), bin.end());
+ app_specific.vis.visit_bin(size ? &bin.front() : nullptr, size);
+ }
+ )
+ ]
+ |
+ // -----------------------------------------------
+ mp_bin16 >> mp_d_uint16 [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ app_specific.index_sizes.emplace_back(_attr(ctx));
+ }
+ )
+ ]
+ >>
+ x3::raw [
+ *(x3::eps [more] >> x3::char_)
+ >> x3::eps [done]
+ ][
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ auto const& bin = _attr(ctx);
+ std::size_t size = std::distance(bin.begin(), bin.end());
+ app_specific.vis.visit_bin(size ? &bin.front() : nullptr, size);
+ }
+ )
+ ]
+ |
+ // -----------------------------------------------
+ mp_bin32 >> mp_d_uint32 [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ app_specific.index_sizes.emplace_back(_attr(ctx));
+ }
+ )
+ ]
+ >>
+ x3::raw [
+ *(x3::eps [more] >> x3::char_)
+ >> x3::eps [done]
+ ][
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ auto const& bin = _attr(ctx);
+ std::size_t size = std::distance(bin.begin(), bin.end());
+ app_specific.vis.visit_bin(size ? &bin.front() : nullptr, size);
+ }
+ )
+ ]
+ |
+ // -----------------------------------------------
+ mp_fixarray [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ std::size_t size = _attr(ctx) & 0b00001111;
+ app_specific.index_sizes.emplace_back(size, index_size::type_t::array);
+ app_specific.vis.start_array(size);
+ }
+ )
+ ]
+ >> *(x3::eps [more] >> array_item)
+ >> x3::eps [done]
+ |
+ // -----------------------------------------------
+ mp_array16 >> mp_d_uint16 [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ std::size_t size = _attr(ctx);
+ app_specific.index_sizes.emplace_back(size, index_size::type_t::array);
+ app_specific.vis.start_array(size);
+ }
+ )
+ ]
+ >> *(x3::eps [more] >> array_item)
+ >> x3::eps [done]
+ |
+ // -----------------------------------------------
+ mp_array32 >> mp_d_uint32 [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ std::size_t size = _attr(ctx);
+ app_specific.index_sizes.emplace_back(size, index_size::type_t::array);
+ app_specific.vis.start_array(size);
+ }
+ )
+ ]
+ >> *(x3::eps [more] >> array_item)
+ >> x3::eps [done]
+ |
+ // -----------------------------------------------
+ mp_fixmap [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ std::size_t size = _attr(ctx) & 0b00001111;
+ app_specific.index_sizes.emplace_back(size, index_size::type_t::map);
+ app_specific.vis.start_map(size);
+ }
+ )
+ ]
+ >> *(x3::eps [more] >> map_item)
+ >> x3::eps [done]
+ |
+ // -----------------------------------------------
+ mp_map16 >> mp_d_uint16 [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ std::size_t size = _attr(ctx);
+ app_specific.index_sizes.emplace_back(size, index_size::type_t::map);
+ app_specific.vis.start_map(size);
+ }
+ )
+ ]
+ >> *(x3::eps [more] >> map_item)
+ >> x3::eps [done]
+ |
+ // -----------------------------------------------
+ mp_map32 >> mp_d_uint32 [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ std::size_t size = _attr(ctx);
+ app_specific.index_sizes.emplace_back(size, index_size::type_t::map);
+ app_specific.vis.start_map(size);
+ }
+ )
+ ]
+ >> *(x3::eps [more] >> map_item)
+ >> x3::eps [done]
+ |
+ // -----------------------------------------------
+ mp_fixext1 [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ app_specific.index_sizes.emplace_back(1+1);
+ }
+ )
+ ]
+ >>
+ x3::raw [
+ *(x3::eps [more] >> x3::char_)
+ >> x3::eps [done]
+ ][
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ auto const& ext = _attr(ctx);
+ std::size_t size = std::distance(ext.begin(), ext.end());
+ app_specific.vis.visit_ext(size ? &ext.front() : nullptr, size);
+ }
+ )
+ ]
+ |
+ // -----------------------------------------------
+ mp_fixext2 [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ app_specific.index_sizes.emplace_back(2+1);
+ }
+ )
+ ]
+ >>
+ x3::raw [
+ *(x3::eps [more] >> x3::char_)
+ >> x3::eps [done]
+ ][
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ auto const& ext = _attr(ctx);
+ std::size_t size = std::distance(ext.begin(), ext.end());
+ app_specific.vis.visit_ext(size ? &ext.front() : nullptr, size);
+ }
+ )
+ ]
+ |
+ // -----------------------------------------------
+ mp_fixext4 [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ app_specific.index_sizes.emplace_back(4+1);
+ }
+ )
+ ]
+ >>
+ x3::raw [
+ *(x3::eps [more] >> x3::char_)
+ >> x3::eps [done]
+ ][
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ auto const& ext = _attr(ctx);
+ std::size_t size = std::distance(ext.begin(), ext.end());
+ app_specific.vis.visit_ext(size ? &ext.front() : nullptr, size);
+ }
+ )
+ ]
+ |
+ // -----------------------------------------------
+ mp_fixext8 [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ app_specific.index_sizes.emplace_back(8+1);
+ }
+ )
+ ]
+ >>
+ x3::raw [
+ *(x3::eps [more] >> x3::char_)
+ >> x3::eps [done]
+ ][
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ auto const& ext = _attr(ctx);
+ std::size_t size = std::distance(ext.begin(), ext.end());
+ app_specific.vis.visit_ext(size ? &ext.front() : nullptr, size);
+ }
+ )
+ ]
+ |
+ // -----------------------------------------------
+ mp_fixext16 [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ app_specific.index_sizes.emplace_back(16+1);
+ }
+ )
+ ]
+ >>
+ x3::raw [
+ *(x3::eps [more] >> x3::char_)
+ >> x3::eps [done]
+ ][
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ auto const& ext = _attr(ctx);
+ std::size_t size = std::distance(ext.begin(), ext.end());
+ app_specific.vis.visit_ext(size ? &ext.front() : nullptr, size);
+ }
+ )
+ ]
+ |
+ // -----------------------------------------------
+ mp_ext8 >> mp_d_uint8 [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ app_specific.index_sizes.emplace_back(_attr(ctx)+1);
+ }
+ )
+ ]
+ >>
+ x3::raw [
+ *(x3::eps [more] >> x3::char_)
+ >> x3::eps [done]
+ ][
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ auto const& ext = _attr(ctx);
+ std::size_t size = std::distance(ext.begin(), ext.end());
+ app_specific.vis.visit_ext(size ? &ext.front() : nullptr, size);
+ }
+ )
+ ]
+ |
+ // -----------------------------------------------
+ mp_ext16 >> mp_d_uint16 [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ app_specific.index_sizes.emplace_back(_attr(ctx)+1);
+ }
+ )
+ ]
+ >>
+ x3::raw [
+ *(x3::eps [more] >> x3::char_)
+ >> x3::eps [done]
+ ][
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ auto const& ext = _attr(ctx);
+ std::size_t size = std::distance(ext.begin(), ext.end());
+ app_specific.vis.visit_ext(size ? &ext.front() : nullptr, size);
+ }
+ )
+ ]
+ |
+ // -----------------------------------------------
+ mp_ext32 >> mp_d_uint32 [
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ app_specific.index_sizes.emplace_back(_attr(ctx)+1);
+ }
+ )
+ ]
+ >>
+ x3::raw [
+ *(x3::eps [more] >> x3::char_)
+ >> x3::eps [done]
+ ][
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ auto const& ext = _attr(ctx);
+ std::size_t size = std::distance(ext.begin(), ext.end());
+ app_specific.vis.visit_ext(size ? &ext.front() : nullptr, size);
+ }
+ )
+ ];
+
+const auto array_item_def =
+ x3::eps[
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ app_specific.vis.start_array_item();
+ _pass(ctx) = true;
+ }
+ )
+ ]
+ >>
+ mp_object
+ >>
+ x3::eps[
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ app_specific.vis.end_array_item();
+ _pass(ctx) = true;
+ }
+ )
+ ];
+
+const auto map_item_def = kv;
+const auto kv_def =
+ x3::eps[
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ app_specific.vis.start_map_key();
+ _pass(ctx) = true;
+ }
+ )
+ ]
+ >>
+ mp_object
+ >>
+ x3::eps[
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ app_specific.vis.end_map_key();
+ _pass(ctx) = true;
+ }
+ )
+ ]
+ >>
+ x3::eps[
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ app_specific.vis.start_map_value();
+ _pass(ctx) = true;
+ }
+ )
+ ]
+ >>
+ mp_object
+ >>
+ x3::eps[
+ (
+ [](auto& ctx){
+ auto& app_specific = x3::get<tag_app_specific>(ctx).get();
+ app_specific.vis.end_map_value();
+ _pass(ctx) = true;
+ }
+ )
+ ];
+
+BOOST_SPIRIT_DEFINE(
+ mp_object, array_item, map_item, kv
+);
+
+const auto rule = mp_object;
+
+} // namespace detail
+
+template <typename Iterator, typename Visitor>
+inline bool parse(Iterator&& begin, Iterator&& end, Visitor&& vis) {
+ auto data = detail::make_app_specific(std::forward<Visitor>(vis));
+ return detail::x3::parse(
+ std::forward<Iterator>(begin),
+ std::forward<Iterator>(end),
+ detail::x3::with<detail::tag_app_specific>(std::ref(data))[detail::rule]
+ );
+}
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#if __GNUC__ >= 4
+#pragma GCC diagnostic pop
+#endif // __GNUC__ >= 4
+
+#else // BOOST_VERSION >= 106100
+
+#error Boost 1.61.0 or later is required to use x3 parse
+
+#endif // BOOST_VERSION >= 106100
+
+#endif // defined(MSGPACK_USE_X3_PARSE)
+
+#endif // MSGPACK_V2_X3_PARSE_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/x3_parse_decl.hpp b/third_party/msgpack/include/msgpack/v2/x3_parse_decl.hpp
new file mode 100644
index 0000000000..d146a35363
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/x3_parse_decl.hpp
@@ -0,0 +1,36 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2017 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_X3_PARSE_DECL_HPP
+#define MSGPACK_V2_X3_PARSE_DECL_HPP
+
+#if defined(MSGPACK_USE_X3_PARSE)
+
+#include "msgpack/versioning.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+
+template <typename Iterator, typename Visitor>
+bool parse(Iterator&& begin, Iterator&& end, Visitor&& vis);
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+
+#endif // defined(MSGPACK_USE_X3_PARSE)
+
+#endif // MSGPACK_V2_X3_PARSE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/x3_unpack.hpp b/third_party/msgpack/include/msgpack/v2/x3_unpack.hpp
new file mode 100644
index 0000000000..54ca98ea89
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/x3_unpack.hpp
@@ -0,0 +1,120 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2017 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_X3_UNPACK_HPP
+#define MSGPACK_V2_X3_UNPACK_HPP
+
+#if defined(MSGPACK_USE_X3_PARSE)
+
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 106100
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/create_object_visitor.hpp"
+#include "msgpack/x3_unpack_decl.hpp"
+#include "msgpack/x3_parse.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+namespace detail {
+
+template <typename Iterator>
+inline void
+unpack_imp(Iterator&& begin, Iterator&& end,
+ msgpack::zone& result_zone, msgpack::object& result, bool& referenced,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ create_object_visitor v(f, user_data, limit);
+ v.set_zone(result_zone);
+ referenced = false;
+ v.set_referenced(referenced);
+ if (!parse(std::forward<Iterator>(begin), std::forward<Iterator>(end), v)) {
+ throw msgpack::parse_error("parse error");
+ }
+ referenced = v.referenced();
+ result = v.data();
+}
+
+} // namespace detail
+
+
+template <typename Iterator>
+inline msgpack::object_handle unpack(
+ Iterator&& begin, Iterator&& end,
+ bool& referenced,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ msgpack::object obj;
+ msgpack::unique_ptr<msgpack::zone> z(new msgpack::zone);
+ referenced = false;
+ detail::unpack_imp(
+ std::forward<Iterator>(begin), std::forward<Iterator>(end), *z, obj, referenced, f, user_data, limit);
+ return msgpack::object_handle(obj, msgpack::move(z));
+}
+
+template <typename Iterator>
+inline msgpack::object_handle unpack(
+ Iterator&& begin, Iterator&& end,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ bool referenced;
+ return unpack(std::forward<Iterator>(begin), std::forward<Iterator>(end), referenced, f, user_data, limit);
+}
+
+template <typename Iterator>
+inline msgpack::object unpack(
+ msgpack::zone& z,
+ Iterator&& begin, Iterator&& end,
+ bool& referenced,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ msgpack::object obj;
+ referenced = false;
+ detail::unpack_imp(
+ std::forward<Iterator>(begin), std::forward<Iterator>(end), z, obj, referenced, f, user_data, limit);
+ return obj;
+}
+
+template <typename Iterator>
+inline msgpack::object unpack(
+ msgpack::zone& z,
+ Iterator&& begin, Iterator&& end,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ bool referenced;
+ return unpack(
+ z, std::forward<Iterator>(begin), std::forward<Iterator>(end), referenced, f, user_data, limit);
+}
+
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#else // BOOST_VERSION >= 106100
+
+#error Boost 1.61.0 or later is required to use x3 parse
+
+#endif // BOOST_VERSION >= 106100
+
+#endif // defined(MSGPACK_USE_X3_PARSE)
+
+#endif // MSGPACK_V2_X3_UNPACK_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/x3_unpack_decl.hpp b/third_party/msgpack/include/msgpack/v2/x3_unpack_decl.hpp
new file mode 100644
index 0000000000..baaf71eb3c
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/x3_unpack_decl.hpp
@@ -0,0 +1,71 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_X3_UNPACK_DECL_HPP
+#define MSGPACK_V2_X3_UNPACK_DECL_HPP
+
+#if defined(MSGPACK_USE_X3_PARSE)
+
+#include "msgpack/versioning.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+namespace detail {
+
+template <typename Iterator>
+void
+unpack_imp(Iterator&& begin, Iterator&& end,
+ msgpack::zone& result_zone, msgpack::object& result, bool& referenced,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR,
+ unpack_limit const& limit = unpack_limit());
+
+} // namespace detail
+
+template <typename Iterator>
+msgpack::object_handle unpack(
+ Iterator&& begin, Iterator&& end,
+ bool& referenced,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR,
+ unpack_limit const& limit = unpack_limit());
+
+template <typename Iterator>
+msgpack::object_handle unpack(
+ Iterator&& begin, Iterator&& end,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR,
+ unpack_limit const& limit = unpack_limit());
+
+template <typename Iterator>
+msgpack::object unpack(
+ msgpack::zone& z,
+ Iterator&& begin, Iterator&& end,
+ bool& referenced,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR,
+ unpack_limit const& limit = unpack_limit());
+
+template <typename Iterator>
+msgpack::object unpack(
+ msgpack::zone& z,
+ Iterator&& begin, Iterator&& end,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR,
+ unpack_limit const& limit = unpack_limit());
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+
+#endif // defined(MSGPACK_USE_X3_PARSE)
+
+#endif // MSGPACK_V2_X3_UNPACK_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/zbuffer_decl.hpp b/third_party/msgpack/include/msgpack/v2/zbuffer_decl.hpp
new file mode 100644
index 0000000000..a4ff9d67c6
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/zbuffer_decl.hpp
@@ -0,0 +1,29 @@
+//
+// MessagePack for C++ deflate buffer implementation
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_ZBUFFER_DECL_HPP
+#define MSGPACK_V2_ZBUFFER_DECL_HPP
+
+#include "msgpack/v1/zbuffer_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v2) {
+/// @endcond
+
+using v1::zbuffer;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V2_ZBUFFER_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v2/zone_decl.hpp b/third_party/msgpack/include/msgpack/v2/zone_decl.hpp
new file mode 100644
index 0000000000..2590a78472
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v2/zone_decl.hpp
@@ -0,0 +1,21 @@
+//
+// MessagePack for C++ memory pool
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V2_ZONE_DECL_HPP
+#define MSGPACK_V2_ZONE_DECL_HPP
+
+#include "msgpack/cpp_config.hpp"
+
+#if defined(MSGPACK_USE_CPP03)
+#include "msgpack/v2/detail/cpp03_zone_decl.hpp"
+#else // MSGPACK_USE_CPP03
+#include "msgpack/v2/detail/cpp11_zone_decl.hpp"
+#endif // MSGPACK_USE_CPP03
+
+#endif // MSGPACK_V2_ZONE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/adaptor/adaptor_base.hpp b/third_party/msgpack/include/msgpack/v3/adaptor/adaptor_base.hpp
new file mode 100644
index 0000000000..180cca9944
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/adaptor/adaptor_base.hpp
@@ -0,0 +1,58 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015-2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_ADAPTOR_BASE_HPP
+#define MSGPACK_V3_ADAPTOR_BASE_HPP
+
+#include "msgpack/v3/adaptor/adaptor_base_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+
+namespace adaptor {
+
+// Adaptor functors
+
+template <typename T, typename Enabler>
+struct convert : v2::adaptor::convert<T, Enabler> {
+};
+
+template <typename T, typename Enabler>
+struct pack : v2::adaptor::pack<T, Enabler> {
+};
+
+template <typename T, typename Enabler>
+struct object<
+ T,
+ Enabler,
+ typename msgpack::enable_if<
+ !msgpack::is_same<T, std::string>::value &&
+ !msgpack::is_array<T>::value
+ >::type>
+ : v2::adaptor::object<T, Enabler> {
+};
+
+template <typename T, typename Enabler>
+struct object_with_zone : v2::adaptor::object_with_zone<T, Enabler> {
+};
+
+} // namespace adaptor
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+
+#endif // MSGPACK_V3_ADAPTOR_BASE_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/adaptor/adaptor_base_decl.hpp b/third_party/msgpack/include/msgpack/v3/adaptor/adaptor_base_decl.hpp
new file mode 100644
index 0000000000..f339f661e2
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/adaptor/adaptor_base_decl.hpp
@@ -0,0 +1,52 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_ADAPTOR_BASE_DECL_HPP
+#define MSGPACK_V3_ADAPTOR_BASE_DECL_HPP
+
+#include "msgpack/v2/adaptor/adaptor_base_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+using v2::packer;
+
+namespace adaptor {
+
+// Adaptor functors
+
+template <typename T, typename Enabler = void>
+struct convert;
+
+template <typename T, typename Enabler = void>
+struct pack;
+
+template <typename T, typename Enabler = void, typename Enabler2 = void>
+struct object;
+
+template <typename T, typename Enabler = void>
+struct object_with_zone;
+
+} // namespace adaptor
+
+// operators
+
+using v2::operator>>;
+using v2::operator<<;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V3_ADAPTOR_BASE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/adaptor/array_ref_decl.hpp b/third_party/msgpack/include/msgpack/v3/adaptor/array_ref_decl.hpp
new file mode 100644
index 0000000000..2d5f412414
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/adaptor/array_ref_decl.hpp
@@ -0,0 +1,36 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_TYPE_ARRAY_REF_DECL_HPP
+#define MSGPACK_V3_TYPE_ARRAY_REF_DECL_HPP
+
+#include "msgpack/v2/adaptor/array_ref_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+namespace type {
+
+using v2::type::array_ref;
+
+using v2::type::make_array_ref;
+
+
+} // namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V3_TYPE_ARRAY_REF_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/adaptor/boost/msgpack_variant_decl.hpp b/third_party/msgpack/include/msgpack/v3/adaptor/boost/msgpack_variant_decl.hpp
new file mode 100644
index 0000000000..e9cf700109
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/adaptor/boost/msgpack_variant_decl.hpp
@@ -0,0 +1,42 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_TYPE_BOOST_MSGPACK_VARIANT_DECL_HPP
+#define MSGPACK_V3_TYPE_BOOST_MSGPACK_VARIANT_DECL_HPP
+
+#if defined(MSGPACK_USE_BOOST)
+
+#include "msgpack/v2/adaptor/boost/msgpack_variant_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+namespace type {
+
+using v2::type::basic_variant;
+using v2::type::variant;
+using v2::type::variant_ref;
+
+using v2::type::operator<;
+
+using v2::type::operator==;
+
+} // namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_USE_BOOST
+#endif // MSGPACK_V3_TYPE_BOOST_MSGPACK_VARIANT_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/adaptor/check_container_size_decl.hpp b/third_party/msgpack/include/msgpack/v3/adaptor/check_container_size_decl.hpp
new file mode 100644
index 0000000000..c92050b2b1
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/adaptor/check_container_size_decl.hpp
@@ -0,0 +1,39 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_CHECK_CONTAINER_SIZE_DECL_HPP
+#define MSGPACK_V3_CHECK_CONTAINER_SIZE_DECL_HPP
+
+#include "msgpack/v2/adaptor/check_container_size_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+using v2::container_size_overflow;
+
+namespace detail {
+
+using v2::detail::check_container_size;
+
+using v2::detail::check_container_size_for_ext;
+
+} // namespace detail
+
+using v2::checked_get_container_size;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V3_CHECK_CONTAINER_SIZE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/adaptor/define_decl.hpp b/third_party/msgpack/include/msgpack/v3/adaptor/define_decl.hpp
new file mode 100644
index 0000000000..da9062f123
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/adaptor/define_decl.hpp
@@ -0,0 +1,23 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_DEFINE_DECL_HPP
+#define MSGPACK_V3_DEFINE_DECL_HPP
+
+#include "msgpack/cpp_config.hpp"
+
+#if defined(MSGPACK_USE_CPP03)
+#include "msgpack/v3/adaptor/detail/cpp03_define_array_decl.hpp"
+#include "msgpack/v3/adaptor/detail/cpp03_define_map_decl.hpp"
+#else // MSGPACK_USE_CPP03
+#include "msgpack/v3/adaptor/detail/cpp11_define_array_decl.hpp"
+#include "msgpack/v3/adaptor/detail/cpp11_define_map_decl.hpp"
+#endif // MSGPACK_USE_CPP03
+
+#endif // MSGPACK_V3_DEFINE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/adaptor/detail/cpp03_define_array_decl.hpp b/third_party/msgpack/include/msgpack/v3/adaptor/detail/cpp03_define_array_decl.hpp
new file mode 100644
index 0000000000..5907bfcc66
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/adaptor/detail/cpp03_define_array_decl.hpp
@@ -0,0 +1,31 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_CPP03_DEFINE_ARRAY_DECL_HPP
+#define MSGPACK_V3_CPP03_DEFINE_ARRAY_DECL_HPP
+
+#include "msgpack/v2/adaptor/detail/cpp03_define_array_decl.hpp"
+
+namespace msgpack {
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+namespace type {
+
+using v2::type::define_array;
+
+using v2::type::make_define_array;
+
+} // namespace type
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+} // namespace msgpack
+
+#endif // MSGPACK_V3_CPP03_DEFINE_ARRAY_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/adaptor/detail/cpp03_define_map_decl.hpp b/third_party/msgpack/include/msgpack/v3/adaptor/detail/cpp03_define_map_decl.hpp
new file mode 100644
index 0000000000..b98010ebe4
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/adaptor/detail/cpp03_define_map_decl.hpp
@@ -0,0 +1,31 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015-2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_CPP03_DEFINE_MAP_DECL_HPP
+#define MSGPACK_V3_CPP03_DEFINE_MAP_DECL_HPP
+
+#include "msgpack/v2/adaptor/detail/cpp03_define_map_decl.hpp"
+
+namespace msgpack {
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+namespace type {
+
+using v2::type::define_map;
+
+using v2::type::make_define_map;
+
+} // namespace type
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+} // namespace msgpack
+
+#endif // MSGPACK_V3_CPP03_DEFINE_MAP_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/adaptor/detail/cpp03_msgpack_tuple_decl.hpp b/third_party/msgpack/include/msgpack/v3/adaptor/detail/cpp03_msgpack_tuple_decl.hpp
new file mode 100644
index 0000000000..f81fad9d2d
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/adaptor/detail/cpp03_msgpack_tuple_decl.hpp
@@ -0,0 +1,43 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_CPP03_MSGPACK_TUPLE_DECL_HPP
+#define MSGPACK_V3_CPP03_MSGPACK_TUPLE_DECL_HPP
+
+#include "msgpack/v2/adaptor/detail/cpp03_msgpack_tuple_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+namespace type {
+
+using v2::type::tuple;
+
+using v2::type::tuple_element;
+
+using v2::type::const_tuple_element;
+
+using v2::type::tuple_type;
+
+using v2::type::get;
+
+using v2::type::make_tuple;
+
+} // namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V3_CPP03_MSGPACK_TUPLE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/adaptor/detail/cpp11_define_array_decl.hpp b/third_party/msgpack/include/msgpack/v3/adaptor/detail/cpp11_define_array_decl.hpp
new file mode 100644
index 0000000000..d6a128b2fc
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/adaptor/detail/cpp11_define_array_decl.hpp
@@ -0,0 +1,32 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_CPP11_DEFINE_ARRAY_DECL_HPP
+#define MSGPACK_V3_CPP11_DEFINE_ARRAY_DECL_HPP
+
+#include "msgpack/v2/adaptor/detail/cpp11_define_array_decl.hpp"
+
+namespace msgpack {
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+namespace type {
+
+using v2::type::define_array_imp;
+using v2::type::define_array;
+
+using v2::type::make_define_array;
+
+} // namespace type
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+} // namespace msgpack
+
+#endif // MSGPACK_V3_CPP11_DEFINE_ARRAY_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/adaptor/detail/cpp11_define_map_decl.hpp b/third_party/msgpack/include/msgpack/v3/adaptor/detail/cpp11_define_map_decl.hpp
new file mode 100644
index 0000000000..d14fa9a3e1
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/adaptor/detail/cpp11_define_map_decl.hpp
@@ -0,0 +1,31 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_CPP11_DEFINE_MAP_DECL_HPP
+#define MSGPACK_V3_CPP11_DEFINE_MAP_DECL_HPP
+
+#include "msgpack/v2/adaptor/detail/cpp11_define_map_decl.hpp"
+
+namespace msgpack {
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+namespace type {
+
+using v2::type::define_map_imp;
+using v2::type::define_map;
+using v2::type::make_define_map;
+
+} // namespace type
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+} // namespace msgpack
+
+#endif // MSGPACK_V3_CPP11_DEFINE_MAP_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/adaptor/detail/cpp11_msgpack_tuple_decl.hpp b/third_party/msgpack/include/msgpack/v3/adaptor/detail/cpp11_msgpack_tuple_decl.hpp
new file mode 100644
index 0000000000..76ab6c7f49
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/adaptor/detail/cpp11_msgpack_tuple_decl.hpp
@@ -0,0 +1,59 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_CPP11_MSGPACK_TUPLE_DECL_HPP
+#define MSGPACK_V3_CPP11_MSGPACK_TUPLE_DECL_HPP
+
+#include "msgpack/v2/adaptor/detail/cpp11_msgpack_tuple_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+namespace type {
+
+using v2::type::get;
+using v2::type::tuple_size;
+using v2::type::tuple_element;
+using v2::type::uses_allocator;
+using v2::type::ignore;
+using v2::type::swap;
+
+using v2::type::tuple;
+
+using v2::type::make_tuple;
+using v2::type::forward_as_tuple;
+using v2::type::tuple_cat;
+using v2::type::tie;
+
+} // namespace type
+
+// --- Pack from tuple to packer stream ---
+
+using v2::MsgpackTuplePacker;
+
+// --- Convert from tuple to object ---
+using v2::MsgpackTupleAs;
+
+using v2::MsgpackTupleAsImpl;
+
+using v2::MsgpackTupleConverter;
+
+// --- Convert from tuple to object with zone ---
+using v2::MsgpackTupleToObjectWithZone;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+///@endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V3_CPP11_MSGPACK_TUPLE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/adaptor/ext_decl.hpp b/third_party/msgpack/include/msgpack/v3/adaptor/ext_decl.hpp
new file mode 100644
index 0000000000..6d97f67191
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/adaptor/ext_decl.hpp
@@ -0,0 +1,34 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_TYPE_EXT_DECL_HPP
+#define MSGPACK_V3_TYPE_EXT_DECL_HPP
+
+#include "msgpack/v2/adaptor/ext_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+namespace type {
+
+using v2::type::ext_ref;
+using v2::type::ext;
+
+} // namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V3_TYPE_EXT_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/adaptor/fixint_decl.hpp b/third_party/msgpack/include/msgpack/v3/adaptor/fixint_decl.hpp
new file mode 100644
index 0000000000..67813e5920
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/adaptor/fixint_decl.hpp
@@ -0,0 +1,43 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_TYPE_FIXINT_DECL_HPP
+#define MSGPACK_V3_TYPE_FIXINT_DECL_HPP
+
+#include "msgpack/v2/adaptor/fixint_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+namespace type {
+
+using v2::type::fix_int;
+
+using v2::type::fix_uint8;
+using v2::type::fix_uint16;
+using v2::type::fix_uint32;
+using v2::type::fix_uint64;
+
+using v2::type::fix_int8;
+using v2::type::fix_int16;
+using v2::type::fix_int32;
+using v2::type::fix_int64;
+
+} // namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V3_TYPE_FIXINT_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/adaptor/int_decl.hpp b/third_party/msgpack/include/msgpack/v3/adaptor/int_decl.hpp
new file mode 100644
index 0000000000..3a3438ce73
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/adaptor/int_decl.hpp
@@ -0,0 +1,54 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_TYPE_INT_DECL_HPP
+#define MSGPACK_V3_TYPE_INT_DECL_HPP
+
+#include "msgpack/v2/adaptor/int_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3){
+/// @endcond
+
+namespace type {
+namespace detail {
+
+
+template <typename T, bool Signed>
+struct convert_integer_sign;
+
+template <typename T>
+struct is_signed;
+
+
+template <bool Signed>
+struct object_char_sign;
+
+//using v2::type::detail::convert_integer_sign;
+
+//using v2::type::detail::is_signed;
+
+using v2::type::detail::convert_integer;
+
+//using v2::type::detail::object_char_sign;
+
+using v2::type::detail::object_char;
+
+} // namespace detail
+} // namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V3_TYPE_INT_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/adaptor/map_decl.hpp b/third_party/msgpack/include/msgpack/v3/adaptor/map_decl.hpp
new file mode 100644
index 0000000000..3be2f3b22a
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/adaptor/map_decl.hpp
@@ -0,0 +1,33 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_TYPE_MAP_DECL_HPP
+#define MSGPACK_V3_TYPE_MAP_DECL_HPP
+
+#include "msgpack/v2/adaptor/map_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+namespace type {
+
+using v2::type::assoc_vector;
+
+} //namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V3_TYPE_MAP_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/adaptor/msgpack_tuple_decl.hpp b/third_party/msgpack/include/msgpack/v3/adaptor/msgpack_tuple_decl.hpp
new file mode 100644
index 0000000000..5de62b8d54
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/adaptor/msgpack_tuple_decl.hpp
@@ -0,0 +1,21 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_MSGPACK_TUPLE_DECL_HPP
+#define MSGPACK_V3_MSGPACK_TUPLE_DECL_HPP
+
+#include "msgpack/cpp_config.hpp"
+
+#if defined(MSGPACK_USE_CPP03)
+#include "msgpack/v3/adaptor/detail/cpp03_msgpack_tuple_decl.hpp"
+#else // MSGPACK_USE_CPP03
+#include "msgpack/v3/adaptor/detail/cpp11_msgpack_tuple_decl.hpp"
+#endif // MSGPACK_USE_CPP03
+
+#endif // MSGPACK_V3_MSGPACK_TUPLE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/adaptor/nil_decl.hpp b/third_party/msgpack/include/msgpack/v3/adaptor/nil_decl.hpp
new file mode 100644
index 0000000000..1948edaeea
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/adaptor/nil_decl.hpp
@@ -0,0 +1,42 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_TYPE_NIL_DECL_HPP
+#define MSGPACK_V3_TYPE_NIL_DECL_HPP
+
+#include "msgpack/v2/adaptor/nil_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+namespace type {
+
+using v2::type::nil_t;
+
+#if defined(MSGPACK_USE_LEGACY_NIL)
+
+typedef nil_t nil;
+
+#endif // defined(MSGPACK_USE_LEGACY_NIL)
+
+using v2::type::operator<;
+using v2::type::operator==;
+
+} // namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V3_TYPE_NIL_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/adaptor/raw_decl.hpp b/third_party/msgpack/include/msgpack/v3/adaptor/raw_decl.hpp
new file mode 100644
index 0000000000..e0133608b5
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/adaptor/raw_decl.hpp
@@ -0,0 +1,33 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_TYPE_RAW_DECL_HPP
+#define MSGPACK_V3_TYPE_RAW_DECL_HPP
+
+#include "msgpack/v2/adaptor/raw_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+namespace type {
+
+using v2::type::raw_ref;
+
+} // namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V3_TYPE_RAW_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/adaptor/size_equal_only_decl.hpp b/third_party/msgpack/include/msgpack/v3/adaptor/size_equal_only_decl.hpp
new file mode 100644
index 0000000000..fb21934f20
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/adaptor/size_equal_only_decl.hpp
@@ -0,0 +1,35 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_TYPE_SIZE_EQUAL_ONLY_DECL_HPP
+#define MSGPACK_V3_TYPE_SIZE_EQUAL_ONLY_DECL_HPP
+
+#include "msgpack/v2/adaptor/size_equal_only_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+namespace type {
+
+using v2::type::size_equal_only;
+using v2::type::make_size_equal_only;
+using v2::type::size;
+
+} // namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V3_TYPE_SIZE_EQUAL_ONLY_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/adaptor/v4raw_decl.hpp b/third_party/msgpack/include/msgpack/v3/adaptor/v4raw_decl.hpp
new file mode 100644
index 0000000000..cc4f841f7d
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/adaptor/v4raw_decl.hpp
@@ -0,0 +1,34 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_TYPE_V4RAW_DECL_HPP
+#define MSGPACK_V3_TYPE_V4RAW_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+namespace type {
+
+using v2::type::v4raw_ref;
+
+} // namespace type
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V3_TYPE_V4RAW_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/cpp_config_decl.hpp b/third_party/msgpack/include/msgpack/v3/cpp_config_decl.hpp
new file mode 100644
index 0000000000..2a33dc54e3
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/cpp_config_decl.hpp
@@ -0,0 +1,84 @@
+//
+// MessagePack for C++ C++03/C++11 Adaptation
+//
+// Copyright (C) 2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_CPP_CONFIG_DECL_HPP
+#define MSGPACK_V3_CPP_CONFIG_DECL_HPP
+
+#include "msgpack/v2/cpp_config_decl.hpp"
+
+#if defined(MSGPACK_USE_CPP03)
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+using v2::unique_ptr;
+
+using v2::move;
+
+using v2::enable_if;
+
+using v2::integral_constant;
+
+using v2::is_same;
+
+using v2::underlying_type;
+
+using v2::is_array;
+
+using v2::remove_const;
+using v2::remove_volatile;
+using v2::remove_cv;
+
+using v2::is_pointer;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+
+#else // MSGPACK_USE_CPP03
+
+namespace msgpack {
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+// unique_ptr
+using v2::unique_ptr;
+// using v2::make_unique; // since C++14
+using v2::hash;
+
+// utility
+using v2::move;
+using v2::swap;
+using v2::enable_if;
+using v2::is_same;
+using v2::underlying_type;
+using v2::is_array;
+
+using v2::remove_const;
+using v2::remove_volatile;
+using v2::remove_cv;
+
+using v2::is_pointer;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+} // namespace msgpack
+
+
+#endif // MSGPACK_USE_CPP03
+
+#endif // MSGPACK_V3_CPP_CONFIG_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/create_object_visitor_decl.hpp b/third_party/msgpack/include/msgpack/v3/create_object_visitor_decl.hpp
new file mode 100644
index 0000000000..b3ebb98f72
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/create_object_visitor_decl.hpp
@@ -0,0 +1,33 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_CREATE_OBJECT_VISITOR_DECL_HPP
+#define MSGPACK_V3_CREATE_OBJECT_VISITOR_DECL_HPP
+
+#include "msgpack/v2/create_object_visitor_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+namespace detail {
+
+using v2::detail::create_object_visitor;
+
+} // detail
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V3_CREATE_OBJECT_VISITOR_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/detail/cpp03_zone_decl.hpp b/third_party/msgpack/include/msgpack/v3/detail/cpp03_zone_decl.hpp
new file mode 100644
index 0000000000..64e91eb339
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/detail/cpp03_zone_decl.hpp
@@ -0,0 +1,31 @@
+//
+// MessagePack for C++ memory pool
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_CPP03_ZONE_DECL_HPP
+#define MSGPACK_V3_CPP03_ZONE_DECL_HPP
+
+#include "msgpack/v2/detail/cpp03_zone_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+using v2::zone;
+
+using v2::aligned_size;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V3_CPP03_ZONE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/detail/cpp11_zone_decl.hpp b/third_party/msgpack/include/msgpack/v3/detail/cpp11_zone_decl.hpp
new file mode 100644
index 0000000000..f1169d91ec
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/detail/cpp11_zone_decl.hpp
@@ -0,0 +1,31 @@
+//
+// MessagePack for C++ memory pool
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_CPP11_ZONE_DECL_HPP
+#define MSGPACK_V3_CPP11_ZONE_DECL_HPP
+
+#include "msgpack/v2/zone_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+using v2::zone;
+
+using v2::aligned_size;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V3_CPP11_ZONE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/fbuffer_decl.hpp b/third_party/msgpack/include/msgpack/v3/fbuffer_decl.hpp
new file mode 100644
index 0000000000..071b0f6a61
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/fbuffer_decl.hpp
@@ -0,0 +1,32 @@
+//
+// MessagePack for C++ FILE* buffer adaptor
+//
+// Copyright (C) 2013-2018 Vladimir Volodko and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_FBUFFER_DECL_HPP
+#define MSGPACK_V3_FBUFFER_DECL_HPP
+
+#include "msgpack/v2/fbuffer_decl.hpp"
+
+#include <cstdio>
+#include <stdexcept>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+using v2::fbuffer;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V3_FBUFFER_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/iterator_decl.hpp b/third_party/msgpack/include/msgpack/v3/iterator_decl.hpp
new file mode 100644
index 0000000000..999eb3be95
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/iterator_decl.hpp
@@ -0,0 +1,33 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_V3_ITERATOR_DECL_HPP
+#define MSGPACK_V3_ITERATOR_DECL_HPP
+#if !defined(MSGPACK_USE_CPP03)
+
+#include <msgpack/v2/iterator_decl.hpp>
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+using v2::begin;
+using v2::end;
+
+/// @cond
+}
+/// @endcond
+
+}
+
+#endif // !defined(MSGPACK_USE_CPP03)
+#endif // MSGPACK_V3_ITERATOR_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/meta_decl.hpp b/third_party/msgpack/include/msgpack/v3/meta_decl.hpp
new file mode 100644
index 0000000000..e47db93d08
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/meta_decl.hpp
@@ -0,0 +1,50 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2015-2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_V3_META_DECL_HPP
+#define MSGPACK_V3_META_DECL_HPP
+
+#if !defined(MSGPACK_USE_CPP03)
+
+#include "msgpack/v2/meta_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+namespace detail {
+
+using v2::detail::bool_pack;
+
+using v2::detail::all_of_imp;
+
+using v2::detail::any_of_imp;
+
+} // namespace detail
+
+using v2::all_of;
+
+using v2::any_of;
+
+using v2::seq;
+
+using v2::gen_seq;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // !defined(MSGPACK_USE_CPP03)
+
+#endif // MSGPACK_V3_META_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/null_visitor_decl.hpp b/third_party/msgpack/include/msgpack/v3/null_visitor_decl.hpp
new file mode 100644
index 0000000000..f4c1fc3c84
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/null_visitor_decl.hpp
@@ -0,0 +1,29 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2017 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_NULL_VISITOR_DECL_HPP
+#define MSGPACK_V3_NULL_VISITOR_DECL_HPP
+
+#include "msgpack/v2/null_visitor_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+using v2::null_visitor;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V3_NULL_VISITOR_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/object_decl.hpp b/third_party/msgpack/include/msgpack/v3/object_decl.hpp
new file mode 100644
index 0000000000..12dc41ebe5
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/object_decl.hpp
@@ -0,0 +1,53 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_OBJECT_DECL_HPP
+#define MSGPACK_V3_OBJECT_DECL_HPP
+
+#include "msgpack/v2/object_decl.hpp"
+#include "msgpack/adaptor/adaptor_base.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+using v2::object_handle;
+
+namespace detail {
+
+using v2::detail::add_ext_type_size;
+
+} // namespace detail
+
+using v2::aligned_zone_size;
+
+using v2::clone;
+
+namespace detail {
+
+using v2::detail::packer_serializer;
+
+} // namespace detail
+
+using v2::object_parser;
+using v2::object_pack_visitor;
+using v2::object_stringize_visitor;
+
+using v2::operator==;
+using v2::operator!=;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V3_OBJECT_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/object_fwd.hpp b/third_party/msgpack/include/msgpack/v3/object_fwd.hpp
new file mode 100644
index 0000000000..d282f1b4a4
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/object_fwd.hpp
@@ -0,0 +1,70 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2018 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_V3_OBJECT_FWD_HPP
+#define MSGPACK_V3_OBJECT_FWD_HPP
+
+#include "msgpack/v3/object_fwd_decl.hpp"
+#include "msgpack/object_fwd.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+#if !defined(MSGPACK_USE_CPP03)
+
+namespace adaptor {
+
+// If v2 has as specialization for T, then dispatch v2::adaptor::as<T>.
+// So I call v2::has_as<T> meta function intentionally.
+template <typename T>
+struct as<T, typename std::enable_if<v2::has_as<T>::value>::type> : v2::adaptor::as<T> {
+};
+
+} // namespace adaptor
+
+template <typename T>
+struct has_as {
+private:
+ template <typename U>
+ static auto check(U*) ->
+ typename std::enable_if<
+ // check v3 specialization
+ std::is_same<
+ decltype(adaptor::as<U>()(std::declval<msgpack::object>())),
+ U
+ >::value
+ ||
+ // check v2 specialization
+ v2::has_as<U>::value
+ ||
+ // check v1 specialization
+ v1::has_as<U>::value,
+ std::true_type
+ >::type;
+ template <typename...>
+ static std::false_type check(...);
+public:
+ using type = decltype(check<T>(MSGPACK_NULLPTR));
+ static constexpr bool value = type::value;
+};
+
+#endif // !defined(MSGPACK_USE_CPP03)
+
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V3_OBJECT_FWD_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/object_fwd_decl.hpp b/third_party/msgpack/include/msgpack/v3/object_fwd_decl.hpp
new file mode 100644
index 0000000000..9c4ca466cb
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/object_fwd_decl.hpp
@@ -0,0 +1,75 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2018 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef MSGPACK_V3_OBJECT_FWD_DECL_HPP
+#define MSGPACK_V3_OBJECT_FWD_DECL_HPP
+
+#include "msgpack/v2/object_fwd_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+namespace type {
+using v2::type::object_type;
+using v2::type::NIL;
+using v2::type::BOOLEAN;
+using v2::type::POSITIVE_INTEGER;
+using v2::type::NEGATIVE_INTEGER;
+using v2::type::FLOAT32;
+using v2::type::FLOAT64;
+using v2::type::FLOAT;
+#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
+using v2::type::DOUBLE;
+#endif // MSGPACK_USE_LEGACY_NAME_AS_FLOAT
+using v2::type::STR;
+using v2::type::BIN;
+using v2::type::ARRAY;
+using v2::type::MAP;
+using v2::type::EXT;
+} // namespace type
+
+using v2::object;
+
+using v2::object_kv;
+
+using v2::object_array;
+using v2::object_map;
+
+using v2::object_str;
+using v2::object_bin;
+using v2::object_ext;
+
+using v2::type_error;
+
+
+#if !defined(MSGPACK_USE_CPP03)
+
+namespace adaptor {
+
+template <typename T, typename Enabler = void>
+struct as;
+
+} // namespace adaptor
+
+template <typename T>
+struct has_as;
+
+#endif // !defined(MSGPACK_USE_CPP03)
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V3_OBJECT_FWD_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/pack_decl.hpp b/third_party/msgpack/include/msgpack/v3/pack_decl.hpp
new file mode 100644
index 0000000000..c02961748e
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/pack_decl.hpp
@@ -0,0 +1,55 @@
+//
+// MessagePack for C++ serializing routine
+//
+// Copyright (C) 2008-2018 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_PACK_DECL_HPP
+#define MSGPACK_V3_PACK_DECL_HPP
+
+#include "msgpack/v2/pack_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+using v2::packer;
+
+using v2::pack;
+
+#if MSGPACK_ENDIAN_LITTLE_BYTE
+
+using v2::take8_8;
+
+using v2::take8_16;
+
+using v2::take8_32;
+
+using v2::take8_64;
+
+#elif MSGPACK_ENDIAN_BIG_BYTE
+
+using v2::take8_8;
+
+using v2::take8_16;
+
+using v2::take8_32;
+
+using v2::take8_64;
+
+#else
+#error msgpack-c supports only big endian and little endian
+#endif
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V3_PACK_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/parse.hpp b/third_party/msgpack/include/msgpack/v3/parse.hpp
new file mode 100644
index 0000000000..b833f3e3b5
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/parse.hpp
@@ -0,0 +1,677 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_PARSE_HPP
+#define MSGPACK_V3_PARSE_HPP
+
+#if MSGPACK_DEFAULT_API_VERSION >= 2
+
+#include <cstddef>
+
+#include "msgpack/parse_return.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+namespace detail {
+
+template <typename VisitorHolder>
+class context {
+public:
+ context()
+ :m_trail(0), m_cs(MSGPACK_CS_HEADER)
+ {
+ }
+
+ void init()
+ {
+ m_cs = MSGPACK_CS_HEADER;
+ m_trail = 0;
+ m_stack.clear();
+ holder().visitor().init();
+ }
+
+ parse_return execute(const char* data, std::size_t len, std::size_t& off);
+
+private:
+ template <typename T>
+ static uint32_t next_cs(T p)
+ {
+ return static_cast<uint32_t>(*p) & 0x1f;
+ }
+
+ VisitorHolder& holder() {
+ return static_cast<VisitorHolder&>(*this);
+ }
+
+ template <typename T, typename StartVisitor, typename EndVisitor>
+ parse_return start_aggregate(
+ StartVisitor const& sv,
+ EndVisitor const& ev,
+ const char* load_pos,
+ std::size_t& off) {
+ typename value<T>::type size;
+ load<T>(size, load_pos);
+ if (size == 0) {
+ if (!sv(size)) {
+ off = m_current - m_start;
+ return PARSE_STOP_VISITOR;
+ }
+ if (!ev()) {
+ off = m_current - m_start;
+ return PARSE_STOP_VISITOR;
+ }
+ parse_return ret = m_stack.consume(holder(), m_current);
+ ++m_current;
+ if (ret != PARSE_CONTINUE) {
+ off = m_current - m_start;
+ return ret;
+ }
+ }
+ else {
+ if (!sv(size)) {
+ off = m_current - m_start;
+ return PARSE_STOP_VISITOR;
+ }
+ parse_return ret = m_stack.push(holder(), sv.type(), static_cast<uint32_t>(size));
+ ++m_current;
+ if (ret != PARSE_CONTINUE) {
+ off = m_current - m_start;
+ return ret;
+ }
+ }
+ m_cs = MSGPACK_CS_HEADER;
+ return PARSE_CONTINUE;
+ }
+
+ parse_return after_visit_proc(bool visit_result, std::size_t& off) {
+ if (!visit_result) {
+ off = m_current - m_start;
+ return PARSE_STOP_VISITOR;
+ }
+ parse_return ret = m_stack.consume(holder(), m_current);
+ ++m_current;
+ if (ret != PARSE_CONTINUE) {
+ off = m_current - m_start;
+ }
+ m_cs = MSGPACK_CS_HEADER;
+ return ret;
+ }
+
+ struct array_sv {
+ array_sv(VisitorHolder& visitor_holder):m_visitor_holder(visitor_holder) {}
+ bool operator()(uint32_t size) const {
+ return m_visitor_holder.visitor().start_array(size);
+ }
+ msgpack_container_type type() const { return MSGPACK_CT_ARRAY_ITEM; }
+ private:
+ VisitorHolder& m_visitor_holder;
+ };
+ struct array_ev {
+ array_ev(VisitorHolder& visitor_holder):m_visitor_holder(visitor_holder) {}
+ bool operator()() const {
+ return m_visitor_holder.visitor().end_array();
+ }
+ private:
+ VisitorHolder& m_visitor_holder;
+ };
+ struct map_sv {
+ map_sv(VisitorHolder& visitor_holder):m_visitor_holder(visitor_holder) {}
+ bool operator()(uint32_t size) const {
+ return m_visitor_holder.visitor().start_map(size);
+ }
+ msgpack_container_type type() const { return MSGPACK_CT_MAP_KEY; }
+ private:
+ VisitorHolder& m_visitor_holder;
+ };
+ struct map_ev {
+ map_ev(VisitorHolder& visitor_holder):m_visitor_holder(visitor_holder) {}
+ bool operator()() const {
+ return m_visitor_holder.visitor().end_map();
+ }
+ private:
+ VisitorHolder& m_visitor_holder;
+ };
+
+ struct unpack_stack {
+ struct stack_elem {
+ stack_elem(msgpack_container_type type, uint32_t rest):m_type(type), m_rest(rest) {}
+ msgpack_container_type m_type;
+ uint32_t m_rest;
+ };
+ unpack_stack() {
+ m_stack.reserve(MSGPACK_EMBED_STACK_SIZE);
+ }
+ parse_return push(VisitorHolder& visitor_holder, msgpack_container_type type, uint32_t rest) {
+ m_stack.push_back(stack_elem(type, rest));
+ switch (type) {
+ case MSGPACK_CT_ARRAY_ITEM:
+ return visitor_holder.visitor().start_array_item() ? PARSE_CONTINUE : PARSE_STOP_VISITOR;
+ case MSGPACK_CT_MAP_KEY:
+ return visitor_holder.visitor().start_map_key() ? PARSE_CONTINUE : PARSE_STOP_VISITOR;
+ case MSGPACK_CT_MAP_VALUE:
+ assert(0);
+ return PARSE_STOP_VISITOR;
+ }
+ assert(0);
+ return PARSE_STOP_VISITOR;
+ }
+ parse_return consume(VisitorHolder& visitor_holder, char const*& current) {
+ while (!m_stack.empty()) {
+ stack_elem& e = m_stack.back();
+ switch (e.m_type) {
+ case MSGPACK_CT_ARRAY_ITEM:
+ if (!visitor_holder.visitor().end_array_item()) {
+ --current;
+ return PARSE_STOP_VISITOR;
+ }
+ if (--e.m_rest == 0) {
+ m_stack.pop_back();
+ if (!visitor_holder.visitor().end_array()) {
+ --current;
+ return PARSE_STOP_VISITOR;
+ }
+ }
+ else {
+ if (!visitor_holder.visitor().start_array_item()) return PARSE_STOP_VISITOR;
+ return PARSE_CONTINUE;
+ }
+ break;
+ case MSGPACK_CT_MAP_KEY:
+ if (!visitor_holder.visitor().end_map_key()) {
+ --current;
+ return PARSE_STOP_VISITOR;
+ }
+ if (!visitor_holder.visitor().start_map_value()) return PARSE_STOP_VISITOR;
+ e.m_type = MSGPACK_CT_MAP_VALUE;
+ return PARSE_CONTINUE;
+ case MSGPACK_CT_MAP_VALUE:
+ if (!visitor_holder.visitor().end_map_value()) {
+ --current;
+ return PARSE_STOP_VISITOR;
+ }
+ if (--e.m_rest == 0) {
+ m_stack.pop_back();
+ if (!visitor_holder.visitor().end_map()) {
+ --current;
+ return PARSE_STOP_VISITOR;
+ }
+ }
+ else {
+ e.m_type = MSGPACK_CT_MAP_KEY;
+ if (!visitor_holder.visitor().start_map_key()) return PARSE_STOP_VISITOR;
+ return PARSE_CONTINUE;
+ }
+ break;
+ }
+ }
+ return PARSE_SUCCESS;
+ }
+ bool empty() const { return m_stack.empty(); }
+ void clear() { m_stack.clear(); }
+ private:
+ std::vector<stack_elem> m_stack;
+ };
+
+ char const* m_start;
+ char const* m_current;
+
+ std::size_t m_trail;
+ uint32_t m_cs;
+ uint32_t m_num_elements;
+ unpack_stack m_stack;
+};
+
+template <std::size_t N>
+inline void check_ext_size(std::size_t /*size*/) {
+}
+
+template <>
+inline void check_ext_size<4>(std::size_t size) {
+ if (size == 0xffffffff) throw msgpack::ext_size_overflow("ext size overflow");
+}
+
+template <typename VisitorHolder>
+inline parse_return context<VisitorHolder>::execute(const char* data, std::size_t len, std::size_t& off)
+{
+ assert(len >= off);
+
+ m_start = data;
+ m_current = data + off;
+ const char* const pe = data + len;
+ const char* n = MSGPACK_NULLPTR;
+
+ msgpack::object obj;
+
+ if(m_current == pe) {
+ off = m_current - m_start;
+ return PARSE_CONTINUE;
+ }
+ bool fixed_trail_again = false;
+ do {
+ if (m_cs == MSGPACK_CS_HEADER) {
+ fixed_trail_again = false;
+ int selector = *reinterpret_cast<const unsigned char*>(m_current);
+ if (0x00 <= selector && selector <= 0x7f) { // Positive Fixnum
+ uint8_t tmp = *reinterpret_cast<const uint8_t*>(m_current);
+ bool visret = holder().visitor().visit_positive_integer(tmp);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } else if(0xe0 <= selector && selector <= 0xff) { // Negative Fixnum
+ int8_t tmp = *reinterpret_cast<const int8_t*>(m_current);
+ bool visret = holder().visitor().visit_negative_integer(tmp);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } else if (0xc4 <= selector && selector <= 0xdf) {
+ const uint32_t trail[] = {
+ 1, // bin 8 0xc4
+ 2, // bin 16 0xc5
+ 4, // bin 32 0xc6
+ 1, // ext 8 0xc7
+ 2, // ext 16 0xc8
+ 4, // ext 32 0xc9
+ 4, // float 32 0xca
+ 8, // float 64 0xcb
+ 1, // uint 8 0xcc
+ 2, // uint 16 0xcd
+ 4, // uint 32 0xce
+ 8, // uint 64 0xcf
+ 1, // int 8 0xd0
+ 2, // int 16 0xd1
+ 4, // int 32 0xd2
+ 8, // int 64 0xd3
+ 2, // fixext 1 0xd4
+ 3, // fixext 2 0xd5
+ 5, // fixext 4 0xd6
+ 9, // fixext 8 0xd7
+ 17,// fixext 16 0xd8
+ 1, // str 8 0xd9
+ 2, // str 16 0xda
+ 4, // str 32 0xdb
+ 2, // array 16 0xdc
+ 4, // array 32 0xdd
+ 2, // map 16 0xde
+ 4, // map 32 0xdf
+ };
+ m_trail = trail[selector - 0xc4];
+ m_cs = next_cs(m_current);
+ fixed_trail_again = true;
+ } else if(0xa0 <= selector && selector <= 0xbf) { // FixStr
+ m_trail = static_cast<uint32_t>(*m_current) & 0x1f;
+ if(m_trail == 0) {
+ bool visret = holder().visitor().visit_str(n, static_cast<uint32_t>(m_trail));
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ }
+ else {
+ m_cs = MSGPACK_ACS_STR_VALUE;
+ fixed_trail_again = true;
+ }
+ } else if(0x90 <= selector && selector <= 0x9f) { // FixArray
+ parse_return ret = start_aggregate<fix_tag>(array_sv(holder()), array_ev(holder()), m_current, off);
+ if (ret != PARSE_CONTINUE) return ret;
+ } else if(0x80 <= selector && selector <= 0x8f) { // FixMap
+ parse_return ret = start_aggregate<fix_tag>(map_sv(holder()), map_ev(holder()), m_current, off);
+ if (ret != PARSE_CONTINUE) return ret;
+ } else if(selector == 0xc2) { // false
+ bool visret = holder().visitor().visit_boolean(false);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } else if(selector == 0xc3) { // true
+ bool visret = holder().visitor().visit_boolean(true);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } else if(selector == 0xc0) { // nil
+ bool visret = holder().visitor().visit_nil();
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } else {
+ off = m_current - m_start;
+ holder().visitor().parse_error(off - 1, off);
+ return PARSE_PARSE_ERROR;
+ }
+ // end MSGPACK_CS_HEADER
+ }
+ if (m_cs != MSGPACK_CS_HEADER || fixed_trail_again) {
+ if (fixed_trail_again) {
+ ++m_current;
+ fixed_trail_again = false;
+ }
+ if(static_cast<std::size_t>(pe - m_current) < m_trail) {
+ off = m_current - m_start;
+ return PARSE_CONTINUE;
+ }
+ n = m_current;
+ m_current += m_trail - 1;
+ switch(m_cs) {
+ //case MSGPACK_CS_
+ //case MSGPACK_CS_
+ case MSGPACK_CS_FLOAT: {
+ union { uint32_t i; float f; } mem;
+ load<uint32_t>(mem.i, n);
+ bool visret = holder().visitor().visit_float32(mem.f);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_DOUBLE: {
+ union { uint64_t i; double f; } mem;
+ load<uint64_t>(mem.i, n);
+#if defined(TARGET_OS_IPHONE)
+ // ok
+#elif defined(__arm__) && !(__ARM_EABI__) // arm-oabi
+ // https://github.com/msgpack/msgpack-perl/pull/1
+ mem.i = (mem.i & 0xFFFFFFFFUL) << 32UL | (mem.i >> 32UL);
+#endif
+ bool visret = holder().visitor().visit_float64(mem.f);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_UINT_8: {
+ uint8_t tmp;
+ load<uint8_t>(tmp, n);
+ bool visret = holder().visitor().visit_positive_integer(tmp);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_UINT_16: {
+ uint16_t tmp;
+ load<uint16_t>(tmp, n);
+ bool visret = holder().visitor().visit_positive_integer(tmp);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_UINT_32: {
+ uint32_t tmp;
+ load<uint32_t>(tmp, n);
+ bool visret = holder().visitor().visit_positive_integer(tmp);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_UINT_64: {
+ uint64_t tmp;
+ load<uint64_t>(tmp, n);
+ bool visret = holder().visitor().visit_positive_integer(tmp);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_INT_8: {
+ int8_t tmp;
+ load<int8_t>(tmp, n);
+ bool visret = holder().visitor().visit_negative_integer(tmp);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_INT_16: {
+ int16_t tmp;
+ load<int16_t>(tmp, n);
+ bool visret = holder().visitor().visit_negative_integer(tmp);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_INT_32: {
+ int32_t tmp;
+ load<int32_t>(tmp, n);
+ bool visret = holder().visitor().visit_negative_integer(tmp);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_INT_64: {
+ int64_t tmp;
+ load<int64_t>(tmp, n);
+ bool visret = holder().visitor().visit_negative_integer(tmp);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_FIXEXT_1: {
+ bool visret = holder().visitor().visit_ext(n, 1+1);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_FIXEXT_2: {
+ bool visret = holder().visitor().visit_ext(n, 2+1);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_FIXEXT_4: {
+ bool visret = holder().visitor().visit_ext(n, 4+1);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_FIXEXT_8: {
+ bool visret = holder().visitor().visit_ext(n, 8+1);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_FIXEXT_16: {
+ bool visret = holder().visitor().visit_ext(n, 16+1);
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_STR_8: {
+ uint8_t tmp;
+ load<uint8_t>(tmp, n);
+ m_trail = tmp;
+ if(m_trail == 0) {
+ bool visret = holder().visitor().visit_str(n, static_cast<uint32_t>(m_trail));
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ }
+ else {
+ m_cs = MSGPACK_ACS_STR_VALUE;
+ fixed_trail_again = true;
+ }
+ } break;
+ case MSGPACK_CS_BIN_8: {
+ uint8_t tmp;
+ load<uint8_t>(tmp, n);
+ m_trail = tmp;
+ if(m_trail == 0) {
+ bool visret = holder().visitor().visit_bin(n, static_cast<uint32_t>(m_trail));
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ }
+ else {
+ m_cs = MSGPACK_ACS_BIN_VALUE;
+ fixed_trail_again = true;
+ }
+ } break;
+ case MSGPACK_CS_EXT_8: {
+ uint8_t tmp;
+ load<uint8_t>(tmp, n);
+ m_trail = tmp + 1;
+ if(m_trail == 0) {
+ bool visret = holder().visitor().visit_ext(n, static_cast<uint32_t>(m_trail));
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ }
+ else {
+ m_cs = MSGPACK_ACS_EXT_VALUE;
+ fixed_trail_again = true;
+ }
+ } break;
+ case MSGPACK_CS_STR_16: {
+ uint16_t tmp;
+ load<uint16_t>(tmp, n);
+ m_trail = tmp;
+ if(m_trail == 0) {
+ bool visret = holder().visitor().visit_str(n, static_cast<uint32_t>(m_trail));
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ }
+ else {
+ m_cs = MSGPACK_ACS_STR_VALUE;
+ fixed_trail_again = true;
+ }
+ } break;
+ case MSGPACK_CS_BIN_16: {
+ uint16_t tmp;
+ load<uint16_t>(tmp, n);
+ m_trail = tmp;
+ if(m_trail == 0) {
+ bool visret = holder().visitor().visit_bin(n, static_cast<uint32_t>(m_trail));
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ }
+ else {
+ m_cs = MSGPACK_ACS_BIN_VALUE;
+ fixed_trail_again = true;
+ }
+ } break;
+ case MSGPACK_CS_EXT_16: {
+ uint16_t tmp;
+ load<uint16_t>(tmp, n);
+ m_trail = tmp + 1;
+ if(m_trail == 0) {
+ bool visret = holder().visitor().visit_ext(n, static_cast<uint32_t>(m_trail));
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ }
+ else {
+ m_cs = MSGPACK_ACS_EXT_VALUE;
+ fixed_trail_again = true;
+ }
+ } break;
+ case MSGPACK_CS_STR_32: {
+ uint32_t tmp;
+ load<uint32_t>(tmp, n);
+ m_trail = tmp;
+ if(m_trail == 0) {
+ bool visret = holder().visitor().visit_str(n, static_cast<uint32_t>(m_trail));
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ }
+ else {
+ m_cs = MSGPACK_ACS_STR_VALUE;
+ fixed_trail_again = true;
+ }
+ } break;
+ case MSGPACK_CS_BIN_32: {
+ uint32_t tmp;
+ load<uint32_t>(tmp, n);
+ m_trail = tmp;
+ if(m_trail == 0) {
+ bool visret = holder().visitor().visit_bin(n, static_cast<uint32_t>(m_trail));
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ }
+ else {
+ m_cs = MSGPACK_ACS_BIN_VALUE;
+ fixed_trail_again = true;
+ }
+ } break;
+ case MSGPACK_CS_EXT_32: {
+ uint32_t tmp;
+ load<uint32_t>(tmp, n);
+ check_ext_size<sizeof(std::size_t)>(tmp);
+ m_trail = tmp;
+ ++m_trail;
+ if(m_trail == 0) {
+ bool visret = holder().visitor().visit_ext(n, static_cast<uint32_t>(m_trail));
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ }
+ else {
+ m_cs = MSGPACK_ACS_EXT_VALUE;
+ fixed_trail_again = true;
+ }
+ } break;
+ case MSGPACK_ACS_STR_VALUE: {
+ bool visret = holder().visitor().visit_str(n, static_cast<uint32_t>(m_trail));
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_ACS_BIN_VALUE: {
+ bool visret = holder().visitor().visit_bin(n, static_cast<uint32_t>(m_trail));
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_ACS_EXT_VALUE: {
+ bool visret = holder().visitor().visit_ext(n, static_cast<uint32_t>(m_trail));
+ parse_return upr = after_visit_proc(visret, off);
+ if (upr != PARSE_CONTINUE) return upr;
+ } break;
+ case MSGPACK_CS_ARRAY_16: {
+ parse_return ret = start_aggregate<uint16_t>(array_sv(holder()), array_ev(holder()), n, off);
+ if (ret != PARSE_CONTINUE) return ret;
+
+ } break;
+ case MSGPACK_CS_ARRAY_32: {
+ parse_return ret = start_aggregate<uint32_t>(array_sv(holder()), array_ev(holder()), n, off);
+ if (ret != PARSE_CONTINUE) return ret;
+ } break;
+ case MSGPACK_CS_MAP_16: {
+ parse_return ret = start_aggregate<uint16_t>(map_sv(holder()), map_ev(holder()), n, off);
+ if (ret != PARSE_CONTINUE) return ret;
+ } break;
+ case MSGPACK_CS_MAP_32: {
+ parse_return ret = start_aggregate<uint32_t>(map_sv(holder()), map_ev(holder()), n, off);
+ if (ret != PARSE_CONTINUE) return ret;
+ } break;
+ default:
+ off = m_current - m_start;
+ holder().visitor().parse_error(n - m_start - 1, n - m_start);
+ return PARSE_PARSE_ERROR;
+ }
+ }
+ } while(m_current != pe);
+
+ off = m_current - m_start;
+ return PARSE_CONTINUE;
+}
+
+template <typename Visitor>
+struct parse_helper : detail::context<parse_helper<Visitor> > {
+ parse_helper(Visitor& v):m_visitor(v) {}
+ parse_return execute(const char* data, std::size_t len, std::size_t& off) {
+ return detail::context<parse_helper<Visitor> >::execute(data, len, off);
+ }
+ Visitor& visitor() const { return m_visitor; }
+ Visitor& m_visitor;
+};
+
+template <typename Visitor>
+inline parse_return
+parse_imp(const char* data, size_t len, size_t& off, Visitor& v) {
+ std::size_t noff = off;
+ if(len <= noff) {
+ // FIXME
+ v.insufficient_bytes(noff, noff);
+ return PARSE_CONTINUE;
+ }
+ detail::parse_helper<Visitor> h(v);
+ parse_return ret = h.execute(data, len, noff);
+ off = noff;
+ switch (ret) {
+ case PARSE_CONTINUE:
+ v.insufficient_bytes(noff - 1, noff);
+ return ret;
+ case PARSE_SUCCESS:
+ if(noff < len) {
+ return PARSE_EXTRA_BYTES;
+ }
+ return ret;
+ default:
+ return ret;
+ }
+}
+
+} // detail
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_DEFAULT_API_VERSION >= 2
+
+#endif // MSGPACK_V3_PARSE_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/parse_decl.hpp b/third_party/msgpack/include/msgpack/v3/parse_decl.hpp
new file mode 100644
index 0000000000..f1c2d7adae
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/parse_decl.hpp
@@ -0,0 +1,49 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2018-2017 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_PARSE_DECL_HPP
+#define MSGPACK_V3_PARSE_DECL_HPP
+
+#include "msgpack/v2/parse_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+namespace detail {
+
+template <typename VisitorHolder>
+class context;
+
+} // detail
+
+using v2::parser;
+using v2::parse;
+
+namespace detail {
+
+template <typename Visitor>
+struct parse_helper;
+
+template <typename Visitor>
+inline parse_return
+parse_imp(const char* data, size_t len, size_t& off, Visitor& v);
+
+} // detail
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+
+#endif // MSGPACK_V3_PARSE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/parse_return.hpp b/third_party/msgpack/include/msgpack/v3/parse_return.hpp
new file mode 100644
index 0000000000..0c79c6fa69
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/parse_return.hpp
@@ -0,0 +1,35 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2008-2018 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_PARSE_RETURN_HPP
+#define MSGPACK_V3_PARSE_RETURN_HPP
+
+#include "msgpack/v2/parse_return.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+using v2::parse_return;
+
+using v2::PARSE_SUCCESS;
+using v2::PARSE_EXTRA_BYTES;
+using v2::PARSE_CONTINUE;
+using v2::PARSE_PARSE_ERROR;
+using v2::PARSE_STOP_VISITOR;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V3_PARSE_RETURN_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/sbuffer_decl.hpp b/third_party/msgpack/include/msgpack/v3/sbuffer_decl.hpp
new file mode 100644
index 0000000000..c713c850fd
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/sbuffer_decl.hpp
@@ -0,0 +1,33 @@
+//
+// MessagePack for C++ simple buffer implementation
+//
+// Copyright (C) 2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_SBUFFER_DECL_HPP
+#define MSGPACK_V3_SBUFFER_DECL_HPP
+
+#include "msgpack/versioning.hpp"
+
+#ifndef MSGPACK_SBUFFER_INIT_SIZE
+#define MSGPACK_SBUFFER_INIT_SIZE 8192
+#endif
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+using v2::sbuffer;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V3_SBUFFER_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/unpack.hpp b/third_party/msgpack/include/msgpack/v3/unpack.hpp
new file mode 100644
index 0000000000..659411b682
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/unpack.hpp
@@ -0,0 +1,192 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_UNPACK_HPP
+#define MSGPACK_V3_UNPACK_HPP
+
+#include "msgpack/unpack_decl.hpp"
+#include "msgpack/parse.hpp"
+#include "msgpack/create_object_visitor.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+inline msgpack::object_handle unpack(
+ const char* data, std::size_t len, std::size_t& off, bool& referenced,
+ msgpack::unpack_reference_func f, void* user_data,
+ msgpack::unpack_limit const& limit
+)
+{
+ msgpack::object obj;
+ msgpack::unique_ptr<msgpack::zone> z(new msgpack::zone);
+ referenced = false;
+ parse_return ret = detail::unpack_imp(
+ data, len, off, *z, obj, referenced, f, user_data, limit);
+
+ switch(ret) {
+ case msgpack::PARSE_SUCCESS:
+ return msgpack::object_handle(obj, msgpack::move(z));
+ case msgpack::PARSE_EXTRA_BYTES:
+ return msgpack::object_handle(obj, msgpack::move(z));
+ default:
+ break;
+ }
+ return msgpack::object_handle();
+}
+
+inline msgpack::object_handle unpack(
+ const char* data, std::size_t len, std::size_t& off,
+ msgpack::unpack_reference_func f, void* user_data,
+ msgpack::unpack_limit const& limit)
+{
+ bool referenced;
+ return msgpack::v3::unpack(data, len, off, referenced, f, user_data, limit);
+}
+
+inline msgpack::object_handle unpack(
+ const char* data, std::size_t len, bool& referenced,
+ msgpack::unpack_reference_func f, void* user_data,
+ msgpack::unpack_limit const& limit)
+{
+ std::size_t off = 0;
+ return msgpack::v3::unpack(data, len, off, referenced, f, user_data, limit);
+}
+
+inline msgpack::object_handle unpack(
+ const char* data, std::size_t len,
+ msgpack::unpack_reference_func f, void* user_data,
+ msgpack::unpack_limit const& limit)
+{
+ bool referenced;
+ std::size_t off = 0;
+ return msgpack::v3::unpack(data, len, off, referenced, f, user_data, limit);
+}
+
+inline void unpack(
+ msgpack::object_handle& result,
+ const char* data, std::size_t len, std::size_t& off, bool& referenced,
+ msgpack::unpack_reference_func f, void* user_data,
+ msgpack::unpack_limit const& limit)
+{
+ msgpack::object obj;
+ msgpack::unique_ptr<msgpack::zone> z(new msgpack::zone);
+ referenced = false;
+ parse_return ret = detail::unpack_imp(
+ data, len, off, *z, obj, referenced, f, user_data, limit);
+
+ switch(ret) {
+ case msgpack::PARSE_SUCCESS:
+ result.set(obj);
+ result.zone() = msgpack::move(z);
+ return;
+ case msgpack::PARSE_EXTRA_BYTES:
+ result.set(obj);
+ result.zone() = msgpack::move(z);
+ return;
+ default:
+ return;
+ }
+}
+
+inline void unpack(
+ msgpack::object_handle& result,
+ const char* data, std::size_t len, std::size_t& off,
+ msgpack::v3::unpack_reference_func f, void* user_data,
+ msgpack::unpack_limit const& limit)
+{
+ bool referenced;
+ msgpack::v3::unpack(result, data, len, off, referenced, f, user_data, limit);
+}
+
+inline void unpack(
+ msgpack::object_handle& result,
+ const char* data, std::size_t len, bool& referenced,
+ msgpack::unpack_reference_func f, void* user_data,
+ msgpack::unpack_limit const& limit)
+{
+ std::size_t off = 0;
+ msgpack::v3::unpack(result, data, len, off, referenced, f, user_data, limit);
+}
+
+inline void unpack(
+ msgpack::object_handle& result,
+ const char* data, std::size_t len,
+ msgpack::unpack_reference_func f, void* user_data,
+ msgpack::unpack_limit const& limit)
+{
+ bool referenced;
+ std::size_t off = 0;
+ msgpack::v3::unpack(result, data, len, off, referenced, f, user_data, limit);
+}
+
+
+inline msgpack::object unpack(
+ msgpack::zone& z,
+ const char* data, std::size_t len, std::size_t& off, bool& referenced,
+ msgpack::unpack_reference_func f, void* user_data,
+ msgpack::unpack_limit const& limit)
+{
+ msgpack::object obj;
+ referenced = false;
+ parse_return ret = detail::unpack_imp(
+ data, len, off, z, obj, referenced, f, user_data, limit);
+
+ switch(ret) {
+ case msgpack::PARSE_SUCCESS:
+ return obj;
+ case msgpack::PARSE_EXTRA_BYTES:
+ return obj;
+ default:
+ break;
+ }
+ return obj;
+}
+
+inline msgpack::object unpack(
+ msgpack::zone& z,
+ const char* data, std::size_t len, std::size_t& off,
+ msgpack::unpack_reference_func f, void* user_data,
+ msgpack::unpack_limit const& limit)
+{
+ bool referenced;
+ return msgpack::v3::unpack(z, data, len, off, referenced, f, user_data, limit);
+}
+
+inline msgpack::object unpack(
+ msgpack::zone& z,
+ const char* data, std::size_t len, bool& referenced,
+ msgpack::unpack_reference_func f, void* user_data,
+ msgpack::unpack_limit const& limit)
+{
+ std::size_t off = 0;
+ return msgpack::v3::unpack(z, data, len, off, referenced, f, user_data, limit);
+}
+
+inline msgpack::object unpack(
+ msgpack::zone& z,
+ const char* data, std::size_t len,
+ msgpack::unpack_reference_func f, void* user_data,
+ msgpack::unpack_limit const& limit)
+{
+ bool referenced;
+ std::size_t off = 0;
+ return msgpack::v3::unpack(z, data, len, off, referenced, f, user_data, limit);
+}
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+
+#endif // MSGPACK_V3_UNPACK_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/unpack_decl.hpp b/third_party/msgpack/include/msgpack/v3/unpack_decl.hpp
new file mode 100644
index 0000000000..5ae8831fae
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/unpack_decl.hpp
@@ -0,0 +1,304 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_UNPACK_DECL_HPP
+#define MSGPACK_V3_UNPACK_DECL_HPP
+
+#include "msgpack/v2/unpack_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+using v2::unpack_reference_func;
+
+using v2::unpack_error;
+using v2::parse_error;
+using v2::insufficient_bytes;
+using v2::size_overflow;
+using v2::array_size_overflow;
+using v2::map_size_overflow;
+using v2::str_size_overflow;
+using v2::bin_size_overflow;
+using v2::ext_size_overflow;
+using v2::depth_size_overflow;
+using v2::unpack_limit;
+
+namespace detail {
+
+using v2::detail::unpack_user;
+
+using v2::detail::unpack_uint8;
+using v2::detail::unpack_uint16;
+using v2::detail::unpack_uint32;
+using v2::detail::unpack_uint64;
+
+using v2::detail::unpack_int8;
+using v2::detail::unpack_int16;
+using v2::detail::unpack_int32;
+using v2::detail::unpack_int64;
+
+using v2::detail::unpack_float;
+using v2::detail::unpack_double;
+
+using v2::detail::unpack_nil;
+
+using v2::detail::unpack_true;
+using v2::detail::unpack_false;
+
+using v2::detail::unpack_array;
+using v2::detail::unpack_array_item;
+using v2::detail::unpack_map;
+using v2::detail::unpack_map_item;
+using v2::detail::unpack_str;
+using v2::detail::unpack_bin;
+using v2::detail::unpack_ext;
+
+using v2::detail::unpack_stack;
+
+using v2::detail::init_count;
+using v2::detail::decr_count;
+using v2::detail::incr_count;
+
+using v2::detail::get_count;
+
+using v2::detail::fix_tag;
+
+using v2::detail::value;
+
+using v2::detail::load;
+
+} // detail
+
+
+using v2::unpacked;
+using v2::unpacker;
+using v2::basic_unpacker;
+
+namespace detail {
+
+using v2::detail::unpack_imp;
+
+} // detail
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param off The offset position of the buffer. It is read and overwritten.
+ * @param referenced If the unpacked object contains reference of the buffer, then set as true, otherwise false.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ * @return object_handle that contains unpacked data.
+ *
+ */
+msgpack::object_handle unpack(
+ const char* data, std::size_t len, std::size_t& off, bool& referenced,
+ msgpack::unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, msgpack::unpack_limit const& limit = unpack_limit());
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param off The offset position of the buffer. It is read and overwritten.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ * @return object_handle that contains unpacked data.
+ *
+ */
+msgpack::object_handle unpack(
+ const char* data, std::size_t len, std::size_t& off,
+ msgpack::unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, msgpack::unpack_limit const& limit = unpack_limit());
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param referenced If the unpacked object contains reference of the buffer, then set as true, otherwise false.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ * @return object_handle that contains unpacked data.
+ *
+ */
+msgpack::object_handle unpack(
+ const char* data, std::size_t len, bool& referenced,
+ msgpack::unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, msgpack::unpack_limit const& limit = unpack_limit());
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ * @return object_handle that contains unpacked data.
+ *
+ */
+msgpack::object_handle unpack(
+ const char* data, std::size_t len,
+ msgpack::unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, msgpack::unpack_limit const& limit = unpack_limit());
+
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param result The object_handle that contains unpacked data.
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param off The offset position of the buffer. It is read and overwritten.
+ * @param referenced If the unpacked object contains reference of the buffer, then set as true, otherwise false.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ *
+ */
+void unpack(
+ msgpack::object_handle& result,
+ const char* data, std::size_t len, std::size_t& off, bool& referenced,
+ msgpack::unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, msgpack::unpack_limit const& limit = unpack_limit());
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param result The object_handle that contains unpacked data.
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param off The offset position of the buffer. It is read and overwritten.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ *
+ */
+void unpack(
+ msgpack::object_handle& result,
+ const char* data, std::size_t len, std::size_t& off,
+ msgpack::unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, msgpack::unpack_limit const& limit = unpack_limit());
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param result The object_handle that contains unpacked data.
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param referenced If the unpacked object contains reference of the buffer, then set as true, otherwise false.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ *
+ */
+void unpack(
+ msgpack::object_handle& result,
+ const char* data, std::size_t len, bool& referenced,
+ msgpack::unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, msgpack::unpack_limit const& limit = unpack_limit());
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param result The object_handle that contains unpacked data.
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ *
+ */
+void unpack(
+ msgpack::object_handle& result,
+ const char* data, std::size_t len,
+ msgpack::unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, msgpack::unpack_limit const& limit = unpack_limit());
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param z The msgpack::zone that is used as a memory of unpacked msgpack objects.
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param off The offset position of the buffer. It is read and overwritten.
+ * @param referenced If the unpacked object contains reference of the buffer, then set as true, otherwise false.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ * @return msgpack::object that contains unpacked data.
+ *
+ */
+msgpack::object unpack(
+ msgpack::zone& z,
+ const char* data, std::size_t len, std::size_t& off, bool& referenced,
+ msgpack::unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, msgpack::unpack_limit const& limit = unpack_limit());
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param z The msgpack::zone that is used as a memory of unpacked msgpack objects.
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param off The offset position of the buffer. It is read and overwritten.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ * @return msgpack::object that contains unpacked data.
+ *
+ */
+msgpack::object unpack(
+ msgpack::zone& z,
+ const char* data, std::size_t len, std::size_t& off,
+ msgpack::unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, msgpack::unpack_limit const& limit = unpack_limit());
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param z The msgpack::zone that is used as a memory of unpacked msgpack objects.
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param referenced If the unpacked object contains reference of the buffer, then set as true, otherwise false.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ * @return msgpack::object that contains unpacked data.
+ *
+ */
+msgpack::object unpack(
+ msgpack::zone& z,
+ const char* data, std::size_t len, bool& referenced,
+ msgpack::unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, msgpack::unpack_limit const& limit = unpack_limit());
+
+/// Unpack msgpack::object from a buffer.
+/**
+ * @param z The msgpack::zone that is used as a memory of unpacked msgpack objects.
+ * @param data The pointer to the buffer.
+ * @param len The length of the buffer.
+ * @param f A judging function that msgpack::object refer to the buffer.
+ * @param user_data This parameter is passed to f.
+ * @param limit The size limit information of msgpack::object.
+ *
+ * @return msgpack::object that contains unpacked data.
+ *
+ */
+msgpack::object unpack(
+ msgpack::zone& z,
+ const char* data, std::size_t len,
+ msgpack::unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, msgpack::unpack_limit const& limit = unpack_limit());
+
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V3_UNPACK_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/vrefbuffer_decl.hpp b/third_party/msgpack/include/msgpack/v3/vrefbuffer_decl.hpp
new file mode 100644
index 0000000000..9791904b07
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/vrefbuffer_decl.hpp
@@ -0,0 +1,29 @@
+//
+// MessagePack for C++ zero-copy buffer implementation
+//
+// Copyright (C) 2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_VREFBUFFER_DECL_HPP
+#define MSGPACK_V3_VREFBUFFER_DECL_HPP
+
+#include "msgpack/v2/vrefbuffer_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+using v2::vrefbuffer;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V3_VREFBUFFER_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/x3_parse_decl.hpp b/third_party/msgpack/include/msgpack/v3/x3_parse_decl.hpp
new file mode 100644
index 0000000000..ded9d25a66
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/x3_parse_decl.hpp
@@ -0,0 +1,34 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_X3_PARSE_DECL_HPP
+#define MSGPACK_V3_X3_PARSE_DECL_HPP
+
+#if defined(MSGPACK_USE_X3_PARSE)
+
+#include "msgpack/v2/x3_parse_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+using v2::parse;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v2)
+/// @endcond
+
+} // namespace msgpack
+
+
+#endif // defined(MSGPACK_USE_X3_PARSE)
+
+#endif // MSGPACK_V3_X3_PARSE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/x3_unpack.hpp b/third_party/msgpack/include/msgpack/v3/x3_unpack.hpp
new file mode 100644
index 0000000000..bdadcf169b
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/x3_unpack.hpp
@@ -0,0 +1,97 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_X3_UNPACK_HPP
+#define MSGPACK_V3_X3_UNPACK_HPP
+
+#if defined(MSGPACK_USE_X3_PARSE)
+
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 106100
+
+#include "msgpack/versioning.hpp"
+#include "msgpack/create_object_visitor.hpp"
+#include "msgpack/x3_unpack_decl.hpp"
+#include "msgpack/x3_parse.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+
+template <typename Iterator>
+inline msgpack::object_handle unpack(
+ Iterator&& begin, Iterator&& end,
+ bool& referenced,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ msgpack::object obj;
+ msgpack::unique_ptr<msgpack::zone> z(new msgpack::zone);
+ referenced = false;
+ detail::unpack_imp(
+ std::forward<Iterator>(begin), std::forward<Iterator>(end), *z, obj, referenced, f, user_data, limit);
+ return msgpack::object_handle(obj, msgpack::move(z));
+}
+
+template <typename Iterator>
+inline msgpack::object_handle unpack(
+ Iterator&& begin, Iterator&& end,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ bool referenced;
+ return unpack(std::forward<Iterator>(begin), std::forward<Iterator>(end), referenced, f, user_data, limit);
+}
+
+template <typename Iterator>
+inline msgpack::object unpack(
+ msgpack::zone& z,
+ Iterator&& begin, Iterator&& end,
+ bool& referenced,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ msgpack::object obj;
+ referenced = false;
+ detail::unpack_imp(
+ std::forward<Iterator>(begin), std::forward<Iterator>(end), z, obj, referenced, f, user_data, limit);
+ return obj;
+}
+
+template <typename Iterator>
+inline msgpack::object unpack(
+ msgpack::zone& z,
+ Iterator&& begin, Iterator&& end,
+ unpack_reference_func f, void* user_data,
+ unpack_limit const& limit)
+{
+ bool referenced;
+ return unpack(
+ z, std::forward<Iterator>(begin), std::forward<Iterator>(end), referenced, f, user_data, limit);
+}
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+#else // BOOST_VERSION >= 106100
+
+#error Boost 1.61.0 or later is required to use x3 parse
+
+#endif // BOOST_VERSION >= 106100
+
+#endif // defined(MSGPACK_USE_X3_PARSE)
+
+#endif // MSGPACK_V3_X3_UNPACK_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/x3_unpack_decl.hpp b/third_party/msgpack/include/msgpack/v3/x3_unpack_decl.hpp
new file mode 100644
index 0000000000..b699447698
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/x3_unpack_decl.hpp
@@ -0,0 +1,65 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2017 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_X3_UNPACK_DECL_HPP
+#define MSGPACK_V3_X3_UNPACK_DECL_HPP
+
+#if defined(MSGPACK_USE_X3_PARSE)
+
+#include "msgpack/v2/x3_unpack_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+namespace detail {
+
+using v2::detail::unpack_imp;
+
+} // detail
+
+template <typename Iterator>
+msgpack::object_handle unpack(
+ Iterator&& begin, Iterator&& end,
+ bool& referenced,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR,
+ unpack_limit const& limit = unpack_limit());
+
+template <typename Iterator>
+msgpack::object_handle unpack(
+ Iterator&& begin, Iterator&& end,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR,
+ unpack_limit const& limit = unpack_limit());
+
+template <typename Iterator>
+msgpack::object unpack(
+ msgpack::zone& z,
+ Iterator&& begin, Iterator&& end,
+ bool& referenced,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR,
+ unpack_limit const& limit = unpack_limit());
+
+template <typename Iterator>
+msgpack::object unpack(
+ msgpack::zone& z,
+ Iterator&& begin, Iterator&& end,
+ unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR,
+ unpack_limit const& limit = unpack_limit());
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // defined(MSGPACK_USE_X3_PARSE)
+
+#endif // MSGPACK_V3_X3_UNPACK_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/zbuffer_decl.hpp b/third_party/msgpack/include/msgpack/v3/zbuffer_decl.hpp
new file mode 100644
index 0000000000..ef7a898990
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/zbuffer_decl.hpp
@@ -0,0 +1,29 @@
+//
+// MessagePack for C++ deflate buffer implementation
+//
+// Copyright (C) 2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_ZBUFFER_DECL_HPP
+#define MSGPACK_V3_ZBUFFER_DECL_HPP
+
+#include "msgpack/v2/zbuffer_decl.hpp"
+
+namespace msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v3) {
+/// @endcond
+
+using v2::zbuffer;
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v3)
+/// @endcond
+
+} // namespace msgpack
+
+#endif // MSGPACK_V3_ZBUFFER_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/v3/zone_decl.hpp b/third_party/msgpack/include/msgpack/v3/zone_decl.hpp
new file mode 100644
index 0000000000..ae4f2b279c
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/v3/zone_decl.hpp
@@ -0,0 +1,21 @@
+//
+// MessagePack for C++ memory pool
+//
+// Copyright (C) 2008-2018 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_V3_ZONE_DECL_HPP
+#define MSGPACK_V3_ZONE_DECL_HPP
+
+#include "msgpack/cpp_config.hpp"
+
+#if defined(MSGPACK_USE_CPP03)
+#include "msgpack/v3/detail/cpp03_zone_decl.hpp"
+#else // MSGPACK_USE_CPP03
+#include "msgpack/v3/detail/cpp11_zone_decl.hpp"
+#endif // MSGPACK_USE_CPP03
+
+#endif // MSGPACK_V3_ZONE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/version.h b/third_party/msgpack/include/msgpack/version.h
new file mode 100644
index 0000000000..bd6605b8c4
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/version.h
@@ -0,0 +1,38 @@
+/*
+ * MessagePack for C version information
+ *
+ * Copyright (C) 2008-2009 FURUHASHI Sadayuki
+ *
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ */
+#ifndef MSGPACK_VERSION_H
+#define MSGPACK_VERSION_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+MSGPACK_DLLEXPORT
+const char* msgpack_version(void);
+MSGPACK_DLLEXPORT
+int msgpack_version_major(void);
+MSGPACK_DLLEXPORT
+int msgpack_version_minor(void);
+MSGPACK_DLLEXPORT
+int msgpack_version_revision(void);
+
+#include "version_master.h"
+
+#define MSGPACK_STR(v) #v
+#define MSGPACK_VERSION_I(maj, min, rev) MSGPACK_STR(maj) "." MSGPACK_STR(min) "." MSGPACK_STR(rev)
+
+#define MSGPACK_VERSION MSGPACK_VERSION_I(MSGPACK_VERSION_MAJOR, MSGPACK_VERSION_MINOR, MSGPACK_VERSION_REVISION)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* msgpack/version.h */
+
diff --git a/third_party/msgpack/include/msgpack/version.hpp b/third_party/msgpack/include/msgpack/version.hpp
new file mode 100644
index 0000000000..0b447c70f4
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/version.hpp
@@ -0,0 +1,36 @@
+/*
+ * MessagePack for C++ version information
+ *
+ * Copyright (C) 2008-2013 FURUHASHI Sadayuki and Takatoshi Kondo
+ *
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ */
+#ifndef MSGPACK_VERSION_HPP
+#define MSGPACK_VERSION_HPP
+
+#include "version_master.h"
+
+#define MSGPACK_STR(v) #v
+#define MSGPACK_VERSION_I(maj, min, rev) MSGPACK_STR(maj) "." MSGPACK_STR(min) "." MSGPACK_STR(rev)
+
+#define MSGPACK_VERSION MSGPACK_VERSION_I(MSGPACK_VERSION_MAJOR, MSGPACK_VERSION_MINOR, MSGPACK_VERSION_REVISION)
+
+inline const char* msgpack_version(void) {
+ return MSGPACK_VERSION;
+}
+
+inline int msgpack_version_major(void) {
+ return MSGPACK_VERSION_MAJOR;
+}
+
+inline int msgpack_version_minor(void) {
+ return MSGPACK_VERSION_MINOR;
+}
+
+inline int msgpack_version_revision(void) {
+ return MSGPACK_VERSION_REVISION;
+}
+
+#endif /* msgpack/version.hpp */
diff --git a/third_party/msgpack/include/msgpack/version_master.h b/third_party/msgpack/include/msgpack/version_master.h
new file mode 100644
index 0000000000..fc29f07bfe
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/version_master.h
@@ -0,0 +1,3 @@
+#define MSGPACK_VERSION_MAJOR 3
+#define MSGPACK_VERSION_MINOR 1
+#define MSGPACK_VERSION_REVISION 0
diff --git a/third_party/msgpack/include/msgpack/versioning.hpp b/third_party/msgpack/include/msgpack/versioning.hpp
new file mode 100644
index 0000000000..379e715c46
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/versioning.hpp
@@ -0,0 +1,71 @@
+/*
+ * MessagePack for C++ version switcher
+ *
+ * Copyright (C) 2014 KONDO Takatoshi
+ *
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ */
+#ifndef MSGPACK_VERSIONING_HPP
+#define MSGPACK_VERSIONING_HPP
+
+#if !defined(MSGPACK_DEFAULT_API_VERSION)
+#define MSGPACK_DEFAULT_API_VERSION 3
+#endif
+
+#define MSGPACK_DEFAULT_API_NS MSGPACK_DETAIL_PP_CAT(v, MSGPACK_DEFAULT_API_VERSION)
+
+#if MSGPACK_DEFAULT_API_VERSION == 1
+#define MSGPACK_DETAIL_PP_ENABLE_NS_v1 ()
+#elif MSGPACK_DEFAULT_API_VERSION == 2
+#define MSGPACK_DETAIL_PP_ENABLE_NS_v2 ()
+#elif MSGPACK_DEFAULT_API_VERSION == 3
+#define MSGPACK_DETAIL_PP_ENABLE_NS_v3 ()
+#else
+#error
+#endif
+
+#define MSGPACK_DETAIL_PP_CAT(a, ...) MSGPACK_DETAIL_PP_PRIMITIVE_CAT(a, __VA_ARGS__)
+#define MSGPACK_DETAIL_PP_PRIMITIVE_CAT(a, ...) a ## __VA_ARGS__
+
+#define MSGPACK_DETAIL_PP_IIF(c) MSGPACK_DETAIL_PP_PRIMITIVE_CAT(MSGPACK_DETAIL_PP_IIF_, c)
+#define MSGPACK_DETAIL_PP_IIF_0(t, ...) __VA_ARGS__
+#define MSGPACK_DETAIL_PP_IIF_1(t, ...) t
+
+#define MSGPACK_DETAIL_PP_PROBE(x) x, 1
+
+#if defined(_MSC_VER)
+
+#define MSGPACK_DETAIL_PP_MSVC_VA_ARGS_WORKAROUND(define, args) define args
+#define MSGPACK_DETAIL_PP_CHECK(...) MSGPACK_DETAIL_PP_MSVC_VA_ARGS_WORKAROUND(MSGPACK_DETAIL_PP_CHECK_N, (__VA_ARGS__, 0, 0))
+#define MSGPACK_DETAIL_PP_CHECK_N(x, n, ...) n
+
+#else // defined(__MSC_VER)
+
+#define MSGPACK_DETAIL_PP_CHECK(...) MSGPACK_DETAIL_PP_CHECK_N(__VA_ARGS__, 0, 0)
+#define MSGPACK_DETAIL_PP_CHECK_N(x, n, ...) n
+
+#endif // defined(__MSC_VER)
+
+
+#define MSGPACK_DETAIL_PP_NS_ENABLED_PROBE(ns) MSGPACK_DETAIL_PP_NS_ENABLED_PROBE_PROXY( MSGPACK_DETAIL_PP_ENABLE_NS_##ns )
+#define MSGPACK_DETAIL_PP_NS_ENABLED_PROBE_PROXY(...) MSGPACK_DETAIL_PP_NS_ENABLED_PROBE_PRIMIVIE(__VA_ARGS__)
+#define MSGPACK_DETAIL_PP_NS_ENABLED_PROBE_PRIMIVIE(x) MSGPACK_DETAIL_PP_NS_ENABLED_PROBE_COMBINE_ x
+#define MSGPACK_DETAIL_PP_NS_ENABLED_PROBE_COMBINE_(...) MSGPACK_DETAIL_PP_PROBE(~)
+
+#define MSGPACK_DETAIL_PP_IS_NS_ENABLED(ns) MSGPACK_DETAIL_PP_CHECK(MSGPACK_DETAIL_PP_NS_ENABLED_PROBE(ns))
+
+#if __cplusplus < 201103L
+#define MSGPACK_API_VERSION_NAMESPACE(ns) MSGPACK_DETAIL_PP_IIF(MSGPACK_DETAIL_PP_IS_NS_ENABLED(ns)) \
+ (namespace ns{}; using namespace ns; namespace ns, \
+ namespace ns)
+
+#else // __cplusplus < 201103L
+
+#define MSGPACK_API_VERSION_NAMESPACE(ns) MSGPACK_DETAIL_PP_IIF(MSGPACK_DETAIL_PP_IS_NS_ENABLED(ns)) \
+ (inline namespace ns, namespace ns)
+
+#endif // __cplusplus < 201103L
+
+#endif // MSGPACK_VERSIONING_HPP
diff --git a/third_party/msgpack/include/msgpack/vrefbuffer.h b/third_party/msgpack/include/msgpack/vrefbuffer.h
new file mode 100644
index 0000000000..139869aa6b
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/vrefbuffer.h
@@ -0,0 +1,140 @@
+/*
+ * MessagePack for C zero-copy buffer implementation
+ *
+ * Copyright (C) 2008-2009 FURUHASHI Sadayuki
+ *
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ */
+#ifndef MSGPACK_VREFBUFFER_H
+#define MSGPACK_VREFBUFFER_H
+
+#include "zone.h"
+#include <stdlib.h>
+
+#if defined(unix) || defined(__unix) || defined(__APPLE__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__QNX__) || defined(__QNXTO__)
+#include <sys/uio.h>
+#else
+struct iovec {
+ void *iov_base;
+ size_t iov_len;
+};
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/**
+ * @defgroup msgpack_vrefbuffer Vectored Referencing buffer
+ * @ingroup msgpack_buffer
+ * @{
+ */
+
+struct msgpack_vrefbuffer_chunk;
+typedef struct msgpack_vrefbuffer_chunk msgpack_vrefbuffer_chunk;
+
+typedef struct msgpack_vrefbuffer_inner_buffer {
+ size_t free;
+ char* ptr;
+ msgpack_vrefbuffer_chunk* head;
+} msgpack_vrefbuffer_inner_buffer;
+
+typedef struct msgpack_vrefbuffer {
+ struct iovec* tail;
+ struct iovec* end;
+ struct iovec* array;
+
+ size_t chunk_size;
+ size_t ref_size;
+
+ msgpack_vrefbuffer_inner_buffer inner_buffer;
+} msgpack_vrefbuffer;
+
+
+#ifndef MSGPACK_VREFBUFFER_REF_SIZE
+#define MSGPACK_VREFBUFFER_REF_SIZE 32
+#endif
+
+#ifndef MSGPACK_VREFBUFFER_CHUNK_SIZE
+#define MSGPACK_VREFBUFFER_CHUNK_SIZE 8192
+#endif
+
+MSGPACK_DLLEXPORT
+bool msgpack_vrefbuffer_init(msgpack_vrefbuffer* vbuf,
+ size_t ref_size, size_t chunk_size);
+MSGPACK_DLLEXPORT
+void msgpack_vrefbuffer_destroy(msgpack_vrefbuffer* vbuf);
+
+static inline msgpack_vrefbuffer* msgpack_vrefbuffer_new(size_t ref_size, size_t chunk_size);
+static inline void msgpack_vrefbuffer_free(msgpack_vrefbuffer* vbuf);
+
+static inline int msgpack_vrefbuffer_write(void* data, const char* buf, size_t len);
+
+static inline const struct iovec* msgpack_vrefbuffer_vec(const msgpack_vrefbuffer* vref);
+static inline size_t msgpack_vrefbuffer_veclen(const msgpack_vrefbuffer* vref);
+
+MSGPACK_DLLEXPORT
+int msgpack_vrefbuffer_append_copy(msgpack_vrefbuffer* vbuf,
+ const char* buf, size_t len);
+
+MSGPACK_DLLEXPORT
+int msgpack_vrefbuffer_append_ref(msgpack_vrefbuffer* vbuf,
+ const char* buf, size_t len);
+
+MSGPACK_DLLEXPORT
+int msgpack_vrefbuffer_migrate(msgpack_vrefbuffer* vbuf, msgpack_vrefbuffer* to);
+
+MSGPACK_DLLEXPORT
+void msgpack_vrefbuffer_clear(msgpack_vrefbuffer* vref);
+
+/** @} */
+
+
+static inline msgpack_vrefbuffer* msgpack_vrefbuffer_new(size_t ref_size, size_t chunk_size)
+{
+ msgpack_vrefbuffer* vbuf = (msgpack_vrefbuffer*)malloc(sizeof(msgpack_vrefbuffer));
+ if (vbuf == NULL) return NULL;
+ if(!msgpack_vrefbuffer_init(vbuf, ref_size, chunk_size)) {
+ free(vbuf);
+ return NULL;
+ }
+ return vbuf;
+}
+
+static inline void msgpack_vrefbuffer_free(msgpack_vrefbuffer* vbuf)
+{
+ if(vbuf == NULL) { return; }
+ msgpack_vrefbuffer_destroy(vbuf);
+ free(vbuf);
+}
+
+static inline int msgpack_vrefbuffer_write(void* data, const char* buf, size_t len)
+{
+ msgpack_vrefbuffer* vbuf = (msgpack_vrefbuffer*)data;
+
+ if(len < vbuf->ref_size) {
+ return msgpack_vrefbuffer_append_copy(vbuf, buf, len);
+ } else {
+ return msgpack_vrefbuffer_append_ref(vbuf, buf, len);
+ }
+}
+
+static inline const struct iovec* msgpack_vrefbuffer_vec(const msgpack_vrefbuffer* vref)
+{
+ return vref->array;
+}
+
+static inline size_t msgpack_vrefbuffer_veclen(const msgpack_vrefbuffer* vref)
+{
+ return (size_t)(vref->tail - vref->array);
+}
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* msgpack/vrefbuffer.h */
diff --git a/third_party/msgpack/include/msgpack/vrefbuffer.hpp b/third_party/msgpack/include/msgpack/vrefbuffer.hpp
new file mode 100644
index 0000000000..1a8b6dbe8f
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/vrefbuffer.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ zero-copy buffer implementation
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_VREFBUFFER_HPP
+#define MSGPACK_VREFBUFFER_HPP
+
+#include "msgpack/vrefbuffer_decl.hpp"
+
+#include "msgpack/v1/vrefbuffer.hpp"
+
+#endif // MSGPACK_VREFBUFFER_HPP
diff --git a/third_party/msgpack/include/msgpack/vrefbuffer_decl.hpp b/third_party/msgpack/include/msgpack/vrefbuffer_decl.hpp
new file mode 100644
index 0000000000..1c32d0e691
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/vrefbuffer_decl.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ zero-copy buffer implementation
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_VREFBUFFER_DECL_HPP
+#define MSGPACK_VREFBUFFER_DECL_HPP
+
+#include "msgpack/v1/vrefbuffer_decl.hpp"
+#include "msgpack/v2/vrefbuffer_decl.hpp"
+#include "msgpack/v3/vrefbuffer_decl.hpp"
+
+#endif // MSGPACK_VREFBUFFER_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/x3_parse.hpp b/third_party/msgpack/include/msgpack/x3_parse.hpp
new file mode 100644
index 0000000000..13ac7501fd
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/x3_parse.hpp
@@ -0,0 +1,15 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_X3_PARSE_HPP
+#define MSGPACK_X3_PARSE_HPP
+
+#include "msgpack/v2/x3_parse.hpp"
+
+#endif // MSGPACK_X3_PARSE_HPP
diff --git a/third_party/msgpack/include/msgpack/x3_parse_decl.hpp b/third_party/msgpack/include/msgpack/x3_parse_decl.hpp
new file mode 100644
index 0000000000..9a2258d6ce
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/x3_parse_decl.hpp
@@ -0,0 +1,16 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_X3_PARSE_DECL_HPP
+#define MSGPACK_X3_PARSE_DECL_HPP
+
+#include "msgpack/v2/x3_parse_decl.hpp"
+#include "msgpack/v3/x3_parse_decl.hpp"
+
+#endif // MSGPACK_X3_PARSE_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/x3_unpack.hpp b/third_party/msgpack/include/msgpack/x3_unpack.hpp
new file mode 100644
index 0000000000..7fa956aebc
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/x3_unpack.hpp
@@ -0,0 +1,16 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_X3_UNPACK_HPP
+#define MSGPACK_X3_UNPACK_HPP
+
+#include "msgpack/v2/x3_unpack.hpp"
+#include "msgpack/v3/x3_unpack.hpp"
+
+#endif // MSGPACK_X3_UNPACK_HPP
diff --git a/third_party/msgpack/include/msgpack/x3_unpack_decl.hpp b/third_party/msgpack/include/msgpack/x3_unpack_decl.hpp
new file mode 100644
index 0000000000..e67216d9e5
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/x3_unpack_decl.hpp
@@ -0,0 +1,16 @@
+//
+// MessagePack for C++ deserializing routine
+//
+// Copyright (C) 2018 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_X3_UNPACK_DECL_HPP
+#define MSGPACK_X3_UNPACK_DECL_HPP
+
+#include "msgpack/v2/x3_unpack_decl.hpp"
+#include "msgpack/v3/x3_unpack_decl.hpp"
+
+#endif // MSGPACK_X3_UNPACK_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/zbuffer.h b/third_party/msgpack/include/msgpack/zbuffer.h
new file mode 100644
index 0000000000..e6f742b6ff
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/zbuffer.h
@@ -0,0 +1,200 @@
+/*
+ * MessagePack for C deflate buffer implementation
+ *
+ * Copyright (C) 2010 FURUHASHI Sadayuki
+ *
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ */
+#ifndef MSGPACK_ZBUFFER_H
+#define MSGPACK_ZBUFFER_H
+
+#include "sysdep.h"
+#include <stdlib.h>
+#include <string.h>
+#include <zlib.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/**
+ * @defgroup msgpack_zbuffer Compressed buffer
+ * @ingroup msgpack_buffer
+ * @{
+ */
+
+typedef struct msgpack_zbuffer {
+ z_stream stream;
+ char* data;
+ size_t init_size;
+} msgpack_zbuffer;
+
+#ifndef MSGPACK_ZBUFFER_INIT_SIZE
+#define MSGPACK_ZBUFFER_INIT_SIZE 8192
+#endif
+
+static inline bool msgpack_zbuffer_init(
+ msgpack_zbuffer* zbuf, int level, size_t init_size);
+static inline void msgpack_zbuffer_destroy(msgpack_zbuffer* zbuf);
+
+static inline msgpack_zbuffer* msgpack_zbuffer_new(int level, size_t init_size);
+static inline void msgpack_zbuffer_free(msgpack_zbuffer* zbuf);
+
+static inline char* msgpack_zbuffer_flush(msgpack_zbuffer* zbuf);
+
+static inline const char* msgpack_zbuffer_data(const msgpack_zbuffer* zbuf);
+static inline size_t msgpack_zbuffer_size(const msgpack_zbuffer* zbuf);
+
+static inline bool msgpack_zbuffer_reset(msgpack_zbuffer* zbuf);
+static inline void msgpack_zbuffer_reset_buffer(msgpack_zbuffer* zbuf);
+static inline char* msgpack_zbuffer_release_buffer(msgpack_zbuffer* zbuf);
+
+
+#ifndef MSGPACK_ZBUFFER_RESERVE_SIZE
+#define MSGPACK_ZBUFFER_RESERVE_SIZE 512
+#endif
+
+static inline int msgpack_zbuffer_write(void* data, const char* buf, size_t len);
+
+static inline bool msgpack_zbuffer_expand(msgpack_zbuffer* zbuf);
+
+
+static inline bool msgpack_zbuffer_init(msgpack_zbuffer* zbuf,
+ int level, size_t init_size)
+{
+ memset(zbuf, 0, sizeof(msgpack_zbuffer));
+ zbuf->init_size = init_size;
+ if(deflateInit(&zbuf->stream, level) != Z_OK) {
+ free(zbuf->data);
+ return false;
+ }
+ return true;
+}
+
+static inline void msgpack_zbuffer_destroy(msgpack_zbuffer* zbuf)
+{
+ deflateEnd(&zbuf->stream);
+ free(zbuf->data);
+}
+
+static inline msgpack_zbuffer* msgpack_zbuffer_new(int level, size_t init_size)
+{
+ msgpack_zbuffer* zbuf = (msgpack_zbuffer*)malloc(sizeof(msgpack_zbuffer));
+ if (zbuf == NULL) return NULL;
+ if(!msgpack_zbuffer_init(zbuf, level, init_size)) {
+ free(zbuf);
+ return NULL;
+ }
+ return zbuf;
+}
+
+static inline void msgpack_zbuffer_free(msgpack_zbuffer* zbuf)
+{
+ if(zbuf == NULL) { return; }
+ msgpack_zbuffer_destroy(zbuf);
+ free(zbuf);
+}
+
+static inline bool msgpack_zbuffer_expand(msgpack_zbuffer* zbuf)
+{
+ size_t used = (char*)zbuf->stream.next_out - zbuf->data;
+ size_t csize = used + zbuf->stream.avail_out;
+ size_t nsize = (csize == 0) ? zbuf->init_size : csize * 2;
+
+ char* tmp = (char*)realloc(zbuf->data, nsize);
+ if(tmp == NULL) {
+ return false;
+ }
+
+ zbuf->data = tmp;
+ zbuf->stream.next_out = (Bytef*)(tmp + used);
+ zbuf->stream.avail_out = nsize - used;
+
+ return true;
+}
+
+static inline int msgpack_zbuffer_write(void* data, const char* buf, size_t len)
+{
+ msgpack_zbuffer* zbuf = (msgpack_zbuffer*)data;
+
+ zbuf->stream.next_in = (Bytef*)buf;
+ zbuf->stream.avail_in = len;
+
+ while(zbuf->stream.avail_in > 0) {
+ if(zbuf->stream.avail_out < MSGPACK_ZBUFFER_RESERVE_SIZE) {
+ if(!msgpack_zbuffer_expand(zbuf)) {
+ return -1;
+ }
+ }
+
+ if(deflate(&zbuf->stream, Z_NO_FLUSH) != Z_OK) {
+ return -1;
+ }
+ }
+
+ return 0;
+}
+
+static inline char* msgpack_zbuffer_flush(msgpack_zbuffer* zbuf)
+{
+ while(true) {
+ switch(deflate(&zbuf->stream, Z_FINISH)) {
+ case Z_STREAM_END:
+ return zbuf->data;
+ case Z_OK:
+ if(!msgpack_zbuffer_expand(zbuf)) {
+ return NULL;
+ }
+ break;
+ default:
+ return NULL;
+ }
+ }
+}
+
+static inline const char* msgpack_zbuffer_data(const msgpack_zbuffer* zbuf)
+{
+ return zbuf->data;
+}
+
+static inline size_t msgpack_zbuffer_size(const msgpack_zbuffer* zbuf)
+{
+ return (char*)zbuf->stream.next_out - zbuf->data;
+}
+
+static inline void msgpack_zbuffer_reset_buffer(msgpack_zbuffer* zbuf)
+{
+ zbuf->stream.avail_out += (char*)zbuf->stream.next_out - zbuf->data;
+ zbuf->stream.next_out = (Bytef*)zbuf->data;
+}
+
+static inline bool msgpack_zbuffer_reset(msgpack_zbuffer* zbuf)
+{
+ if(deflateReset(&zbuf->stream) != Z_OK) {
+ return false;
+ }
+ msgpack_zbuffer_reset_buffer(zbuf);
+ return true;
+}
+
+static inline char* msgpack_zbuffer_release_buffer(msgpack_zbuffer* zbuf)
+{
+ char* tmp = zbuf->data;
+ zbuf->data = NULL;
+ zbuf->stream.next_out = NULL;
+ zbuf->stream.avail_out = 0;
+ return tmp;
+}
+
+/** @} */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* msgpack/zbuffer.h */
+
diff --git a/third_party/msgpack/include/msgpack/zbuffer.hpp b/third_party/msgpack/include/msgpack/zbuffer.hpp
new file mode 100644
index 0000000000..7d15a72d6f
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/zbuffer.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ deflate buffer implementation
+//
+// Copyright (C) 2010-2013 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_ZBUFFER_HPP
+#define MSGPACK_ZBUFFER_HPP
+
+#include "msgpack/zbuffer_decl.hpp"
+
+#include "msgpack/v1/zbuffer.hpp"
+
+#endif // MSGPACK_ZBUFFER_HPP
diff --git a/third_party/msgpack/include/msgpack/zbuffer_decl.hpp b/third_party/msgpack/include/msgpack/zbuffer_decl.hpp
new file mode 100644
index 0000000000..1c8495c9c7
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/zbuffer_decl.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ deflate buffer implementation
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_ZBUFFER_DECL_HPP
+#define MSGPACK_ZBUFFER_DECL_HPP
+
+#include "msgpack/v1/zbuffer_decl.hpp"
+#include "msgpack/v2/zbuffer_decl.hpp"
+#include "msgpack/v3/zbuffer_decl.hpp"
+
+#endif // MSGPACK_ZBUFFER_DECL_HPP
diff --git a/third_party/msgpack/include/msgpack/zone.h b/third_party/msgpack/include/msgpack/zone.h
new file mode 100644
index 0000000000..55229d717e
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/zone.h
@@ -0,0 +1,163 @@
+/*
+ * MessagePack for C memory pool implementation
+ *
+ * Copyright (C) 2008-2010 FURUHASHI Sadayuki
+ *
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ */
+#ifndef MSGPACK_ZONE_H
+#define MSGPACK_ZONE_H
+
+#include "sysdep.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/**
+ * @defgroup msgpack_zone Memory zone
+ * @ingroup msgpack
+ * @{
+ */
+
+typedef struct msgpack_zone_finalizer {
+ void (*func)(void* data);
+ void* data;
+} msgpack_zone_finalizer;
+
+typedef struct msgpack_zone_finalizer_array {
+ msgpack_zone_finalizer* tail;
+ msgpack_zone_finalizer* end;
+ msgpack_zone_finalizer* array;
+} msgpack_zone_finalizer_array;
+
+struct msgpack_zone_chunk;
+typedef struct msgpack_zone_chunk msgpack_zone_chunk;
+
+typedef struct msgpack_zone_chunk_list {
+ size_t free;
+ char* ptr;
+ msgpack_zone_chunk* head;
+} msgpack_zone_chunk_list;
+
+typedef struct msgpack_zone {
+ msgpack_zone_chunk_list chunk_list;
+ msgpack_zone_finalizer_array finalizer_array;
+ size_t chunk_size;
+} msgpack_zone;
+
+#ifndef MSGPACK_ZONE_CHUNK_SIZE
+#define MSGPACK_ZONE_CHUNK_SIZE 8192
+#endif
+
+MSGPACK_DLLEXPORT
+bool msgpack_zone_init(msgpack_zone* zone, size_t chunk_size);
+MSGPACK_DLLEXPORT
+void msgpack_zone_destroy(msgpack_zone* zone);
+
+MSGPACK_DLLEXPORT
+msgpack_zone* msgpack_zone_new(size_t chunk_size);
+MSGPACK_DLLEXPORT
+void msgpack_zone_free(msgpack_zone* zone);
+
+static inline void* msgpack_zone_malloc(msgpack_zone* zone, size_t size);
+static inline void* msgpack_zone_malloc_no_align(msgpack_zone* zone, size_t size);
+
+static inline bool msgpack_zone_push_finalizer(msgpack_zone* zone,
+ void (*func)(void* data), void* data);
+
+static inline void msgpack_zone_swap(msgpack_zone* a, msgpack_zone* b);
+
+MSGPACK_DLLEXPORT
+bool msgpack_zone_is_empty(msgpack_zone* zone);
+
+MSGPACK_DLLEXPORT
+void msgpack_zone_clear(msgpack_zone* zone);
+
+/** @} */
+
+
+#ifndef MSGPACK_ZONE_ALIGN
+#define MSGPACK_ZONE_ALIGN sizeof(void*)
+#endif
+
+MSGPACK_DLLEXPORT
+void* msgpack_zone_malloc_expand(msgpack_zone* zone, size_t size);
+
+static inline void* msgpack_zone_malloc_no_align(msgpack_zone* zone, size_t size)
+{
+ char* ptr;
+ msgpack_zone_chunk_list* cl = &zone->chunk_list;
+
+ if(zone->chunk_list.free < size) {
+ return msgpack_zone_malloc_expand(zone, size);
+ }
+
+ ptr = cl->ptr;
+ cl->free -= size;
+ cl->ptr += size;
+
+ return ptr;
+}
+
+static inline void* msgpack_zone_malloc(msgpack_zone* zone, size_t size)
+{
+ char* aligned =
+ (char*)(
+ (size_t)(
+ zone->chunk_list.ptr + (MSGPACK_ZONE_ALIGN - 1)
+ ) / MSGPACK_ZONE_ALIGN * MSGPACK_ZONE_ALIGN
+ );
+ size_t adjusted_size = size + (aligned - zone->chunk_list.ptr);
+ if(zone->chunk_list.free >= adjusted_size) {
+ zone->chunk_list.free -= adjusted_size;
+ zone->chunk_list.ptr += adjusted_size;
+ return aligned;
+ }
+ {
+ void* ptr = msgpack_zone_malloc_expand(zone, size + (MSGPACK_ZONE_ALIGN - 1));
+ if (ptr) {
+ return (char*)((size_t)(ptr) / MSGPACK_ZONE_ALIGN * MSGPACK_ZONE_ALIGN);
+ }
+ }
+ return NULL;
+}
+
+
+bool msgpack_zone_push_finalizer_expand(msgpack_zone* zone,
+ void (*func)(void* data), void* data);
+
+static inline bool msgpack_zone_push_finalizer(msgpack_zone* zone,
+ void (*func)(void* data), void* data)
+{
+ msgpack_zone_finalizer_array* const fa = &zone->finalizer_array;
+ msgpack_zone_finalizer* fin = fa->tail;
+
+ if(fin == fa->end) {
+ return msgpack_zone_push_finalizer_expand(zone, func, data);
+ }
+
+ fin->func = func;
+ fin->data = data;
+
+ ++fa->tail;
+
+ return true;
+}
+
+static inline void msgpack_zone_swap(msgpack_zone* a, msgpack_zone* b)
+{
+ msgpack_zone tmp = *a;
+ *a = *b;
+ *b = tmp;
+}
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* msgpack/zone.h */
diff --git a/third_party/msgpack/include/msgpack/zone.hpp b/third_party/msgpack/include/msgpack/zone.hpp
new file mode 100644
index 0000000000..4da0fb9241
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/zone.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ memory pool
+//
+// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_ZONE_HPP
+#define MSGPACK_ZONE_HPP
+
+#include "msgpack/zone_decl.hpp"
+
+#include "msgpack/v1/zone.hpp"
+
+#endif // MSGPACK_ZONE_HPP
diff --git a/third_party/msgpack/include/msgpack/zone_decl.hpp b/third_party/msgpack/include/msgpack/zone_decl.hpp
new file mode 100644
index 0000000000..6adef23d6d
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/zone_decl.hpp
@@ -0,0 +1,17 @@
+//
+// MessagePack for C++ memory pool
+//
+// Copyright (C) 2016 KONDO Takatoshi
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+#ifndef MSGPACK_ZONE_DECL_HPP
+#define MSGPACK_ZONE_DECL_HPP
+
+#include "msgpack/v1/zone_decl.hpp"
+#include "msgpack/v2/zone_decl.hpp"
+#include "msgpack/v3/zone_decl.hpp"
+
+#endif // MSGPACK_ZONE_DECL_HPP
diff --git a/third_party/msgpack/moz.build b/third_party/msgpack/moz.build
new file mode 100644
index 0000000000..0ce52d9dbd
--- /dev/null
+++ b/third_party/msgpack/moz.build
@@ -0,0 +1,25 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DEFINES['MSGPACK_DLLEXPORT'] = ''
+
+LOCAL_INCLUDES += [
+ 'include',
+]
+
+EXPORTS += [
+ 'include/msgpack.h',
+]
+
+# We allow warnings for third-party code that can be updated from upstream.
+AllowCompilerWarnings()
+
+SOURCES += [
+ 'src/version.c',
+ 'src/vrefbuffer.c',
+]
+
+FINAL_LIBRARY = 'xul' \ No newline at end of file
diff --git a/third_party/msgpack/moz.yaml b/third_party/msgpack/moz.yaml
new file mode 100644
index 0000000000..eaa0846510
--- /dev/null
+++ b/third_party/msgpack/moz.yaml
@@ -0,0 +1,30 @@
+schema: 1
+
+bugzilla:
+ product: "Firefox Build System"
+ component: "General"
+
+origin:
+ name: msgpack
+ description: MessagePack implementation for C and C++
+
+ url: https://github.com/msgpack/msgpack-c
+
+ release: b6803a5fecbe321458faafd6a079dac466614ff9 (2018-08-21T13:30:54Z).
+ revision: b6803a5fecbe321458faafd6a079dac466614ff9
+
+ license: BSL-1.0
+ license-file: LICENSE_1_0.txt
+
+vendoring:
+ url: https://github.com/msgpack/msgpack-c
+ source-hosting: github
+ tracking: commit
+
+ exclude:
+ - "**"
+
+ include:
+ - src/
+ - include/
+ - LICENSE_1_0.txt
diff --git a/third_party/msgpack/src/objectc.c b/third_party/msgpack/src/objectc.c
new file mode 100644
index 0000000000..2722b63415
--- /dev/null
+++ b/third_party/msgpack/src/objectc.c
@@ -0,0 +1,547 @@
+/*
+ * MessagePack for C dynamic typing routine
+ *
+ * Copyright (C) 2008-2009 FURUHASHI Sadayuki
+ *
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ */
+#include "msgpack/object.h"
+#include "msgpack/pack.h"
+#include <ctype.h>
+#include <stdio.h>
+#include <string.h>
+
+#if defined(_MSC_VER)
+#if _MSC_VER >= 1800
+#include <inttypes.h>
+#else
+#define PRIu64 "I64u"
+#define PRIi64 "I64i"
+#define PRIi8 "i"
+#endif
+#else
+#include <inttypes.h>
+#endif
+
+
+int msgpack_pack_object(msgpack_packer* pk, msgpack_object d)
+{
+ switch(d.type) {
+ case MSGPACK_OBJECT_NIL:
+ return msgpack_pack_nil(pk);
+
+ case MSGPACK_OBJECT_BOOLEAN:
+ if(d.via.boolean) {
+ return msgpack_pack_true(pk);
+ } else {
+ return msgpack_pack_false(pk);
+ }
+
+ case MSGPACK_OBJECT_POSITIVE_INTEGER:
+ return msgpack_pack_uint64(pk, d.via.u64);
+
+ case MSGPACK_OBJECT_NEGATIVE_INTEGER:
+ return msgpack_pack_int64(pk, d.via.i64);
+
+ case MSGPACK_OBJECT_FLOAT32:
+ return msgpack_pack_float(pk, (float)d.via.f64);
+
+ case MSGPACK_OBJECT_FLOAT64:
+ return msgpack_pack_double(pk, d.via.f64);
+
+ case MSGPACK_OBJECT_STR:
+ {
+ int ret = msgpack_pack_str(pk, d.via.str.size);
+ if(ret < 0) { return ret; }
+ return msgpack_pack_str_body(pk, d.via.str.ptr, d.via.str.size);
+ }
+
+ case MSGPACK_OBJECT_BIN:
+ {
+ int ret = msgpack_pack_bin(pk, d.via.bin.size);
+ if(ret < 0) { return ret; }
+ return msgpack_pack_bin_body(pk, d.via.bin.ptr, d.via.bin.size);
+ }
+
+ case MSGPACK_OBJECT_EXT:
+ {
+ int ret = msgpack_pack_ext(pk, d.via.ext.size, d.via.ext.type);
+ if(ret < 0) { return ret; }
+ return msgpack_pack_ext_body(pk, d.via.ext.ptr, d.via.ext.size);
+ }
+
+ case MSGPACK_OBJECT_ARRAY:
+ {
+ int ret = msgpack_pack_array(pk, d.via.array.size);
+ if(ret < 0) {
+ return ret;
+ }
+ else {
+ msgpack_object* o = d.via.array.ptr;
+ msgpack_object* const oend = d.via.array.ptr + d.via.array.size;
+ for(; o != oend; ++o) {
+ ret = msgpack_pack_object(pk, *o);
+ if(ret < 0) { return ret; }
+ }
+
+ return 0;
+ }
+ }
+
+ case MSGPACK_OBJECT_MAP:
+ {
+ int ret = msgpack_pack_map(pk, d.via.map.size);
+ if(ret < 0) {
+ return ret;
+ }
+ else {
+ msgpack_object_kv* kv = d.via.map.ptr;
+ msgpack_object_kv* const kvend = d.via.map.ptr + d.via.map.size;
+ for(; kv != kvend; ++kv) {
+ ret = msgpack_pack_object(pk, kv->key);
+ if(ret < 0) { return ret; }
+ ret = msgpack_pack_object(pk, kv->val);
+ if(ret < 0) { return ret; }
+ }
+
+ return 0;
+ }
+ }
+
+ default:
+ return -1;
+ }
+}
+
+
+static void msgpack_object_bin_print(FILE* out, const char *ptr, size_t size)
+{
+ size_t i;
+ for (i = 0; i < size; ++i) {
+ if (ptr[i] == '"') {
+ fputs("\\\"", out);
+ } else if (isprint((unsigned char)ptr[i])) {
+ fputc(ptr[i], out);
+ } else {
+ fprintf(out, "\\x%02x", (unsigned char)ptr[i]);
+ }
+ }
+}
+
+static int msgpack_object_bin_print_buffer(char *buffer, size_t buffer_size, const char *ptr, size_t size)
+{
+ size_t i;
+ char *aux_buffer = buffer;
+ size_t aux_buffer_size = buffer_size;
+ int ret;
+
+ for (i = 0; i < size; ++i) {
+ if (ptr[i] == '"') {
+ ret = snprintf(aux_buffer, aux_buffer_size, "\\\"");
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+ } else if (isprint((unsigned char)ptr[i])) {
+ if (aux_buffer_size > 0) {
+ memcpy(aux_buffer, ptr + i, 1);
+ aux_buffer = aux_buffer + 1;
+ aux_buffer_size = aux_buffer_size - 1;
+ }
+ } else {
+ ret = snprintf(aux_buffer, aux_buffer_size, "\\x%02x", (unsigned char)ptr[i]);
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+ }
+ }
+
+ return buffer_size - aux_buffer_size;
+}
+
+
+void msgpack_object_print(FILE* out, msgpack_object o)
+{
+ switch(o.type) {
+ case MSGPACK_OBJECT_NIL:
+ fprintf(out, "nil");
+ break;
+
+ case MSGPACK_OBJECT_BOOLEAN:
+ fprintf(out, (o.via.boolean ? "true" : "false"));
+ break;
+
+ case MSGPACK_OBJECT_POSITIVE_INTEGER:
+#if defined(PRIu64)
+ fprintf(out, "%" PRIu64, o.via.u64);
+#else
+ if (o.via.u64 > ULONG_MAX)
+ fprintf(out, "over 4294967295");
+ else
+ fprintf(out, "%lu", (unsigned long)o.via.u64);
+#endif
+ break;
+
+ case MSGPACK_OBJECT_NEGATIVE_INTEGER:
+#if defined(PRIi64)
+ fprintf(out, "%" PRIi64, o.via.i64);
+#else
+ if (o.via.i64 > LONG_MAX)
+ fprintf(out, "over +2147483647");
+ else if (o.via.i64 < LONG_MIN)
+ fprintf(out, "under -2147483648");
+ else
+ fprintf(out, "%ld", (signed long)o.via.i64);
+#endif
+ break;
+
+ case MSGPACK_OBJECT_FLOAT32:
+ case MSGPACK_OBJECT_FLOAT64:
+ fprintf(out, "%f", o.via.f64);
+ break;
+
+ case MSGPACK_OBJECT_STR:
+ fprintf(out, "\"");
+ fwrite(o.via.str.ptr, o.via.str.size, 1, out);
+ fprintf(out, "\"");
+ break;
+
+ case MSGPACK_OBJECT_BIN:
+ fprintf(out, "\"");
+ msgpack_object_bin_print(out, o.via.bin.ptr, o.via.bin.size);
+ fprintf(out, "\"");
+ break;
+
+ case MSGPACK_OBJECT_EXT:
+#if defined(PRIi8)
+ fprintf(out, "(ext: %" PRIi8 ")", o.via.ext.type);
+#else
+ fprintf(out, "(ext: %d)", (int)o.via.ext.type);
+#endif
+ fprintf(out, "\"");
+ msgpack_object_bin_print(out, o.via.ext.ptr, o.via.ext.size);
+ fprintf(out, "\"");
+ break;
+
+ case MSGPACK_OBJECT_ARRAY:
+ fprintf(out, "[");
+ if(o.via.array.size != 0) {
+ msgpack_object* p = o.via.array.ptr;
+ msgpack_object* const pend = o.via.array.ptr + o.via.array.size;
+ msgpack_object_print(out, *p);
+ ++p;
+ for(; p < pend; ++p) {
+ fprintf(out, ", ");
+ msgpack_object_print(out, *p);
+ }
+ }
+ fprintf(out, "]");
+ break;
+
+ case MSGPACK_OBJECT_MAP:
+ fprintf(out, "{");
+ if(o.via.map.size != 0) {
+ msgpack_object_kv* p = o.via.map.ptr;
+ msgpack_object_kv* const pend = o.via.map.ptr + o.via.map.size;
+ msgpack_object_print(out, p->key);
+ fprintf(out, "=>");
+ msgpack_object_print(out, p->val);
+ ++p;
+ for(; p < pend; ++p) {
+ fprintf(out, ", ");
+ msgpack_object_print(out, p->key);
+ fprintf(out, "=>");
+ msgpack_object_print(out, p->val);
+ }
+ }
+ fprintf(out, "}");
+ break;
+
+ default:
+ // FIXME
+#if defined(PRIu64)
+ fprintf(out, "#<UNKNOWN %i %" PRIu64 ">", o.type, o.via.u64);
+#else
+ if (o.via.u64 > ULONG_MAX)
+ fprintf(out, "#<UNKNOWN %i over 4294967295>", o.type);
+ else
+ fprintf(out, "#<UNKNOWN %i %lu>", o.type, (unsigned long)o.via.u64);
+#endif
+
+ }
+}
+
+int msgpack_object_print_buffer(char *buffer, size_t buffer_size, msgpack_object o)
+{
+ char *aux_buffer = buffer;
+ size_t aux_buffer_size = buffer_size;
+ int ret;
+ switch(o.type) {
+ case MSGPACK_OBJECT_NIL:
+ ret = snprintf(aux_buffer, aux_buffer_size, "nil");
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+ break;
+
+ case MSGPACK_OBJECT_BOOLEAN:
+ ret = snprintf(aux_buffer, aux_buffer_size, (o.via.boolean ? "true" : "false"));
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+ break;
+
+ case MSGPACK_OBJECT_POSITIVE_INTEGER:
+#if defined(PRIu64)
+ ret = snprintf(aux_buffer, aux_buffer_size, "%" PRIu64, o.via.u64);
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+#else
+ if (o.via.u64 > ULONG_MAX) {
+ ret = snprintf(aux_buffer, aux_buffer_size, "over 4294967295");
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+ } else {
+ ret = snprintf(aux_buffer, aux_buffer_size, "%lu", (unsigned long)o.via.u64);
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+ }
+#endif
+ break;
+
+ case MSGPACK_OBJECT_NEGATIVE_INTEGER:
+#if defined(PRIi64)
+ ret = snprintf(aux_buffer, aux_buffer_size, "%" PRIi64, o.via.i64);
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+#else
+ if (o.via.i64 > LONG_MAX) {
+ ret = snprintf(aux_buffer, aux_buffer_size, "over +2147483647");
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+ } else if (o.via.i64 < LONG_MIN) {
+ ret = snprintf(aux_buffer, aux_buffer_size, "under -2147483648");
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+ } else {
+ ret = snprintf(aux_buffer, aux_buffer_size, "%ld", (signed long)o.via.i64);
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+ }
+#endif
+ break;
+
+ case MSGPACK_OBJECT_FLOAT32:
+ case MSGPACK_OBJECT_FLOAT64:
+ ret = snprintf(aux_buffer, aux_buffer_size, "%f", o.via.f64);
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+ break;
+
+ case MSGPACK_OBJECT_STR:
+ ret = snprintf(aux_buffer, aux_buffer_size, "\"");
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+ ret = snprintf(aux_buffer, aux_buffer_size, "%.*s", (int)o.via.str.size, o.via.str.ptr);
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+ ret = snprintf(aux_buffer, aux_buffer_size, "\"");
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+ break;
+
+ case MSGPACK_OBJECT_BIN:
+ ret = snprintf(aux_buffer, aux_buffer_size, "\"");
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+
+ ret = msgpack_object_bin_print_buffer(aux_buffer, aux_buffer_size, o.via.bin.ptr, o.via.bin.size);
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+
+ ret = snprintf(aux_buffer, aux_buffer_size, "\"");
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+ break;
+
+ case MSGPACK_OBJECT_EXT:
+#if defined(PRIi8)
+ ret = snprintf(aux_buffer, aux_buffer_size, "(ext: %" PRIi8 ")", o.via.ext.type);
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+#else
+ ret = snprintf(aux_buffer, aux_buffer_size, "(ext: %d)", (int)o.via.ext.type);
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+#endif
+ ret = snprintf(aux_buffer, aux_buffer_size, "\"");
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+
+ ret = msgpack_object_bin_print_buffer(aux_buffer, aux_buffer_size, o.via.ext.ptr, o.via.ext.size);
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+
+ ret = snprintf(aux_buffer, aux_buffer_size, "\"");
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+ break;
+
+ case MSGPACK_OBJECT_ARRAY:
+ ret = snprintf(aux_buffer, aux_buffer_size, "[");
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+ if(o.via.array.size != 0) {
+ msgpack_object* p = o.via.array.ptr;
+ msgpack_object* const pend = o.via.array.ptr + o.via.array.size;
+ ret = msgpack_object_print_buffer(aux_buffer, aux_buffer_size, *p);
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+ ++p;
+ for(; p < pend; ++p) {
+ ret = snprintf(aux_buffer, aux_buffer_size, ", ");
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+ ret = msgpack_object_print_buffer(aux_buffer, aux_buffer_size, *p);
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+ }
+ }
+ ret = snprintf(aux_buffer, aux_buffer_size, "]");
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+ break;
+
+ case MSGPACK_OBJECT_MAP:
+ ret = snprintf(aux_buffer, aux_buffer_size, "{");
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+ if(o.via.map.size != 0) {
+ msgpack_object_kv* p = o.via.map.ptr;
+ msgpack_object_kv* const pend = o.via.map.ptr + o.via.map.size;
+ ret = msgpack_object_print_buffer(aux_buffer, aux_buffer_size, p->key);
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+ ret = snprintf(aux_buffer, aux_buffer_size, "=>");
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+ ret = msgpack_object_print_buffer(aux_buffer, aux_buffer_size, p->val);
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+ ++p;
+ for(; p < pend; ++p) {
+ ret = snprintf(aux_buffer, aux_buffer_size, ", ");
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+ ret = msgpack_object_print_buffer(aux_buffer, aux_buffer_size, p->key);
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+ ret = snprintf(aux_buffer, aux_buffer_size, "=>");
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+ ret = msgpack_object_print_buffer(aux_buffer, aux_buffer_size, p->val);
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+ }
+ }
+ ret = snprintf(aux_buffer, aux_buffer_size, "}");
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+ break;
+
+ default:
+ // FIXME
+#if defined(PRIu64)
+ ret = snprintf(aux_buffer, aux_buffer_size, "#<UNKNOWN %i %" PRIu64 ">", o.type, o.via.u64);
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+#else
+ if (o.via.u64 > ULONG_MAX) {
+ ret = snprintf(aux_buffer, aux_buffer_size, "#<UNKNOWN %i over 4294967295>", o.type);
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+ } else {
+ ret = snprintf(aux_buffer, aux_buffer_size, "#<UNKNOWN %i %lu>", o.type, (unsigned long)o.via.u64);
+ aux_buffer = aux_buffer + ret;
+ aux_buffer_size = aux_buffer_size - ret;
+ }
+#endif
+ }
+
+ return buffer_size - aux_buffer_size;
+}
+
+
+bool msgpack_object_equal(const msgpack_object x, const msgpack_object y)
+{
+ if(x.type != y.type) { return false; }
+
+ switch(x.type) {
+ case MSGPACK_OBJECT_NIL:
+ return true;
+
+ case MSGPACK_OBJECT_BOOLEAN:
+ return x.via.boolean == y.via.boolean;
+
+ case MSGPACK_OBJECT_POSITIVE_INTEGER:
+ return x.via.u64 == y.via.u64;
+
+ case MSGPACK_OBJECT_NEGATIVE_INTEGER:
+ return x.via.i64 == y.via.i64;
+
+ case MSGPACK_OBJECT_FLOAT32:
+ case MSGPACK_OBJECT_FLOAT64:
+ return x.via.f64 == y.via.f64;
+
+ case MSGPACK_OBJECT_STR:
+ return x.via.str.size == y.via.str.size &&
+ memcmp(x.via.str.ptr, y.via.str.ptr, x.via.str.size) == 0;
+
+ case MSGPACK_OBJECT_BIN:
+ return x.via.bin.size == y.via.bin.size &&
+ memcmp(x.via.bin.ptr, y.via.bin.ptr, x.via.bin.size) == 0;
+
+ case MSGPACK_OBJECT_EXT:
+ return x.via.ext.size == y.via.ext.size &&
+ x.via.ext.type == y.via.ext.type &&
+ memcmp(x.via.ext.ptr, y.via.ext.ptr, x.via.ext.size) == 0;
+
+ case MSGPACK_OBJECT_ARRAY:
+ if(x.via.array.size != y.via.array.size) {
+ return false;
+ } else if(x.via.array.size == 0) {
+ return true;
+ } else {
+ msgpack_object* px = x.via.array.ptr;
+ msgpack_object* const pxend = x.via.array.ptr + x.via.array.size;
+ msgpack_object* py = y.via.array.ptr;
+ do {
+ if(!msgpack_object_equal(*px, *py)) {
+ return false;
+ }
+ ++px;
+ ++py;
+ } while(px < pxend);
+ return true;
+ }
+
+ case MSGPACK_OBJECT_MAP:
+ if(x.via.map.size != y.via.map.size) {
+ return false;
+ } else if(x.via.map.size == 0) {
+ return true;
+ } else {
+ msgpack_object_kv* px = x.via.map.ptr;
+ msgpack_object_kv* const pxend = x.via.map.ptr + x.via.map.size;
+ msgpack_object_kv* py = y.via.map.ptr;
+ do {
+ if(!msgpack_object_equal(px->key, py->key) || !msgpack_object_equal(px->val, py->val)) {
+ return false;
+ }
+ ++px;
+ ++py;
+ } while(px < pxend);
+ return true;
+ }
+
+ default:
+ return false;
+ }
+}
diff --git a/third_party/msgpack/src/unpack.c b/third_party/msgpack/src/unpack.c
new file mode 100644
index 0000000000..a40f2aab71
--- /dev/null
+++ b/third_party/msgpack/src/unpack.c
@@ -0,0 +1,676 @@
+/*
+ * MessagePack for C unpacking routine
+ *
+ * Copyright (C) 2008-2009 FURUHASHI Sadayuki
+ *
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ */
+#include "msgpack/unpack.h"
+#include "msgpack/unpack_define.h"
+#include "msgpack/util.h"
+#include <stdlib.h>
+
+#ifdef _msgpack_atomic_counter_header
+#include _msgpack_atomic_counter_header
+#endif
+
+
+typedef struct {
+ msgpack_zone* z;
+ bool referenced;
+} unpack_user;
+
+
+#define msgpack_unpack_struct(name) \
+ struct template ## name
+
+#define msgpack_unpack_func(ret, name) \
+ ret template ## name
+
+#define msgpack_unpack_callback(name) \
+ template_callback ## name
+
+#define msgpack_unpack_object msgpack_object
+
+#define msgpack_unpack_user unpack_user
+
+
+struct template_context;
+typedef struct template_context template_context;
+
+static void template_init(template_context* ctx);
+
+static msgpack_object template_data(template_context* ctx);
+
+static int template_execute(
+ template_context* ctx, const char* data, size_t len, size_t* off);
+
+
+static inline msgpack_object template_callback_root(unpack_user* u)
+{
+ msgpack_object o;
+ MSGPACK_UNUSED(u);
+ o.type = MSGPACK_OBJECT_NIL;
+ return o;
+}
+
+static inline int template_callback_uint8(unpack_user* u, uint8_t d, msgpack_object* o)
+{
+ MSGPACK_UNUSED(u);
+ o->type = MSGPACK_OBJECT_POSITIVE_INTEGER;
+ o->via.u64 = d;
+ return 0;
+}
+
+static inline int template_callback_uint16(unpack_user* u, uint16_t d, msgpack_object* o)
+{
+ MSGPACK_UNUSED(u);
+ o->type = MSGPACK_OBJECT_POSITIVE_INTEGER;
+ o->via.u64 = d;
+ return 0;
+}
+
+static inline int template_callback_uint32(unpack_user* u, uint32_t d, msgpack_object* o)
+{
+ MSGPACK_UNUSED(u);
+ o->type = MSGPACK_OBJECT_POSITIVE_INTEGER;
+ o->via.u64 = d;
+ return 0;
+}
+
+static inline int template_callback_uint64(unpack_user* u, uint64_t d, msgpack_object* o)
+{
+ MSGPACK_UNUSED(u);
+ o->type = MSGPACK_OBJECT_POSITIVE_INTEGER;
+ o->via.u64 = d;
+ return 0;
+}
+
+static inline int template_callback_int8(unpack_user* u, int8_t d, msgpack_object* o)
+{
+ MSGPACK_UNUSED(u);
+ if(d >= 0) {
+ o->type = MSGPACK_OBJECT_POSITIVE_INTEGER;
+ o->via.u64 = (uint64_t)d;
+ return 0;
+ }
+ else {
+ o->type = MSGPACK_OBJECT_NEGATIVE_INTEGER;
+ o->via.i64 = d;
+ return 0;
+ }
+}
+
+static inline int template_callback_int16(unpack_user* u, int16_t d, msgpack_object* o)
+{
+ MSGPACK_UNUSED(u);
+ if(d >= 0) {
+ o->type = MSGPACK_OBJECT_POSITIVE_INTEGER;
+ o->via.u64 = (uint64_t)d;
+ return 0;
+ }
+ else {
+ o->type = MSGPACK_OBJECT_NEGATIVE_INTEGER;
+ o->via.i64 = d;
+ return 0;
+ }
+}
+
+static inline int template_callback_int32(unpack_user* u, int32_t d, msgpack_object* o)
+{
+ MSGPACK_UNUSED(u);
+ if(d >= 0) {
+ o->type = MSGPACK_OBJECT_POSITIVE_INTEGER;
+ o->via.u64 = (uint64_t)d;
+ return 0;
+ }
+ else {
+ o->type = MSGPACK_OBJECT_NEGATIVE_INTEGER;
+ o->via.i64 = d;
+ return 0;
+ }
+}
+
+static inline int template_callback_int64(unpack_user* u, int64_t d, msgpack_object* o)
+{
+ MSGPACK_UNUSED(u);
+ if(d >= 0) {
+ o->type = MSGPACK_OBJECT_POSITIVE_INTEGER;
+ o->via.u64 = (uint64_t)d;
+ return 0;
+ }
+ else {
+ o->type = MSGPACK_OBJECT_NEGATIVE_INTEGER;
+ o->via.i64 = d;
+ return 0;
+ }
+}
+
+static inline int template_callback_float(unpack_user* u, float d, msgpack_object* o)
+{
+ MSGPACK_UNUSED(u);
+ o->type = MSGPACK_OBJECT_FLOAT32;
+ o->via.f64 = d;
+ return 0;
+}
+
+static inline int template_callback_double(unpack_user* u, double d, msgpack_object* o)
+{
+ MSGPACK_UNUSED(u);
+ o->type = MSGPACK_OBJECT_FLOAT64;
+ o->via.f64 = d;
+ return 0;
+}
+
+static inline int template_callback_nil(unpack_user* u, msgpack_object* o)
+{
+ MSGPACK_UNUSED(u);
+ o->type = MSGPACK_OBJECT_NIL;
+ return 0;
+}
+
+static inline int template_callback_true(unpack_user* u, msgpack_object* o)
+{
+ MSGPACK_UNUSED(u);
+ o->type = MSGPACK_OBJECT_BOOLEAN;
+ o->via.boolean = true;
+ return 0;
+}
+
+static inline int template_callback_false(unpack_user* u, msgpack_object* o)
+{
+ MSGPACK_UNUSED(u);
+ o->type = MSGPACK_OBJECT_BOOLEAN;
+ o->via.boolean = false;
+ return 0;
+}
+
+static inline int template_callback_array(unpack_user* u, unsigned int n, msgpack_object* o)
+{
+ unsigned int size;
+ o->type = MSGPACK_OBJECT_ARRAY;
+ o->via.array.size = 0;
+ size = n*sizeof(msgpack_object);
+ if (size / sizeof(msgpack_object) != n) {
+ // integer overflow
+ return MSGPACK_UNPACK_NOMEM_ERROR;
+ }
+ o->via.array.ptr = (msgpack_object*)msgpack_zone_malloc(u->z, size);
+ if(o->via.array.ptr == NULL) { return MSGPACK_UNPACK_NOMEM_ERROR; }
+ return 0;
+}
+
+static inline int template_callback_array_item(unpack_user* u, msgpack_object* c, msgpack_object o)
+{
+ MSGPACK_UNUSED(u);
+#if defined(__GNUC__) && !defined(__clang__)
+ memcpy(&c->via.array.ptr[c->via.array.size], &o, sizeof(msgpack_object));
+#else /* __GNUC__ && !__clang__ */
+ c->via.array.ptr[c->via.array.size] = o;
+#endif /* __GNUC__ && !__clang__ */
+ ++c->via.array.size;
+ return 0;
+}
+
+static inline int template_callback_map(unpack_user* u, unsigned int n, msgpack_object* o)
+{
+ unsigned int size;
+ o->type = MSGPACK_OBJECT_MAP;
+ o->via.map.size = 0;
+ size = n*sizeof(msgpack_object_kv);
+ if (size / sizeof(msgpack_object_kv) != n) {
+ // integer overflow
+ return MSGPACK_UNPACK_NOMEM_ERROR;
+ }
+ o->via.map.ptr = (msgpack_object_kv*)msgpack_zone_malloc(u->z, size);
+ if(o->via.map.ptr == NULL) { return MSGPACK_UNPACK_NOMEM_ERROR; }
+ return 0;
+}
+
+static inline int template_callback_map_item(unpack_user* u, msgpack_object* c, msgpack_object k, msgpack_object v)
+{
+ MSGPACK_UNUSED(u);
+#if defined(__GNUC__) && !defined(__clang__)
+ memcpy(&c->via.map.ptr[c->via.map.size].key, &k, sizeof(msgpack_object));
+ memcpy(&c->via.map.ptr[c->via.map.size].val, &v, sizeof(msgpack_object));
+#else /* __GNUC__ && !__clang__ */
+ c->via.map.ptr[c->via.map.size].key = k;
+ c->via.map.ptr[c->via.map.size].val = v;
+#endif /* __GNUC__ && !__clang__ */
+ ++c->via.map.size;
+ return 0;
+}
+
+static inline int template_callback_str(unpack_user* u, const char* b, const char* p, unsigned int l, msgpack_object* o)
+{
+ MSGPACK_UNUSED(u);
+ MSGPACK_UNUSED(b);
+ o->type = MSGPACK_OBJECT_STR;
+ o->via.str.ptr = p;
+ o->via.str.size = l;
+ u->referenced = true;
+ return 0;
+}
+
+static inline int template_callback_bin(unpack_user* u, const char* b, const char* p, unsigned int l, msgpack_object* o)
+{
+ MSGPACK_UNUSED(u);
+ MSGPACK_UNUSED(b);
+ o->type = MSGPACK_OBJECT_BIN;
+ o->via.bin.ptr = p;
+ o->via.bin.size = l;
+ u->referenced = true;
+ return 0;
+}
+
+static inline int template_callback_ext(unpack_user* u, const char* b, const char* p, unsigned int l, msgpack_object* o)
+{
+ if (l == 0) {
+ return MSGPACK_UNPACK_PARSE_ERROR;
+ }
+ MSGPACK_UNUSED(u);
+ MSGPACK_UNUSED(b);
+ o->type = MSGPACK_OBJECT_EXT;
+ o->via.ext.type = *p;
+ o->via.ext.ptr = p + 1;
+ o->via.ext.size = l - 1;
+ u->referenced = true;
+ return 0;
+}
+
+#include "msgpack/unpack_template.h"
+
+
+#define CTX_CAST(m) ((template_context*)(m))
+#define CTX_REFERENCED(mpac) CTX_CAST((mpac)->ctx)->user.referenced
+
+#define COUNTER_SIZE (sizeof(_msgpack_atomic_counter_t))
+
+
+static inline void init_count(void* buffer)
+{
+ *(volatile _msgpack_atomic_counter_t*)buffer = 1;
+}
+
+static inline void decr_count(void* buffer)
+{
+ // atomic if(--*(_msgpack_atomic_counter_t*)buffer == 0) { free(buffer); }
+ if(_msgpack_sync_decr_and_fetch((volatile _msgpack_atomic_counter_t*)buffer) == 0) {
+ free(buffer);
+ }
+}
+
+static inline void incr_count(void* buffer)
+{
+ // atomic ++*(_msgpack_atomic_counter_t*)buffer;
+ _msgpack_sync_incr_and_fetch((volatile _msgpack_atomic_counter_t*)buffer);
+}
+
+static inline _msgpack_atomic_counter_t get_count(void* buffer)
+{
+ return *(volatile _msgpack_atomic_counter_t*)buffer;
+}
+
+bool msgpack_unpacker_init(msgpack_unpacker* mpac, size_t initial_buffer_size)
+{
+ char* buffer;
+ void* ctx;
+ msgpack_zone* z;
+
+ if(initial_buffer_size < COUNTER_SIZE) {
+ initial_buffer_size = COUNTER_SIZE;
+ }
+
+ buffer = (char*)malloc(initial_buffer_size);
+ if(buffer == NULL) {
+ return false;
+ }
+
+ ctx = malloc(sizeof(template_context));
+ if(ctx == NULL) {
+ free(buffer);
+ return false;
+ }
+
+ z = msgpack_zone_new(MSGPACK_ZONE_CHUNK_SIZE);
+ if(z == NULL) {
+ free(ctx);
+ free(buffer);
+ return false;
+ }
+
+ mpac->buffer = buffer;
+ mpac->used = COUNTER_SIZE;
+ mpac->free = initial_buffer_size - mpac->used;
+ mpac->off = COUNTER_SIZE;
+ mpac->parsed = 0;
+ mpac->initial_buffer_size = initial_buffer_size;
+ mpac->z = z;
+ mpac->ctx = ctx;
+
+ init_count(mpac->buffer);
+
+ template_init(CTX_CAST(mpac->ctx));
+ CTX_CAST(mpac->ctx)->user.z = mpac->z;
+ CTX_CAST(mpac->ctx)->user.referenced = false;
+
+ return true;
+}
+
+void msgpack_unpacker_destroy(msgpack_unpacker* mpac)
+{
+ msgpack_zone_free(mpac->z);
+ free(mpac->ctx);
+ decr_count(mpac->buffer);
+}
+
+msgpack_unpacker* msgpack_unpacker_new(size_t initial_buffer_size)
+{
+ msgpack_unpacker* mpac = (msgpack_unpacker*)malloc(sizeof(msgpack_unpacker));
+ if(mpac == NULL) {
+ return NULL;
+ }
+
+ if(!msgpack_unpacker_init(mpac, initial_buffer_size)) {
+ free(mpac);
+ return NULL;
+ }
+
+ return mpac;
+}
+
+void msgpack_unpacker_free(msgpack_unpacker* mpac)
+{
+ msgpack_unpacker_destroy(mpac);
+ free(mpac);
+}
+
+bool msgpack_unpacker_expand_buffer(msgpack_unpacker* mpac, size_t size)
+{
+ if(mpac->used == mpac->off && get_count(mpac->buffer) == 1
+ && !CTX_REFERENCED(mpac)) {
+ // rewind buffer
+ mpac->free += mpac->used - COUNTER_SIZE;
+ mpac->used = COUNTER_SIZE;
+ mpac->off = COUNTER_SIZE;
+
+ if(mpac->free >= size) {
+ return true;
+ }
+ }
+
+ if(mpac->off == COUNTER_SIZE) {
+ char* tmp;
+ size_t next_size = (mpac->used + mpac->free) * 2; // include COUNTER_SIZE
+ while(next_size < size + mpac->used) {
+ size_t tmp_next_size = next_size * 2;
+ if (tmp_next_size <= next_size) {
+ next_size = size + mpac->used;
+ break;
+ }
+ next_size = tmp_next_size;
+ }
+
+ tmp = (char*)realloc(mpac->buffer, next_size);
+ if(tmp == NULL) {
+ return false;
+ }
+
+ mpac->buffer = tmp;
+ mpac->free = next_size - mpac->used;
+
+ } else {
+ char* tmp;
+ size_t next_size = mpac->initial_buffer_size; // include COUNTER_SIZE
+ size_t not_parsed = mpac->used - mpac->off;
+ while(next_size < size + not_parsed + COUNTER_SIZE) {
+ size_t tmp_next_size = next_size * 2;
+ if (tmp_next_size <= next_size) {
+ next_size = size + not_parsed + COUNTER_SIZE;
+ break;
+ }
+ next_size = tmp_next_size;
+ }
+
+ tmp = (char*)malloc(next_size);
+ if(tmp == NULL) {
+ return false;
+ }
+
+ init_count(tmp);
+
+ memcpy(tmp+COUNTER_SIZE, mpac->buffer+mpac->off, not_parsed);
+
+ if(CTX_REFERENCED(mpac)) {
+ if(!msgpack_zone_push_finalizer(mpac->z, decr_count, mpac->buffer)) {
+ free(tmp);
+ return false;
+ }
+ CTX_REFERENCED(mpac) = false;
+ } else {
+ decr_count(mpac->buffer);
+ }
+
+ mpac->buffer = tmp;
+ mpac->used = not_parsed + COUNTER_SIZE;
+ mpac->free = next_size - mpac->used;
+ mpac->off = COUNTER_SIZE;
+ }
+
+ return true;
+}
+
+int msgpack_unpacker_execute(msgpack_unpacker* mpac)
+{
+ size_t off = mpac->off;
+ int ret = template_execute(CTX_CAST(mpac->ctx),
+ mpac->buffer, mpac->used, &mpac->off);
+ if(mpac->off > off) {
+ mpac->parsed += mpac->off - off;
+ }
+ return ret;
+}
+
+msgpack_object msgpack_unpacker_data(msgpack_unpacker* mpac)
+{
+ return template_data(CTX_CAST(mpac->ctx));
+}
+
+msgpack_zone* msgpack_unpacker_release_zone(msgpack_unpacker* mpac)
+{
+ msgpack_zone* r;
+ msgpack_zone* old;
+
+ if(!msgpack_unpacker_flush_zone(mpac)) {
+ return NULL;
+ }
+
+ r = msgpack_zone_new(MSGPACK_ZONE_CHUNK_SIZE);
+ if(r == NULL) {
+ return NULL;
+ }
+
+ old = mpac->z;
+ mpac->z = r;
+ CTX_CAST(mpac->ctx)->user.z = mpac->z;
+
+ return old;
+}
+
+void msgpack_unpacker_reset_zone(msgpack_unpacker* mpac)
+{
+ msgpack_zone_clear(mpac->z);
+}
+
+bool msgpack_unpacker_flush_zone(msgpack_unpacker* mpac)
+{
+ if(CTX_REFERENCED(mpac)) {
+ if(!msgpack_zone_push_finalizer(mpac->z, decr_count, mpac->buffer)) {
+ return false;
+ }
+ CTX_REFERENCED(mpac) = false;
+
+ incr_count(mpac->buffer);
+ }
+
+ return true;
+}
+
+void msgpack_unpacker_reset(msgpack_unpacker* mpac)
+{
+ template_init(CTX_CAST(mpac->ctx));
+ // don't reset referenced flag
+ mpac->parsed = 0;
+}
+
+static inline msgpack_unpack_return unpacker_next(msgpack_unpacker* mpac,
+ msgpack_unpacked* result)
+{
+ int ret;
+
+ msgpack_unpacked_destroy(result);
+
+ ret = msgpack_unpacker_execute(mpac);
+
+ if(ret < 0) {
+ result->zone = NULL;
+ memset(&result->data, 0, sizeof(msgpack_object));
+ return ret;
+ }
+
+ if(ret == 0) {
+ return MSGPACK_UNPACK_CONTINUE;
+ }
+ result->zone = msgpack_unpacker_release_zone(mpac);
+ result->data = msgpack_unpacker_data(mpac);
+
+ return MSGPACK_UNPACK_SUCCESS;
+}
+
+msgpack_unpack_return msgpack_unpacker_next(msgpack_unpacker* mpac,
+ msgpack_unpacked* result)
+{
+ int ret;
+
+ ret = unpacker_next(mpac, result);
+ if (ret == MSGPACK_UNPACK_SUCCESS) {
+ msgpack_unpacker_reset(mpac);
+ }
+
+ return ret;
+}
+
+msgpack_unpack_return
+msgpack_unpacker_next_with_size(msgpack_unpacker* mpac,
+ msgpack_unpacked* result, size_t *p_bytes)
+{
+ int ret;
+
+ ret = unpacker_next(mpac, result);
+ if (ret == MSGPACK_UNPACK_SUCCESS || ret == MSGPACK_UNPACK_CONTINUE) {
+ *p_bytes = mpac->parsed;
+ }
+
+ if (ret == MSGPACK_UNPACK_SUCCESS) {
+ msgpack_unpacker_reset(mpac);
+ }
+
+ return ret;
+}
+
+msgpack_unpack_return
+msgpack_unpack(const char* data, size_t len, size_t* off,
+ msgpack_zone* result_zone, msgpack_object* result)
+{
+ size_t noff = 0;
+ if(off != NULL) { noff = *off; }
+
+ if(len <= noff) {
+ // FIXME
+ return MSGPACK_UNPACK_CONTINUE;
+ }
+ else {
+ int e;
+ template_context ctx;
+ template_init(&ctx);
+
+ ctx.user.z = result_zone;
+ ctx.user.referenced = false;
+
+ e = template_execute(&ctx, data, len, &noff);
+ if(e < 0) {
+ return e;
+ }
+
+ if(off != NULL) { *off = noff; }
+
+ if(e == 0) {
+ return MSGPACK_UNPACK_CONTINUE;
+ }
+
+ *result = template_data(&ctx);
+
+ if(noff < len) {
+ return MSGPACK_UNPACK_EXTRA_BYTES;
+ }
+
+ return MSGPACK_UNPACK_SUCCESS;
+ }
+}
+
+msgpack_unpack_return
+msgpack_unpack_next(msgpack_unpacked* result,
+ const char* data, size_t len, size_t* off)
+{
+ size_t noff = 0;
+ msgpack_unpacked_destroy(result);
+
+ if(off != NULL) { noff = *off; }
+
+ if(len <= noff) {
+ return MSGPACK_UNPACK_CONTINUE;
+ }
+
+ if (!result->zone) {
+ result->zone = msgpack_zone_new(MSGPACK_ZONE_CHUNK_SIZE);
+ }
+
+ if (!result->zone) {
+ return MSGPACK_UNPACK_NOMEM_ERROR;
+ }
+ else {
+ int e;
+ template_context ctx;
+ template_init(&ctx);
+
+ ctx.user.z = result->zone;
+ ctx.user.referenced = false;
+
+ e = template_execute(&ctx, data, len, &noff);
+
+ if(off != NULL) { *off = noff; }
+
+ if(e < 0) {
+ msgpack_zone_free(result->zone);
+ result->zone = NULL;
+ return e;
+ }
+
+ if(e == 0) {
+ return MSGPACK_UNPACK_CONTINUE;
+ }
+
+ result->data = template_data(&ctx);
+
+ return MSGPACK_UNPACK_SUCCESS;
+ }
+}
+
+#if defined(MSGPACK_OLD_COMPILER_BUS_ERROR_WORKAROUND)
+// FIXME: Dirty hack to avoid a bus error caused by OS X's old gcc.
+static void dummy_function_to_avoid_bus_error()
+{
+}
+#endif
diff --git a/third_party/msgpack/src/version.c b/third_party/msgpack/src/version.c
new file mode 100644
index 0000000000..83f75108eb
--- /dev/null
+++ b/third_party/msgpack/src/version.c
@@ -0,0 +1,22 @@
+#include "msgpack.h"
+
+const char* msgpack_version(void)
+{
+ return MSGPACK_VERSION;
+}
+
+int msgpack_version_major(void)
+{
+ return MSGPACK_VERSION_MAJOR;
+}
+
+int msgpack_version_minor(void)
+{
+ return MSGPACK_VERSION_MINOR;
+}
+
+int msgpack_version_revision(void)
+{
+ return MSGPACK_VERSION_REVISION;
+}
+
diff --git a/third_party/msgpack/src/vrefbuffer.c b/third_party/msgpack/src/vrefbuffer.c
new file mode 100644
index 0000000000..2834747640
--- /dev/null
+++ b/third_party/msgpack/src/vrefbuffer.c
@@ -0,0 +1,232 @@
+/*
+ * MessagePack for C zero-copy buffer implementation
+ *
+ * Copyright (C) 2008-2009 FURUHASHI Sadayuki
+ *
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ */
+#include "msgpack/vrefbuffer.h"
+#include <stdlib.h>
+#include <string.h>
+
+#define MSGPACK_PACKER_MAX_BUFFER_SIZE 9
+
+struct msgpack_vrefbuffer_chunk {
+ struct msgpack_vrefbuffer_chunk* next;
+ /* data ... */
+};
+
+bool msgpack_vrefbuffer_init(msgpack_vrefbuffer* vbuf,
+ size_t ref_size, size_t chunk_size)
+{
+ size_t nfirst;
+ struct iovec* array;
+ msgpack_vrefbuffer_chunk* chunk;
+
+ vbuf->chunk_size = chunk_size;
+ vbuf->ref_size =
+ ref_size > MSGPACK_PACKER_MAX_BUFFER_SIZE + 1 ?
+ ref_size : MSGPACK_PACKER_MAX_BUFFER_SIZE + 1 ;
+
+ nfirst = (sizeof(struct iovec) < 72/2) ?
+ 72 / sizeof(struct iovec) : 8;
+
+ array = (struct iovec*)malloc(
+ sizeof(struct iovec) * nfirst);
+ if(array == NULL) {
+ return false;
+ }
+
+ vbuf->tail = array;
+ vbuf->end = array + nfirst;
+ vbuf->array = array;
+
+ chunk = (msgpack_vrefbuffer_chunk*)malloc(
+ sizeof(msgpack_vrefbuffer_chunk) + chunk_size);
+ if(chunk == NULL) {
+ free(array);
+ return false;
+ }
+ else {
+ msgpack_vrefbuffer_inner_buffer* const ib = &vbuf->inner_buffer;
+
+ ib->free = chunk_size;
+ ib->ptr = ((char*)chunk) + sizeof(msgpack_vrefbuffer_chunk);
+ ib->head = chunk;
+ chunk->next = NULL;
+
+ return true;
+ }
+}
+
+void msgpack_vrefbuffer_destroy(msgpack_vrefbuffer* vbuf)
+{
+ msgpack_vrefbuffer_chunk* c = vbuf->inner_buffer.head;
+ while(true) {
+ msgpack_vrefbuffer_chunk* n = c->next;
+ free(c);
+ if(n != NULL) {
+ c = n;
+ } else {
+ break;
+ }
+ }
+ free(vbuf->array);
+}
+
+void msgpack_vrefbuffer_clear(msgpack_vrefbuffer* vbuf)
+{
+ msgpack_vrefbuffer_chunk* c = vbuf->inner_buffer.head->next;
+ msgpack_vrefbuffer_chunk* n;
+ while(c != NULL) {
+ n = c->next;
+ free(c);
+ c = n;
+ }
+
+ {
+ msgpack_vrefbuffer_inner_buffer* const ib = &vbuf->inner_buffer;
+ msgpack_vrefbuffer_chunk* chunk = ib->head;
+ chunk->next = NULL;
+ ib->free = vbuf->chunk_size;
+ ib->ptr = ((char*)chunk) + sizeof(msgpack_vrefbuffer_chunk);
+
+ vbuf->tail = vbuf->array;
+ }
+}
+
+int msgpack_vrefbuffer_append_ref(msgpack_vrefbuffer* vbuf,
+ const char* buf, size_t len)
+{
+ if(vbuf->tail == vbuf->end) {
+ const size_t nused = (size_t)(vbuf->tail - vbuf->array);
+ const size_t nnext = nused * 2;
+
+ struct iovec* nvec = (struct iovec*)realloc(
+ vbuf->array, sizeof(struct iovec)*nnext);
+ if(nvec == NULL) {
+ return -1;
+ }
+
+ vbuf->array = nvec;
+ vbuf->end = nvec + nnext;
+ vbuf->tail = nvec + nused;
+ }
+
+ vbuf->tail->iov_base = (char*)buf;
+ vbuf->tail->iov_len = len;
+ ++vbuf->tail;
+
+ return 0;
+}
+
+int msgpack_vrefbuffer_append_copy(msgpack_vrefbuffer* vbuf,
+ const char* buf, size_t len)
+{
+ msgpack_vrefbuffer_inner_buffer* const ib = &vbuf->inner_buffer;
+ char* m;
+
+ if(ib->free < len) {
+ msgpack_vrefbuffer_chunk* chunk;
+ size_t sz = vbuf->chunk_size;
+ if(sz < len) {
+ sz = len;
+ }
+
+ chunk = (msgpack_vrefbuffer_chunk*)malloc(
+ sizeof(msgpack_vrefbuffer_chunk) + sz);
+ if(chunk == NULL) {
+ return -1;
+ }
+
+ chunk->next = ib->head;
+ ib->head = chunk;
+ ib->free = sz;
+ ib->ptr = ((char*)chunk) + sizeof(msgpack_vrefbuffer_chunk);
+ }
+
+ m = ib->ptr;
+ memcpy(m, buf, len);
+ ib->free -= len;
+ ib->ptr += len;
+
+ if(vbuf->tail != vbuf->array && m ==
+ (const char*)((vbuf->tail-1)->iov_base) + (vbuf->tail-1)->iov_len) {
+ (vbuf->tail-1)->iov_len += len;
+ return 0;
+ } else {
+ return msgpack_vrefbuffer_append_ref(vbuf, m, len);
+ }
+}
+
+int msgpack_vrefbuffer_migrate(msgpack_vrefbuffer* vbuf, msgpack_vrefbuffer* to)
+{
+ size_t sz = vbuf->chunk_size;
+
+ msgpack_vrefbuffer_chunk* empty = (msgpack_vrefbuffer_chunk*)malloc(
+ sizeof(msgpack_vrefbuffer_chunk) + sz);
+ if(empty == NULL) {
+ return -1;
+ }
+
+ empty->next = NULL;
+
+ {
+ const size_t nused = (size_t)(vbuf->tail - vbuf->array);
+ if(to->tail + nused < vbuf->end) {
+ struct iovec* nvec;
+ const size_t tosize = (size_t)(to->tail - to->array);
+ const size_t reqsize = nused + tosize;
+ size_t nnext = (size_t)(to->end - to->array) * 2;
+ while(nnext < reqsize) {
+ size_t tmp_nnext = nnext * 2;
+ if (tmp_nnext <= nnext) {
+ nnext = reqsize;
+ break;
+ }
+ nnext = tmp_nnext;
+ }
+
+ nvec = (struct iovec*)realloc(
+ to->array, sizeof(struct iovec)*nnext);
+ if(nvec == NULL) {
+ free(empty);
+ return -1;
+ }
+
+ to->array = nvec;
+ to->end = nvec + nnext;
+ to->tail = nvec + tosize;
+ }
+
+ memcpy(to->tail, vbuf->array, sizeof(struct iovec)*nused);
+
+ to->tail += nused;
+ vbuf->tail = vbuf->array;
+
+ {
+ msgpack_vrefbuffer_inner_buffer* const ib = &vbuf->inner_buffer;
+ msgpack_vrefbuffer_inner_buffer* const toib = &to->inner_buffer;
+
+ msgpack_vrefbuffer_chunk* last = ib->head;
+ while(last->next != NULL) {
+ last = last->next;
+ }
+ last->next = toib->head;
+ toib->head = ib->head;
+
+ if(toib->free < ib->free) {
+ toib->free = ib->free;
+ toib->ptr = ib->ptr;
+ }
+
+ ib->head = empty;
+ ib->free = sz;
+ ib->ptr = ((char*)empty) + sizeof(msgpack_vrefbuffer_chunk);
+ }
+ }
+
+ return 0;
+}
diff --git a/third_party/msgpack/src/zone.c b/third_party/msgpack/src/zone.c
new file mode 100644
index 0000000000..372a1f5b80
--- /dev/null
+++ b/third_party/msgpack/src/zone.c
@@ -0,0 +1,222 @@
+/*
+ * MessagePack for C memory pool implementation
+ *
+ * Copyright (C) 2008-2009 FURUHASHI Sadayuki
+ *
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ */
+#include "msgpack/zone.h"
+#include <stdlib.h>
+#include <string.h>
+
+struct msgpack_zone_chunk {
+ struct msgpack_zone_chunk* next;
+ /* data ... */
+};
+
+static inline bool init_chunk_list(msgpack_zone_chunk_list* cl, size_t chunk_size)
+{
+ msgpack_zone_chunk* chunk = (msgpack_zone_chunk*)malloc(
+ sizeof(msgpack_zone_chunk) + chunk_size);
+ if(chunk == NULL) {
+ return false;
+ }
+
+ cl->head = chunk;
+ cl->free = chunk_size;
+ cl->ptr = ((char*)chunk) + sizeof(msgpack_zone_chunk);
+ chunk->next = NULL;
+
+ return true;
+}
+
+static inline void destroy_chunk_list(msgpack_zone_chunk_list* cl)
+{
+ msgpack_zone_chunk* c = cl->head;
+ while(true) {
+ msgpack_zone_chunk* n = c->next;
+ free(c);
+ if(n != NULL) {
+ c = n;
+ } else {
+ break;
+ }
+ }
+}
+
+static inline void clear_chunk_list(msgpack_zone_chunk_list* cl, size_t chunk_size)
+{
+ msgpack_zone_chunk* c = cl->head;
+ while(true) {
+ msgpack_zone_chunk* n = c->next;
+ if(n != NULL) {
+ free(c);
+ c = n;
+ } else {
+ cl->head = c;
+ break;
+ }
+ }
+ cl->head->next = NULL;
+ cl->free = chunk_size;
+ cl->ptr = ((char*)cl->head) + sizeof(msgpack_zone_chunk);
+}
+
+void* msgpack_zone_malloc_expand(msgpack_zone* zone, size_t size)
+{
+ msgpack_zone_chunk_list* const cl = &zone->chunk_list;
+ msgpack_zone_chunk* chunk;
+
+ size_t sz = zone->chunk_size;
+
+ while(sz < size) {
+ size_t tmp_sz = sz * 2;
+ if (tmp_sz <= sz) {
+ sz = size;
+ break;
+ }
+ sz = tmp_sz;
+ }
+
+ chunk = (msgpack_zone_chunk*)malloc(
+ sizeof(msgpack_zone_chunk) + sz);
+ if (chunk == NULL) {
+ return NULL;
+ }
+ else {
+ char* ptr = ((char*)chunk) + sizeof(msgpack_zone_chunk);
+ chunk->next = cl->head;
+ cl->head = chunk;
+ cl->free = sz - size;
+ cl->ptr = ptr + size;
+
+ return ptr;
+ }
+}
+
+
+static inline void init_finalizer_array(msgpack_zone_finalizer_array* fa)
+{
+ fa->tail = NULL;
+ fa->end = NULL;
+ fa->array = NULL;
+}
+
+static inline void call_finalizer_array(msgpack_zone_finalizer_array* fa)
+{
+ msgpack_zone_finalizer* fin = fa->tail;
+ for(; fin != fa->array; --fin) {
+ (*(fin-1)->func)((fin-1)->data);
+ }
+}
+
+static inline void destroy_finalizer_array(msgpack_zone_finalizer_array* fa)
+{
+ call_finalizer_array(fa);
+ free(fa->array);
+}
+
+static inline void clear_finalizer_array(msgpack_zone_finalizer_array* fa)
+{
+ call_finalizer_array(fa);
+ fa->tail = fa->array;
+}
+
+bool msgpack_zone_push_finalizer_expand(msgpack_zone* zone,
+ void (*func)(void* data), void* data)
+{
+ msgpack_zone_finalizer_array* const fa = &zone->finalizer_array;
+ msgpack_zone_finalizer* tmp;
+
+ const size_t nused = (size_t)(fa->end - fa->array);
+
+ size_t nnext;
+ if(nused == 0) {
+ nnext = (sizeof(msgpack_zone_finalizer) < 72/2) ?
+ 72 / sizeof(msgpack_zone_finalizer) : 8;
+
+ } else {
+ nnext = nused * 2;
+ }
+
+ tmp = (msgpack_zone_finalizer*)realloc(fa->array,
+ sizeof(msgpack_zone_finalizer) * nnext);
+ if(tmp == NULL) {
+ return false;
+ }
+
+ fa->array = tmp;
+ fa->end = tmp + nnext;
+ fa->tail = tmp + nused;
+
+ fa->tail->func = func;
+ fa->tail->data = data;
+
+ ++fa->tail;
+
+ return true;
+}
+
+
+bool msgpack_zone_is_empty(msgpack_zone* zone)
+{
+ msgpack_zone_chunk_list* const cl = &zone->chunk_list;
+ msgpack_zone_finalizer_array* const fa = &zone->finalizer_array;
+ return cl->free == zone->chunk_size && cl->head->next == NULL &&
+ fa->tail == fa->array;
+}
+
+
+void msgpack_zone_destroy(msgpack_zone* zone)
+{
+ destroy_finalizer_array(&zone->finalizer_array);
+ destroy_chunk_list(&zone->chunk_list);
+}
+
+void msgpack_zone_clear(msgpack_zone* zone)
+{
+ clear_finalizer_array(&zone->finalizer_array);
+ clear_chunk_list(&zone->chunk_list, zone->chunk_size);
+}
+
+bool msgpack_zone_init(msgpack_zone* zone, size_t chunk_size)
+{
+ zone->chunk_size = chunk_size;
+
+ if(!init_chunk_list(&zone->chunk_list, chunk_size)) {
+ return false;
+ }
+
+ init_finalizer_array(&zone->finalizer_array);
+
+ return true;
+}
+
+msgpack_zone* msgpack_zone_new(size_t chunk_size)
+{
+ msgpack_zone* zone = (msgpack_zone*)malloc(
+ sizeof(msgpack_zone));
+ if(zone == NULL) {
+ return NULL;
+ }
+
+ zone->chunk_size = chunk_size;
+
+ if(!init_chunk_list(&zone->chunk_list, chunk_size)) {
+ free(zone);
+ return NULL;
+ }
+
+ init_finalizer_array(&zone->finalizer_array);
+
+ return zone;
+}
+
+void msgpack_zone_free(msgpack_zone* zone)
+{
+ if(zone == NULL) { return; }
+ msgpack_zone_destroy(zone);
+ free(zone);
+}