#pragma once
//42
#ifndef _LIBCPP_STD_VER
#if __cplusplus <= 201103L
#define _LIBCPP_STD_VER 11
#elif __cplusplus <= 201402L
#define _LIBCPP_STD_VER 14
#elif __cplusplus <= 201703L
#define _LIBCPP_STD_VER 17
#elif __cplusplus <= 202002L
#define _LIBCPP_STD_VER 20
#else
// Expected release year of the next C++ standard
#define _LIBCPP_STD_VER 23
#endif
#endif // _LIBCPP_STD_VER

#  if defined(__ELF__)
#    define _LIBCPP_OBJECT_FORMAT_ELF 1
#  elif defined(__MACH__)
#    define _LIBCPP_OBJECT_FORMAT_MACHO 1
#  elif defined(_WIN32)
#    define _LIBCPP_OBJECT_FORMAT_COFF 1
#  elif defined(__wasm__)
#    define _LIBCPP_OBJECT_FORMAT_WASM 1
#  elif defined(_AIX)
#    define _LIBCPP_OBJECT_FORMAT_XCOFF 1
#  else
// ... add new file formats here ...
#  endif
//71
//172
#  ifndef __has_builtin
#    define __has_builtin(__x) 0
#  endif
//176
//204
#  if defined(__apple_build_version__)
#    define _LIBCPP_COMPILER_CLANG_BASED
#    define _LIBCPP_APPLE_CLANG_VER (__apple_build_version__ / 10000)
#  elif defined(__clang__)
#    define _LIBCPP_COMPILER_CLANG_BASED
#    define _LIBCPP_CLANG_VER (__clang_major__ * 100 + __clang_minor__)
#  elif defined(__GNUC__)
#    define _LIBCPP_COMPILER_GCC
#  endif
//214
//490
#  if defined(_LIBCPP_OBJECT_FORMAT_COFF)

#    ifdef _DLL
#      define _LIBCPP_CRT_FUNC __declspec(dllimport)
#    else
#      define _LIBCPP_CRT_FUNC
#    endif

#    if defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) || (defined(__MINGW32__) && !defined(_LIBCPP_BUILDING_LIBRARY))
#      define _LIBCPP_DLL_VIS
#      define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS
#      define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS
#      define _LIBCPP_OVERRIDABLE_FUNC_VIS
#      define _LIBCPP_EXPORTED_FROM_ABI
#    elif defined(_LIBCPP_BUILDING_LIBRARY)
#      define _LIBCPP_DLL_VIS __declspec(dllexport)
#      if defined(__MINGW32__)
#        define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS _LIBCPP_DLL_VIS
#        define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS
#      else
#        define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS
#        define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS _LIBCPP_DLL_VIS
#      endif
#      define _LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_DLL_VIS
#      define _LIBCPP_EXPORTED_FROM_ABI __declspec(dllexport)
#    else
#      define _LIBCPP_DLL_VIS __declspec(dllimport)
#      define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS _LIBCPP_DLL_VIS
#      define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS
#      define _LIBCPP_OVERRIDABLE_FUNC_VIS
#      define _LIBCPP_EXPORTED_FROM_ABI __declspec(dllimport)
#    endif

#    define _LIBCPP_TYPE_VIS _LIBCPP_DLL_VIS
#    define _LIBCPP_FUNC_VIS _LIBCPP_DLL_VIS
#    define _LIBCPP_EXCEPTION_ABI _LIBCPP_DLL_VIS
#    define _LIBCPP_HIDDEN
#    define _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
#    define _LIBCPP_TEMPLATE_VIS
#    define _LIBCPP_TEMPLATE_DATA_VIS
#    define _LIBCPP_ENUM_VIS

#  else

#    if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
#      define _LIBCPP_VISIBILITY(vis) __attribute__((__visibility__(vis)))
#    else
#      define _LIBCPP_VISIBILITY(vis)
#    endif

#    define _LIBCPP_HIDDEN _LIBCPP_VISIBILITY("hidden")
#    define _LIBCPP_FUNC_VIS _LIBCPP_VISIBILITY("default")
#    define _LIBCPP_TYPE_VIS _LIBCPP_VISIBILITY("default")
#    define _LIBCPP_TEMPLATE_DATA_VIS _LIBCPP_VISIBILITY("default")
#    define _LIBCPP_EXPORTED_FROM_ABI _LIBCPP_VISIBILITY("default")
#    define _LIBCPP_EXCEPTION_ABI _LIBCPP_VISIBILITY("default")
#    define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS _LIBCPP_VISIBILITY("default")
#    define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS

// TODO: Make this a proper customization point or remove the option to override it.
#    ifndef _LIBCPP_OVERRIDABLE_FUNC_VIS
#      define _LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_VISIBILITY("default")
#    endif

#    if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
// The inline should be removed once PR32114 is resolved
#      define _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS inline _LIBCPP_HIDDEN
#    else
#      define _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
#    endif

#    if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
#      if __has_attribute(__type_visibility__)
#        define _LIBCPP_TEMPLATE_VIS __attribute__((__type_visibility__("default")))
#      else
#        define _LIBCPP_TEMPLATE_VIS __attribute__((__visibility__("default")))
#      endif
#    else
#      define _LIBCPP_TEMPLATE_VIS
#    endif

#    if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) && __has_attribute(__type_visibility__)
#      define _LIBCPP_ENUM_VIS __attribute__((__type_visibility__("default")))
#    else
#      define _LIBCPP_ENUM_VIS
#    endif

#  endif // defined(_LIBCPP_OBJECT_FORMAT_COFF)
//579
//632
// Inline namespaces are available in Clang/GCC/MSVC regardless of C++ dialect.
// clang-format off
#  define _LIBCPP_BEGIN_NAMESPACE_STD namespace std { inline namespace _LIBCPP_ABI_NAMESPACE {
#  define _LIBCPP_END_NAMESPACE_STD }}
#  define _VSTD std
//638