#ifndef _MSL_CSTDINT
#define _MSL_CSTDINT

#include <ansi_params.h>

#if !_MSL_USING_MW_C_HEADERS
    #include <stdint.h>

    #if _MSL_PUT_THIRD_PARTY_C_IN_STD
        #include <msl_cpp_std_stdint.h>
    #endif
#else

#include <limits_api.h>
#include <msl_secure.h>

#ifndef RC_INVOKED

_MSL_BEGIN_NAMESPACE_STD
    _MSL_BEGIN_EXTERN_C

typedef signed char int8_t;
typedef short int int16_t;
typedef long int int32_t;

#if _MSL_LONGLONG
typedef long long int64_t;
#endif

typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
typedef unsigned long int uint32_t;

#if _MSL_LONGLONG
typedef unsigned long long uint64_t;
#endif

#if (_MSL_C99 || defined(__cplusplus))

typedef signed char int_least8_t;
typedef short int int_least16_t;
typedef long int int_least32_t;

#if _MSL_LONGLONG
typedef long long int_least64_t;
#endif

typedef unsigned char uint_least8_t;
typedef unsigned short int uint_least16_t;
typedef unsigned long int uint_least32_t;

#if _MSL_LONGLONG
typedef unsigned long long uint_least64_t;
#endif

typedef signed char int_fast8_t;
typedef short int int_fast16_t;
typedef long int int_fast32_t;

#if _MSL_LONGLONG
typedef long long int_fast64_t;
#endif

typedef unsigned char uint_fast8_t;
typedef unsigned short int uint_fast16_t;
typedef unsigned long int uint_fast32_t;

#if _MSL_LONGLONG
typedef unsigned long long uint_fast64_t;
#endif

typedef int32_t intptr_t;
typedef uint32_t uintptr_t;

#if _MSL_LONGLONG
typedef int64_t intmax_t;
#else
typedef int32_t intmax_t;
#endif

#if _MSL_LONGLONG
typedef uint64_t uintmax_t;
#else
typedef uint32_t uintmax_t;
#endif

#endif

_MSL_END_EXTERN_C
    _MSL_END_NAMESPACE_STD

#endif
#endif

#endif

#if _MSL_USING_MW_C_HEADERS

#if (!defined(__cplusplus)) || defined(__STDC_LIMIT_MACROS)
#ifndef INT8_MIN

#define INT8_MIN _MSL_SCHAR_MIN
#define INT16_MIN _MSL_SHRT_MIN
#define INT32_MIN _MSL_LONG_MIN
#if _MSL_LONGLONG
#define INT64_MIN _MSL_LLONG_MIN
#endif

#define INT8_MAX _MSL_SCHAR_MAX
#define INT16_MAX _MSL_SHRT_MAX
#define INT32_MAX _MSL_LONG_MAX
#if _MSL_LONGLONG
#define INT64_MAX _MSL_LLONG_MAX
#endif

#define UINT8_MAX _MSL_UCHAR_MAX
#define UINT16_MAX _MSL_USHRT_MAX
#define UINT32_MAX _MSL_ULONG_MAX
#if _MSL_LONGLONG
#define UINT64_MAX _MSL_ULLONG_MAX
#endif

#define INT_LEAST8_MIN _MSL_SCHAR_MIN
#define INT_LEAST16_MIN _MSL_SHRT_MIN
#define INT_LEAST32_MIN _MSL_LONG_MIN
#if _MSL_LONGLONG
#define INT_LEAST64_MIN _MSL_LLONG_MIN
#endif

#define INT_LEAST8_MAX _MSL_SCHAR_MAX
#define INT_LEAST16_MAX _MSL_SHRT_MAX
#define INT_LEAST32_MAX _MSL_LONG_MAX
#if _MSL_LONGLONG
#define INT_LEAST64_MAX _MSL_LLONG_MAX
#endif
#define UINT_LEAST8_MAX _MSL_UCHAR_MAX
#define UINT_LEAST16_MAX _MSL_USHRT_MAX
#define UINT_LEAST32_MAX _MSL_ULONG_MAX
#if _MSL_LONGLONG
#define UINT_LEAST64_MAX _MSL_ULLONG_MAX
#endif

#define INT_FAST8_MIN _MSL_SCHAR_MIN
#define INT_FAST16_MIN _MSL_SHRT_MIN
#define INT_FAST32_MIN _MSL_LONG_MIN
#if _MSL_LONGLONG
#define INT_FAST64_MIN _MSL_LLONG_MIN
#endif

#define INT_FAST8_MAX _MSL_SCHAR_MAX
#define INT_FAST16_MAX _MSL_SHRT_MAX
#define INT_FAST32_MAX _MSL_LONG_MAX
#if _MSL_LONGLONG
#define INT_FAST64_MAX _MSL_LLONG_MAX
#endif

#define UINT_FAST8_MAX _MSL_UCHAR_MAX
#define UINT_FAST16_MAX _MSL_USHRT_MAX
#define UINT_FAST32_MAX _MSL_ULONG_MAX
#if _MSL_LONGLONG
#define UINT_FAST64_MAX _MSL_ULLONG_MAX
#endif

#define INTPTR_MIN _MSL_LONG_MIN
#define INTPTR_MAX _MSL_LONG_MAX
#define UINTPTR_MAX _MSL_ULONG_MAX

#if _MSL_LONGLONG
    #define INTMAX_MIN _MSL_LLONG_MIN
    #define INTMAX_MAX _MSL_LLONG_MAX
    #define UINTMAX_MAX _MSL_ULLONG_MAX
#endif

#define PTRDIFF_MIN _MSL_LONG_MIN
#define PTRDIFF_MAX _MSL_LONG_MAX
#define SIG_ATOMIC_MIN _MSL_INT_MIN
#define SIG_ATOMIC_MAX _MSL_INT_MAX

#define SIZE_MAX _MSL_ULONG_MAX

#if defined(__STDC_WANT_SECURE_LIB__) && __STDC_WANT_SECURE_LIB__
    #ifndef _MSL_RSIZE_MAX
        #define _MSL_RSIZE_MAX (SIZE_MAX >> 1)
    #endif

    #define RSIZE_MAX _MSL_RSIZE_MAX
#endif

#if _MSL_WIDE_CHAR
    #include <wchar_t.h>
    #define WINT_MIN WCHAR_MIN
    #define WINT_MAX WCHAR_MAX
#endif

#endif
#endif

#if (!defined(__cplusplus)) || defined(__STDC_CONSTANT_MACROS)
#ifndef INT8_C

#define INT8_C(value) value
#define INT16_C(value) value
#define INT32_C(value) value ## L
#define INT64_C(value) value ## LL
#define UINT8_C(value) value ## U
#define UINT16_C(value) value ## U
#define UINT32_C(value) value ## UL
#define UINT64_C(value) value ## ULL

#if _MSL_LONGLONG
    #define INTMAX_C(value) value ## LL
    #define UINTMAX_C(value) value ## ULL
#endif

#endif
#endif
#endif
